task integration

This commit is contained in:
Michiel Borkent 2022-07-29 12:51:43 +02:00
parent 1b3adaaf64
commit 8d24f70d73
2 changed files with 30 additions and 12 deletions

View file

@ -16,5 +16,8 @@
(def var-meta (meta (resolve '%1$s/%2$s))) (def var-meta (meta (resolve '%1$s/%2$s)))
(def cli-opts (babashka.cli/merge-opts (:org.babashka/cli ns-meta) (:org.babashka/cli var-meta))) (def cli-opts (babashka.cli/merge-opts (:org.babashka/cli ns-meta) (:org.babashka/cli var-meta)))
(def opts (babashka.cli/parse-opts *command-line-args* cli-opts)) (def opts (babashka.cli/parse-opts *command-line-args* cli-opts))
(def task-exec-args (:exec-args (babashka.tasks/current-task)))
(def cli-exec-args (:exec-args cli-opts))
(def opts (babashka.cli/merge-opts cli-exec-args task-exec-args opts))
(%1$s/%2$s opts)" (%1$s/%2$s opts)"
ns var-name)) ns var-name))

View file

@ -1,16 +1,19 @@
(ns babashka.impl.tasks (ns babashka.impl.tasks
(:require [babashka.deps :as deps] (:require
[babashka.impl.common :refer [ctx bb-edn debug]] [babashka.deps :as deps]
[babashka.impl.process :as pp] [babashka.impl.cli :as cli]
[babashka.process :as p] [babashka.impl.common :refer [bb-edn ctx debug]]
[clojure.core.async :refer [<!!]] [babashka.impl.process :as pp]
[clojure.java.io :as io] [babashka.process :as p]
[clojure.string :as str] [clojure.core.async :refer [<!!]]
[rewrite-clj.node :as node] [clojure.java.io :as io]
[rewrite-clj.parser :as parser] [clojure.string :as str]
[rewrite-clj.zip :as zip] [rewrite-clj.node :as node]
[sci.core :as sci]) [rewrite-clj.parser :as parser]
(:import [clojure.core.async.impl.channels ManyToManyChannel])) [rewrite-clj.zip :as zip]
[sci.core :as sci])
(:import
[clojure.core.async.impl.channels ManyToManyChannel]))
(defn -chan? [x] (defn -chan? [x]
(instance? ManyToManyChannel x)) (instance? ManyToManyChannel x))
@ -264,6 +267,9 @@
(when-not (resolve 'run) (when-not (resolve 'run)
(intern *ns* 'run babashka.tasks/run)) (intern *ns* 'run babashka.tasks/run))
(when-not (resolve 'exec)
(intern *ns* (with-meta 'exec {:macro true}) @(var babashka.tasks/exec)))
%s %s
%s %s
@ -451,6 +457,14 @@
(let [[[expr]] (assemble-task task parallel)] (let [[[expr]] (assemble-task task parallel)]
(sci/eval-string* @ctx expr)))) (sci/eval-string* @ctx expr))))
(defn ^:macro exec
([_ _ fq-sym]
(let [ns (namespace fq-sym)
var-name (name fq-sym)
snippet (cli/exec-fn-snippet ns var-name)]
(prn snippet)
`(load-string ~snippet))))
(def tasks-namespace (def tasks-namespace
{'shell (sci/copy-var shell sci-ns) {'shell (sci/copy-var shell sci-ns)
'clojure (sci/copy-var clojure sci-ns) 'clojure (sci/copy-var clojure sci-ns)
@ -461,4 +475,5 @@
'current-task current-task 'current-task current-task
'current-state state 'current-state state
'run (sci/copy-var run sci-ns) 'run (sci/copy-var run sci-ns)
'exec (sci/copy-var exec sci-ns)
#_#_'log log}) #_#_'log log})