A little tool that started out as a way to explore the dependencies between projects deployed to Clojars, but is now a more generally useful tool for analysing the POMs of projects deployed to Clojars.
For now the code isn't deployed anywhere, so best to clone this repo, then take a look at the source.
If you've installed the Clojure CLI tools you can run the sample script and be dropped in a REPL via:
$ clojure -i repl-init.clj -r
Note: the repl-init.clj
script uses the spinner library, which isn't compatible with the clj
command line script.
The first time this script is run it will pull down all POMs from clojars.org and cache them locally, which can take an hour or more depending on your network connection. As of mid 2023, this is ~265,000 POM files (and the same number of metadata files for caching purposes) totalling ~2.4GB. On subsequent runs it will be a lot faster (especially if prevent-sync
is set to true
!), as it uses etag requests to Clojars to only pull what's new or modified.
Please limit how often you re-sync poms from Clojars! They provide a wonderful service to the Clojure community for free, but someone is paying for their bandwidth and those folks deserve our respect!
Look at repl-init.clj
for more details on what the script sets up and how you can experiment with this data.
Copyright © 2019 Peter Monks (pmonks@gmail.com)
Distributed under the Apache License, Version 2.0.
SPDX-License-Identifier: Apache-2.0