{"id":15010385,"url":"https://github.com/somecho/depo","last_synced_at":"2025-04-09T22:41:19.135Z","repository":{"id":178013286,"uuid":"660561611","full_name":"somecho/depo","owner":"somecho","description":"Easily manage dependencies for Clojure projects","archived":false,"fork":false,"pushed_at":"2023-08-07T11:03:11.000Z","size":95,"stargazers_count":4,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-24T00:38:17.704Z","etag":null,"topics":["babashka","cli","cli-tool","clj","clojure","deps-edn","leiningen","shadow-cljs"],"latest_commit_sha":null,"homepage":"https://cljdoc.org/d/org.clojars.some/depo","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/somecho.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-30T09:33:50.000Z","updated_at":"2023-08-08T10:36:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"70d52c6a-874c-40ee-ac24-ef97a5baaf1e","html_url":"https://github.com/somecho/depo","commit_stats":null,"previous_names":["somecho/depo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fdepo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fdepo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fdepo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/somecho%2Fdepo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/somecho","download_url":"https://codeload.github.com/somecho/depo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248124848,"owners_count":21051757,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["babashka","cli","cli-tool","clj","clojure","deps-edn","leiningen","shadow-cljs"],"created_at":"2024-09-24T19:33:55.903Z","updated_at":"2025-04-09T22:41:19.126Z","avatar_url":"https://github.com/somecho.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Depo\n[![cljdoc badge](https://cljdoc.org/badge/org.clojars.some/depo)](https://cljdoc.org/d/org.clojars.some/depo)\n[![Clojars Project](https://img.shields.io/clojars/v/org.clojars.some/depo.svg)](https://clojars.org/org.clojars.some/depo)\n![](https://github.com/somecho/depo/actions/workflows/deploy.yml/badge.svg)\n![](https://github.com/somecho/depo/actions/workflows/tests.yml/badge.svg)\n\nA simple CLI tool to easily managage dependencies for Clojure projects. Supports `deps.edn`, [Leiningen](https://codeberg.org/leiningen/leiningen), [Shadow-cljs](https://github.com/thheller/shadow-cljs) and [Babashka](https://github.com/babashka/babashka) project configurations. It uses [rewrite-clj](https://github.com/clj-commons/rewrite-clj) and [zprint](https://github.com/kkinnear/zprint) under the hood to rewrite your  configuration files.\n\n## Why\nThe simplest way to add a dependency to a Clojure project is to first find the artifact coordinates. Then, depending on whether you use Leiningen or you need the Maven artifact coordinates, you look for that and add it to your configuration. There are a few tools to help ease this flow. \n\nFor one, there is `clj -X:deps find-versions`, which downloads a bunch of jars on first start up and returns a bunch of versions. Some other tools include [depot](https://github.com/Olical/depot) (the similar naming is coincidental), [ancient-clj](https://github.com/xsc/ancient-clj) and [neil](https://github.com/babashka/neil), which also has other features, like adding common aliases. \n\nWhile all of these tools have their own merits, they have their own drawbacks too, such as being slow to start up (all JVM based CLIs, including Depo for now), or only supporting `edn` configuration files, or not having a CLI at all. \n\nDepo aims to cover these bases.\n\n#### NOTE\nDepo is still a work in progress. See the [roadmap](https://github.com/somecho/depo/issues/1)\n\n## Usage\n### Depo CLI \nTo try Depo out, you can use this one liner:\n```bash\nclojure -Sdeps '{:deps {org.clojars.some/depo {:mvn/version \"RELEASE\"}}}' -M -m depo.core --help\n```\nAlternatively, you can add the following to your aliases:\n```edn\n{:depo {:extra-deps {org.clojars.some/depo {:mvn/version \"RELEASE\"}}\n        :main-opts [ \"-m\" \"depo.core\"]}\n```\nNow you can run `clojure -M:depo --help`.\n### Depo Library\nYou can also use Depo as a library.\n\n##### Example \n```clj\n(ns example\n  (:require [depo.resolver :as r]))\n\n(r/get-release-version \"reagent\") ;=\u003e \"1.2.0\"\n(r/conform-version \"org.clojure/clojure\") ;=\u003e {:groupID \"org.clojure\", :artifactID \"clojure\", :version \"1.5.0-alpha3\"}\n(r/version-exists? \"org.clojure/clojure\" \"0.20.7\") ;=\u003e false\n```\nFor more information, see the [API documentation](https://cljdoc.org/d/org.clojars.some/depo/0.0.12).\n\n## Installation\nDepo can be built and installed as a native image:\n1. Install [GraalVM](https://github.com/graalvm/graalvm-ce-builds/releases/)\n2. Clone this repo\n3. Run `clj -T:build native-image` or, if you have babashka installed, `bb native-image`\n4. The binary is now in `target/`. Copy it to somewhere on your path.\n   \n## Features / Commands\nTo see a list of commands, run `depo --help`. \n\nDepo first looks for a config file in your current working directory in the following order:\n1. `deps.edn`\n2. `project.clj`\n3. `shadow-cljs.edn`\n4. `bb.edn`\n\nIt then uses first config file that it finds for its operations.\n\n### Global Flags\nThere are flags that you can set if you'd like to override the default behavior of the commands.\n\n- `--file/-f` - Use a different config file instead of the default file Depo finds.\n\n### Add\n#### Usage\n```bash\n# simple usage\ndepo add org.clojure/clojure\n\n# If the groupID and artifactID are the same, you can ommit the groupID\ndepo add reagent\n\n# Use specific version\ndepo add reagent@1.11.0\n\n# Use a different config file instead of default\ndepo -f bb.edn add metosin/malli\n```\n### Remove\n#### Usage\n```bash\ndepo remove clj-http\n```\n\n### Update\n#### Usage\n```bash\n# Updates a specific dependency\ndepo update metosin/malli\n\n# Updates all dependencies\ndepo update\n```\n\n---\n\n© 2023 Somē Cho\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomecho%2Fdepo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsomecho%2Fdepo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsomecho%2Fdepo/lists"}