@ingy is there a way to pass arguments to bb this way? Like when I just want to execute something with babashka instead of dropping into a repl:
; bb -e '(println "hello")'
hello
@imre If I understand what you want correctly, I can add support for these two forms:
$ make -f <(curl -sL ) bb e='(println "Hello")'
Hello
$ $(make -f <(curl -sL ) bb p=1) '(println "Hello")'
Hello
$
where:
$ make -f <(curl -sL ) bb p=1
/tmp/clojure-cc-repl/local/bin/bb
$
What's your use case?why not pass all the remaining arguments to the bb etc?
That's not how make works. But that is the idea for:
$(make -f <(curl -sL ) bb p=1) <args>
why use make for this?
> The Makefile is hosted at . It uses https://github.com/makeplus/makes to auto-install both the dialect and its host language (Java, Go, Python, PHP, etc.) into a local cache directory. Your system stays clean.
I could change the default invocation to:
$(make -f <(curl -sL ) bb) # starts repl
$(make -f <(curl -sL ) bb) '(println "Hello")'
that would be cleaner.Guardrails 1.3.3 https://github.com/fulcrologic/guardrails • support for silent start with system properly
Fulcro TUI 1.0.2 https://github.com/fulcrologic/fulcro-tui • Simple hooks support for dealing with string-based controls that write alternative types (e..g int/double/date)
fwiw, Gloat is one of many projects I have that has a ton of deps, including babashka. See: https://github.com/gloathub/gloat/blob/main/Makefile#L9 But the project only needs make, git, curl and bash. Everything else gets install just in time. YAMLScript also uses this. I don't have Java or Clojure or GraalVM installed on my system ever. So this auto-repl system was made possible from a small Makefile.
Also running make shell in any of these projects puts you into a shell where all the *.mk deps are available at the command line.
Projects in any language can easily dep on bb or 100 other langs/tools. All the *.mk files install from binaries so very fast. Now I use bb as a project dep in any language without thinking twice.
Fulcro RAD TUI 1.0.0-RC2 https://github.com/fulcrologic/fulcro-rad-tui • Full UI plugin for Fulcro RAD (statechart variant) • Includes full-stack demo (invoice/account/inventory, Datomic, Pathom) using standard fulcro-rad-datomic and fulcro-rad-statecharts
Thanks for the replies, I was offline for a bit
my usecase is providing a oneliner to run a small script with a specific version of babashka actually
I was trying stuff like
make -f (curl -sL clojure.cc/repl.mk | psub) bb BABASHKA-VERSION=1.12.218 -- -e '(with-redefs [org.httpkit.client/get (fn [] :foo)] (org.httpkit.client/get))'
ah can do. I'm reworking things right now.
so like everything after a -- would be passed to the underlying executable
that would pretty much give all the power of bb and the other executables to be used through http://clojure.cc
not only a repl
yep. give me a few minutes
@imre that took more than a few but have a look at https://clojure.cc/cli/ and see if it covers your needs. I redesigned the whole thing so that:
make -f <(curl -sL clojure.cc/cmd.mk) # installs a dialect
$(make -f <(curl -sL clojure.cc/cmd.mk) ) [...] # runs the dialect (for repl or anything else the dialect does)
make -f <(curl -sL clojure.cc/cmd.mk) -VERSION=x.y.z # installs a dialect version
Try it out and let me know what you think and/or what issues you hit.PS. I don't know if changing versions will always replace an existing version. Some *.mk files support multiple versions installed and runnable at once, and some do not, iirc. You may need to clear the install cache with:
make -f <(curl -sL ) reset
This is a fixable issue though. (probably not today 😄)Another thing is that I had to squelch the install message output. Some dialects install super quick, some take 10 seconds. Also fixable, but not today.
Thanks, trying
; (make -f (curl -sL | psub) bb)
fish: command substitutions not allowed in command position. Try var=(your-cmd) $var ...
😕 I need to figure this outah
; dialect=(make -f (curl -sL | psub) bb) $dialect '(println "hello")'
hello
@ingy you might want to update the fish note at https://clojure.cc/cli/
reset does seem to be needed
; cli=(make -f (curl -sL | psub) bb BABASHKA-VERSION=1.12.218) $cli --version
babashka v1.12.215
I'll fix just for bb then
Not urgent at all, if you'd prefer to fix it across the board another day
; make -f (curl -sL | psub) reset; cli=(make -f (curl -sL | psub) bb BABASHKA-VERSION=1.12.214) $cli --version
rm -f -r /var/folders/02/fls9zw0x3ps5f6mnrmhyb82h09tg57/T//clojure-cc-cmd
babashka v1.12.214
invited you to #C0B655S3R19 btw
I'm not sure about the first one, but the second is what I'm having success with
@imre https://clojure.cc/cli/ updated for fish and all dialects now install to versioned prefixes. (should do away with reset) Let me know if it works for you.