问题描述
我正在 Clojure 中编写一个名为 OneCLI 的 CLI 框架。这个框架的主要核心部分是一个名为 go!
的函数,它“为你”解析命令行、环境变量和配置文件,并根据这些输入中提供的内容运行几个不同的用户提供的函数之一。
通常,从用户调用 Clojure 程序的 go!
函数调用 -main
。例如,我在另一个名为 zic 的“uberjar”样式应用程序中使用我自己的库。函数 go!
调用 System/exit
作为其运行的一部分,向它传递来自用户提供函数结果的退出代码。这在“生产中”效果很好,但这也意味着我无法从 REPL 运行 zic.cli/-main
函数,因为每当我这样做时,它都会调用 System/exit
并且 REPL 退出。
在您询问之前,在树莓派上开发时从 REPL 运行它可以避免运行 lein uberjar
/1 分 30 秒运行 clj -X:depstar uberjar :jar ...
所需的昂贵的 45 秒。
我的问题是:是否有一些 var 或值可以作为 Clojure 标准库的一部分进行检查,以告诉我的 OneCLI 代码它是从 REPL 运行还是从 JAR 运行? >
这样的变量将使我能够在 OneCLI 中检测到我们正在从 REPL 运行,从而避免调用 System/exit
。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)