Dereference vector aliases in task-args.

This commit is contained in:
Phil Hagelberg 2014-03-07 10:09:12 -08:00
parent e4e65177f6
commit 3ff470363b
2 changed files with 13 additions and 12 deletions

View file

@ -46,16 +46,18 @@
[task-name]
(utils/require-resolve (str "leiningen." task-name) task-name))
(defn task-args [args project]
(let [task-name (first args)
task (lookup-alias task-name project)
task-obj (if (string? task)
(lookup-task-var task)
task)]
(if (and (= "help" (aliases (second args)))
(not (:pass-through-help (meta task-obj))))
(defn- lookup-aliased-task-var [task-name project]
(let [de-aliased (lookup-alias task-name project)]
(if (vector? de-aliased)
(lookup-aliased-task-var (first de-aliased) project)
(lookup-task-var de-aliased))))
(defn task-args [[task-name & args] project]
(let [task-var (lookup-aliased-task-var task-name project)]
(if (and (= ["help"] (update-in (vec args) [0] aliases))
(not (:pass-through-help (meta task-var))))
["help" [task-name]]
[task (rest args)])))
[(name (:name (meta task-var))) (vec args)])))
(defn option-arg [str]
(and str (cond (.startsWith str "--") (keyword str)

View file

@ -10,7 +10,6 @@
alias-2 "uncle"
project {:aliases {alias-1 alias
alias-2 task-name}}]
(testing "with :pass-through-help meta"
(testing "on a var"
(are [res arg] (= res (task-args arg project))
@ -24,9 +23,9 @@
["help" [alias-1]] ["help" alias-1]
["help" [alias-2]] ["help" alias-2]
[task-name ["-h"]] [alias-2 "-h"]
[[task-name] ["-?"]] [alias-1 "-?"]
[task-name ["-?"]] [alias-1 "-?"]
[task-name ["--help"]] [alias-2 "--help"]
[[task-name] []] [alias-1]
[task-name []] [alias-1]
[task-name []] [alias-2])))))
(deftest test-matching-arity