评论由:mfikes 完成
附加的补丁可以正常工作,但有些东西我喜欢,有些东西我不喜欢。
它声明性地将规范添加到命令中,并增强运行时以验证这些规范,这是很好的。
但是,尽管这感觉像是“输入验证”,另一个论点是如果编译器将要使用规范,像优化等级这样的某些规范可以更深入地集成到系统中(这将也会捕获编译器选项 edn 的误配置)。
无论如何,尽管我对这个补丁并不完全满意,但还是附加在这里,希望能激发更好的方法。
以下是您将看到补丁后的示例。
`
$ clj -m cljs.main -O adv -c chambered.core
线程 "main" 中的 clojure.lang.ExceptionInfo:无效级别:val: "adv" 违反规范::cljs.cli/optmizations 断言:#{"none" "advanced" "whitespace" "simple"}
{}
at clojure.core$ex_info.invokeStatic(core.clj:4739)
at clojure.core$ex_info.invoke(core.clj:4739)
at cljs.cli$add_commands$maybe_wrap_fn__8772$fn__8774.invoke(cli.clj:424)
at cljs.cli$initialize$fn__8714.invoke(cli.clj:235)
at clojure.lang.PersistentVector.reduce(PersistentVector.java:341)
at clojure.core$reduce.invokeStatic(core.clj:6747)
at clojure.core$reduce.invoke(core.clj:6730)
at cljs.cli$initialize.invokeStatic(cli.clj:233)
at cljs.cli$initialize.invoke(cli.clj:230)
at cljs.cli$main.invokeStatic(cli.clj:543)
at cljs.cli$main.doInvoke(cli.clj:531)
at clojure.lang.RestFn.applyTo(RestFn.java:139)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$apply.invoke(core.clj:652)
at cljs.main$_main.invokeStatic(main.clj:60)
at cljs.main$_main.doInvoke(main.clj:52)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.core$apply.invokeStatic(core.clj:657)
at clojure.main$main_opt.invokeStatic(main.clj:317)
at clojure.main$main_opt.invoke(main.clj:313)
at clojure.main$main.invokeStatic(main.clj:424)
at clojure.main$main.doInvoke(main.clj:387)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.lang.Var.applyTo(Var.java:702)
at clojure.main.main(main.java:37)
`