1

[org.clojure/tools.cli "0.1.0"]0.2.2に移行していますが、

Exception in thread "main" clojure.lang.ArityException: 
Wrong number of args (2) passed to: PersistentVector

で始まる行で(cli args

(defn parse-opts
  "Using the newer cli library, parses command line args."
  [args]
  (cli args
       ["--ifn1" ".csv input file" :default "benetrak_roster.csv"]
       ["--ifn2" ".csv input file" :default "billing_roster.csv"]
       ["--rpt" ".csv pipe delimited output file" :default "bene_gic_rpt.csv"]
       ["--dump1" "text file report for debug output" :default "dumpfile1.txt"]
       ["--dump2" "text file report for debug output" :default "dumpfile2.txt"]
       ["--debug" "Debug flag for logging." :default 0 :parse-fn #(Integer. %)]))

tools.cliは次のように含まれています(:use clojure.tools.cli)。

自分が間違っていることがわかりません。ポインタや助けをいただければ幸いです。ありがとう。

ちなみに、例を見て以下を試してみましたが、うまくいきません。

(defn -main 
  [& args]
  (let [[opts args banner]
        (cli args
        ["--ifn1" ".csv input file" :default "benetrak_roster.csv"]
        ["--ifn2" ".csv input file" :default "billing_roster.csv"]
        ["--rpt" ".csv pipe delimited output file" :default "bene_gic_rpt.csv"]
        ["--dump1" "text file report for debug output" :default "dumpfile1.txt"]
        ["--dump2" "text file report for debug output" :default "dumpfile2.txt"]
        ["--debug" "Debug flag for logging." :default 0 :parse-fn #(Integer. %)])
        start-time (str (Date.))]
        .
        .
        .
4

1 に答える 1

1

これはうまくいくようです:

(ns test.core
  (:use clojure.tools.cli))

(defn parse-opts
  "Using the newer cli library, parses command line args."
  [args]
  (cli args
       ["--ifn1" ".csv input file" :default "benetrak_roster.csv"]
       ["--ifn2" ".csv input file" :default "billing_roster.csv"]
       ["--rpt" ".csv pipe delimited output file" :default "bene_gic_rpt.csv"]
       ["--dump1" "text file report for debug output" :default "dumpfile1.txt"]
       ["--dump2" "text file report for debug output" :default "dumpfile2.txt"]
       ["--debug" "Debug flag for logging." :default 0 :parse-fn #(Integer. %)]))

test.core> (parse-opts [])
[{:debug 0, :dump2 "dumpfile2.txt", :dump1 "dumpfile1.txt", :rpt "bene_gic_rpt.csv", :ifn2 "billing_roster.csv", :ifn1 "benetrak_roster.csv"} [] "Usage:\n\n Switches  Default              Desc                              \n --------  -------              ----                              \n --ifn1    benetrak_roster.csv  .csv input file                   \n --ifn2    billing_roster.csv   .csv input file                   \n --rpt     bene_gic_rpt.csv     .csv pipe delimited output file   \n --dump1   dumpfile1.txt        text file report for debug output \n --dump2   dumpfile2.txt        text file report for debug output \n --debug   0                    Debug flag for logging.           \n"]
test.core> 

渡したものにエラーがないことを確認しますparse-optsか?

また、project.cljに適切なバージョンのtools.cli(および適切なバージョンのみ)があることを確認しますか?

于 2012-08-27T16:34:06.317 に答える