Fork me on GitHub
Petrus Theron14:01:11

Does boot support the deps.edn :git/url style dependencies?


@petrus boot-tools-deps doesn't support Git yet -- I've been holding off doing additional work on it until tools.deps stabilizes a bit (I think the last round of refactoring in tools.deps may have broken boot-tools-deps anyway). I'm hoping to spend this weekend bringing boot-tools-deps back up to the latest version and seeing how to make the Git stuff work. It'll be quite a change, I expect.


Part of the issue is the tension between how Boot handles dependencies and how tools.deps handles them. For example, :scope doesn't work as expected for transitive dependencies so you can end up with unexpected libraries on your classpath if you're trying to build a project, rather than just run it (since clj and tools.deps is about running code, not building projects).

Petrus Theron17:01:15

Can I use Lein to fetch Git dependencies and then pass them as checkouts to boot?

Alex Miller (Clojure team)18:01:06

lein doesn’t have the ability to work with anything but Maven artifact-based deps afaik


Hey, what's a good way to run a command after "boot dev"?


I want to make it just run "(mount.core/start)" after


@kanwei Look at the call task -- it can run Clojure expressions


(you'll need to require the ns first, then call the start fn)


@seancorfield thanks! will look into that


@seancorfield tried to implement it like this, but didn't work.


(call :once true
                 :eval '((require 'mount.core) (mount.core/start))


@kanwei Because that's not a legal Clojure expression -- you're going to get the result of the (require ..) and then call it as a function passing (mount.core/start) as an argument.


add do at the beginning of that form and see if that works.

Alex Miller (Clojure team)23:01:57

I don’t think that will work either - isn’t that the Gilardi Scenario?


Hah! Yes, I'd forgotten. So @kanwei will need two :eval arguments...


(call :once true :eval "(require 'mount.core)" :eval "(mount.core/start)") I think?


(I know that works from the command line because I've specified multiple -e arguments with a require as the first one)