Make exec a function instead
This commit is contained in:
parent
2a01f8720e
commit
0608c71687
3 changed files with 22 additions and 25 deletions
|
|
@ -8,18 +8,21 @@
|
|||
(def cli-namespace
|
||||
(sci/copy-ns babashka.cli cns))
|
||||
|
||||
(defn exec-fn-snippet [ns var-name]
|
||||
(defn exec-fn-snippet [sym]
|
||||
(format "
|
||||
(do
|
||||
(require '%1$s)
|
||||
(require '[babashka.cli])
|
||||
(let [
|
||||
ns-meta (meta (find-ns '%1$s))
|
||||
var-meta (meta (resolve '%1$s/%2$s))
|
||||
cli-opts (babashka.cli/merge-opts (:org.babashka/cli ns-meta) (:org.babashka/cli var-meta))
|
||||
opts (babashka.cli/parse-opts *command-line-args* cli-opts)
|
||||
task-exec-args (:exec-args (babashka.tasks/current-task))
|
||||
cli-exec-args (:exec-args cli-opts)
|
||||
opts (babashka.cli/merge-opts cli-exec-args task-exec-args opts)]
|
||||
(%1$s/%2$s opts)))"
|
||||
ns var-name))
|
||||
(let [var (requiring-resolve `%1$s)
|
||||
var-meta (meta var)
|
||||
ns (:ns (meta var))
|
||||
ns-meta (meta ns)
|
||||
ct (babashka.tasks/current-task)
|
||||
cli-opts (babashka.cli/merge-opts (:org.babashka/cli ns-meta)
|
||||
(:org.babashka/cli var-meta)
|
||||
(:org.babashka/cli ct))
|
||||
opts (babashka.cli/parse-opts *command-line-args* cli-opts)
|
||||
task-exec-args (:exec-args ct)
|
||||
cli-exec-args (:exec-args cli-opts)
|
||||
opts (babashka.cli/merge-opts cli-exec-args task-exec-args opts)]
|
||||
(var opts)))"
|
||||
sym))
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@
|
|||
(intern *ns* 'run babashka.tasks/run))
|
||||
|
||||
(when-not (resolve 'exec)
|
||||
(intern *ns* (with-meta 'exec {:macro true}) @(var babashka.tasks/exec)))
|
||||
(intern *ns* 'exec @(var babashka.tasks/exec)))
|
||||
|
||||
%s
|
||||
%s
|
||||
|
|
@ -457,14 +457,10 @@
|
|||
(let [[[expr]] (assemble-task task parallel)]
|
||||
(sci/eval-string* @ctx expr))))
|
||||
|
||||
(defn ^:macro exec
|
||||
"This is a macro so it works correctly with :init"
|
||||
([_ _ sym]
|
||||
(let [ns (namespace sym)
|
||||
ns (or ns (symbol (str @sci/ns)))
|
||||
var-name (name sym)
|
||||
snippet (cli/exec-fn-snippet ns var-name)]
|
||||
`(load-string ~snippet))))
|
||||
(defn exec
|
||||
([sym]
|
||||
(let [snippet (cli/exec-fn-snippet sym)]
|
||||
(sci/eval-string* @ctx snippet))))
|
||||
|
||||
(def tasks-namespace
|
||||
{'shell (sci/copy-var shell sci-ns)
|
||||
|
|
|
|||
|
|
@ -874,10 +874,8 @@ Use bb run --help to show this help output.
|
|||
[[(format "(ns user (:require [%1$s])) (apply %1$s/%2$s *command-line-args*)"
|
||||
ns var-name)] nil])
|
||||
exec-fn
|
||||
(let [sym (symbol exec-fn)
|
||||
ns (namespace sym)
|
||||
var-name (name sym)]
|
||||
[[(cli/exec-fn-snippet ns var-name)] nil])
|
||||
(let [sym (symbol exec-fn)]
|
||||
[[(cli/exec-fn-snippet sym)] nil])
|
||||
run (if (:run-help cli-opts)
|
||||
[(print-run-help) 0]
|
||||
(do
|
||||
|
|
|
|||
Loading…
Reference in a new issue