ninjudd / cake

A tasty build tool for Clojure.

Home Page:clojure-cake.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Command line arguments not being passed to script

lynaghk opened this issue · comments

Putting

(println *command-line-args*)

in a file and running it with

cake run <filename> "my argument"

prints nil. Am I missing something?

Well, it is official cake policy to make breaking changes and then not update the docs. That variable was changed to just args recently. I'll talk to ninjudd later about some changes to the docs.

  • David

The variable *args* is not defined, and I get a stacktrace. I'm using cake 0.6.0 via the rubygem.

Hm, you got me. I had this same problem last weekend and ninjudd said he'd changed it to args, but I get the same as you.

  • David

Duh. You want cake/args, not just args.

  • David

Just kidding! Pretty sure this still doesn't work. Even better, cake is still defining command-line-args in eval.clj and useful.clj, but not in the shared bindings in project.clj. I don't actually know what all that means, so I'm gonna have to talk to ninjudd about what exactly he is intending to do here with respect to this issue.

  • David

It looks like I can get to the command line arguments like so;

(:run cake/*opts*)

but it's not as nice to say as *command-line-args* =)

Ah, well, if you want the parsed options, you want to be using opts. What used to be command-line-args and should someday hopefully be args is the unparsed version of the command line, which can be useful sometimes.

  • David

this works for me on cake 0.6.1:

fallout:~ master$ cake run foo.clj "foo bar"
(foo bar)

*args* is the raw args passed to cake. *command-line-args* is bound for convenience to be all *args* after the name of the script. this change was made at the request of Raynes, and i think it makes sense.

i'm closing this. please reopen if this still doesn't work as i've described after updating to the latest cake version.

also, let me know the exact name and path of your script and the exact command being used to invoke it.

thanks

ninjudd, if I do 'cake repl -a 1 -b 2', what should args be? Because for me, it is nil.

\- David

args are not passed to the project jvm by bake. they are mostly for use in cake tasks, but you can pass them manually using bake bindings

Upgrading to 0.6.1 fixed the issue. Thanks guys!