From 7b5542f838a0efb19440c183e1140b644ed2ac17 Mon Sep 17 00:00:00 2001 From: Stuart Sierra Date: Fri, 18 May 2012 16:35:28 -0400 Subject: [PATCH] TCLI-1: Do not include keys when no :default specified --- src/main/clojure/clojure/tools/cli.clj | 8 ++++++-- src/test/clojure/clojure/tools/cli_test.clj | 9 ++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/clojure/clojure/tools/cli.clj b/src/main/clojure/clojure/tools/cli.clj index 56ac779..e02f58c 100644 --- a/src/main/clojure/clojure/tools/cli.clj +++ b/src/main/clojure/clojure/tools/cli.clj @@ -49,7 +49,11 @@ (defn- default-values-for [specs] - (into {} (for [s specs] [(s :name) (s :default)]))) + (reduce (fn [m s] + (if (contains? s :default) + (assoc m (:name s) (:default s)) + m)) + {} specs)) (defn- apply-specs [specs args] @@ -101,8 +105,8 @@ :aliases (set aliases) :name (keyword (last aliases)) :parse-fn identity - :default (if flag false nil) :flag flag} + (when flag {:default false}) options))) (defn cli diff --git a/src/test/clojure/clojure/tools/cli_test.clj b/src/test/clojure/clojure/tools/cli_test.clj index 79fba6f..5c787dd 100644 --- a/src/test/clojure/clojure/tools/cli_test.clj +++ b/src/test/clojure/clojure/tools/cli_test.clj @@ -34,7 +34,14 @@ (deftest should-override-when-supplied (is (= {:server "127.0.0.1"} (first (cli ["--server" "127.0.0.1"] - ["--server" :default "10.0.1.10"])))))) + ["--server" :default "10.0.1.10"]))))) + (deftest should-omit-key-when-no-default + (is (= false + (first + (contains? (cli ["--server" "127.0.0.1"] + ["--server" :default "10.0.1.10"] + ["--names"]) + :server)))))) (deftest should-apply-parse-fn (is (= {:names ["john" "jeff" "steve"]} -- 1.7.7.4