@borkdude it's a minor thing but doing deps -h
gives the version string twice here:
$ deps -h
Version: 1.10.1.697
Version: 1.10.1.697
...
ok, going to fix now
@sogaiu Fixed (and all remaining open issues as well). If there's nothing else, going to release
Released: https://github.com/borkdude/deps.clj/releases/tag/v0.0.10
I've updated the practicalli/clojure-deps-edn GitHub project and replaced all uses of -A
and -R
flags for using all aliases, substituting them for -M
without any issues... it actually makes things simpler 🙂
Details are in #announcements
Thank you Alex (and Sean)
Execution error (FileNotFoundException) at clojure.main/main (main.java:40).
Could not locate clojure/run/exec__init.class, clojure/run/exec.clj or clojure/run/exec.cljc on classpath.
Full report at:
/tmp/clojure-16205359177864566580.edn
Presumably this means I need to correct something in the void installer, what is that?@dominicm Is this the normal clojure CLI?
Ah, a new exec.jar :)
OK, made that part of the new void installer :)
what's a void installer?
@alexmiller Feedback on error message with the new exec:
borkdude@MBP2019 ~ $ clojure -X clojure.core/prn :foo 1
{:foo 1}
borkdude@MBP2019 ~ $ clojure -X clojure.core/prn :foo
No function found on command line or in :exec-fn
I think the latter could be improvednot sure I understand why that's failing
because there's no val to the key
I think
oh, that's probably it
it looks at whether the non-alias arg count is even or odd
there is some fiddly code there trying its best to guess what's wrong
can aliases be whitespace delimited?
no
then where is the ambiguity?
I don't think there is here, just saying that's the code at faultl
ah ok. want me to make a JIRA?
sure
there was a period of time where other variants were accepted, this might be a legacy of that, don't remember
Unrelated. If checking in binaries into git wasn't an anti-pattern, I think Clojure git deps could be used to implement an ecosystem of binaries more or less like brew, but using deps.edn. The classpath can then be used as the binary path, a bit similar to a nix env. I would have a purpose for this (babashka pods). The git deps stuff could be made to work with GraalVM as well I think, so everything could be very fast after deps have been downloaded (but even without GraalVM, it's already fast due to classpath caching).
Wonder what others think. Maybe instead of checking in the binaries themselves, there could be links to releases in the source, with checksums, etc. But most of the gnarly dependency stuff could be handled by tda.
Void Linux installer :)
Implementing something like brew this way would only require a couple of tens of lines of code maybe.
This could be a package manager for macOS, linux and Windows at the same time
Aha: https://github.com/aerys/gpm - unclear how it resolves deps
btw, real world example where this might be super confusing: I tried passing var as an argument (`#'inc`), but shells treat #
as a start of a comment, so...
Made an issue here for further discussion: https://github.com/babashka/babashka.pods/issues/19
i experimented with this once using git lfs.
the binaries in git thing and finding things under ~/.gitlibs that is
ah interesting. what did come out of it?
well for one thing i think i learned that not everyone has git lfs 🙂
though it looks like typical git installs on windows get it
other than that it seemed to work pretty well
in addition to the size aspect of the repository, trying to but binaries for multiple platforms in one repository didn't feel great because the end user then gets extra cruft.
Here I'm sketching out an idea: https://github.com/babashka/babashka.pods/issues/19 One option is to have a .edn file inside the git dep which refers to the download
yeah, i saw that page first 🙂 the .edn file inside idea seems preferable to the binaries in the repository idea
yeah. also the binaries could be pulled the first time you are trying to find them
this idea could even work for non-gitlibs as well
maybe there could be a nice coupling with github releases somehow
what would the ultimate location of the binaries be?
the resolve function will download the link and the put them inside .foobar/your/dependency/<sha>/the-binary
and then that binary file will be invoked
where .foobar is some name for this package manager layered on top of tda
ah ok, thanks for the explanation -- i see it at the issue 🙂
Yeah, I’ll fix