{"id":15642750,"url":"https://github.com/borkdude/glam","last_synced_at":"2025-04-30T10:05:44.208Z","repository":{"id":142283285,"uuid":"298997735","full_name":"borkdude/glam","owner":"borkdude","description":"A cross-platform package manager.","archived":false,"fork":false,"pushed_at":"2020-10-25T12:40:37.000Z","size":119,"stargazers_count":63,"open_issues_count":8,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-25T06:43:24.106Z","etag":null,"topics":["clojure","package-manager"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"epl-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/borkdude.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},"funding":{"github":"borkdude"}},"created_at":"2020-09-27T09:31:32.000Z","updated_at":"2024-05-31T07:51:27.000Z","dependencies_parsed_at":"2024-02-10T22:36:19.698Z","dependency_job_id":null,"html_url":"https://github.com/borkdude/glam","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borkdude%2Fglam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borkdude%2Fglam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borkdude%2Fglam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/borkdude%2Fglam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/borkdude","download_url":"https://codeload.github.com/borkdude/glam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242635331,"owners_count":20161437,"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":["clojure","package-manager"],"created_at":"2024-10-03T11:57:24.497Z","updated_at":"2025-03-09T02:30:37.725Z","avatar_url":"https://github.com/borkdude.png","language":"Clojure","funding_links":["https://github.com/sponsors/borkdude"],"categories":[],"sub_categories":[],"readme":"# Glam\n\nA cross-platform package manager.\n\nWork in progress, still in flux, not ready for production, breaking changes will happen.\n\n## Goals\n\n- Easy CI install of glam itself and the packages that it supports\n- Cross platform: support for linux, macOS and Windows (without relying on PowerShell)\n- Bring binaries into scope globally or just for one shell or directory\n- Configuration using [EDN](https://github.com/edn-format/edn)\n\n## Install\n\nCurrently, glam relies on `git` (for downloading package repos) and `tar`\n(optional, for untarring `.tgz` archives).\n\nNavigate to the latest build on\n[CircleCI](https://app.circleci.com/pipelines/github/borkdude/glam) and download\na binary for linux or macOS. Binaries for Windows are coming soon. Unzip the\nbinary, place it on your path and run:\n\n``` clojure\n$ glam-bin setup\n```\n\nThis installs a shell helper script and pulls the latest glam [packages](https://github.com/glam-pm/packages).\n\nTo finish setup, add this to your `.bashrc` analog:\n\n``` shell\nsource $HOME/.glam/scripts/glam.sh\n```\n\nTo immediately start using glam, also execute the above in your shell.\n\nAfter setting up, you will find a `glam.edn` in `$HOME/.config/glam` with the following contents:\n\n``` clojure\n{:glam/repos\n [{:repo/name glam/core\n   :git/url \"https://github.com/glam-pm/packages\"}]\n :glam/deps {}}\n```\n\nSample installation in a fresh Ubuntu docker image:\n\n``` shell\n$ docker run -it --rm ubuntu /bin/bash\n\n# installing glam itself\n$ apt-get update \u0026\u0026 apt-get install curl git unzip -y\n$ curl -sLO https://30-298997735-gh.circle-artifacts.com/0/release/glam-0.0.1-SNAPSHOT-linux-amd64.zip\n$ unzip glam-0.0.1-SNAPSHOT-linux-amd64.zip -d /usr/local/bin\n$ glam-bin setup\n$ source $HOME/.glam/scripts/glam.sh\n\n# installing clj-kondo and babashka:\n$ glam install clj-kondo/clj-kondo org.babashka/babashka\n$ clj-kondo --version\nclj-kondo v2020.09.09\n$ bb --version\nbabashka v0.2.2\n```\n\n## Packages\n\nPackage files like `\u003cpackage-org\u003e/\u003cpackage-name\u003e.glam.edn` are listed in package\nrepos specified in the global `glam.edn` config file under\n`:glam/repos`. Packages are cloned/pulled to `$HOME/.glam/packages`. The main\npackage repo lives in `$HOME/.glam/packages/glam/core`. You can add your own\nrepos in the config file and also change precedence by changing the order.\n\nTo update package repos, run:\n\n``` clojure\n$ glam pull\n```\n\n## Usage\n\n## Current shell\n\nTo install packages for the current shell:\n\n``` clojure\n$ glam install clj-kondo/clj-kondo org.babashka/babashka\n```\n\nNow `clj-kondo` and `bb` are available:\n\n``` clojure\n$ which bb\n/Users/borkdude/.glam/repository/org.babashka/babashka/0.2.2/bb\n$ which clj-kondo\n/Users/borkdude/.glam/repository/clj-kondo/clj-kondo/2020.09.09/clj-kondo\n$ bb '(+ 1 2 3)'\n6\n```\n\nUse `--verbose` for more output, `--force` for re-downloading packages.\n\nTo install a specific versions:\n\n``` clojure\n$ glam install clj-kondo/clj-kondo@2020.09.09 org.babashka/babashka@0.2.2\n```\n\n### Project\n\nTo save installation settings for a project directory, create a `glam.edn` with the following contents:\n\n``` clojure\n{:glam/deps {org.babashka/babashka {:dep/version \"0.2.2\"}}}\n```\n\nTo use the latest version, use `{org.babashka/babashka {:dep/version :latest}}`.\n\nThen run `glam install` and the deps should be added to the path.\n\n### Global\n\nTo install packages globally, add to `:glam/deps` in `$HOME/.config/glam/glam.edn`:\n\n``` clojure\n{org.babashka/babashka {:dep/version \"0.2.2}}\n```\n\nRun `glam install` and the global package should be added to the path.\n\n## Dev\n\nTo develop glam using Clojure, you can invoke it using `clojure -M:glam` when\nadding this to `deps.edn`:\n\n``` clojure\n:glam {:extra-deps\n       {borkdude/glam {:local/root \"/your/dev/glam\"}}\n        :main-opts [\"-m\" \"glam.main\"]}\n```\n\nYou can re-install shell scripts using `clojure -M:glam setup --force`.\n\nYou can override calling the binary in the shell script with `GLAM_CMD`, for example:\n\n``` clojure\n$ GLAM_CMD=\"clojure -M:glam\" glam install\n```\n\n## License\n\nCopyright © 2020 Michiel Borkent\n\nDistributed under the EPL License. See LICENSE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fborkdude%2Fglam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fborkdude%2Fglam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fborkdude%2Fglam/lists"}