README.md (1880B)
1 # cl-micropm 2 3 A very minimalist "package manager" for Common Lisp in under 200 LOC. 4 5 6 ## How it works 7 8 1. Load `cl-micropm.lisp`. Since it's a single file, you don't need to have ASDF 9 load the system definition, but it's there if you need it. 10 11 2. Run `(micropm:setup <your-system-name>)`. It doesn't directly use quicklisp, 12 but this will fetch the quicklisp system sources and build the quicklisp 13 dependency index, and then fetch the system dependencies using these data. By 14 default, it will create git submodules in the `lisp-systems` folder. 15 16 3. Tweak the `lisp-systems` to your needs, whether you need to freeze a 17 dependency on a particular branch or commit, etc. 18 19 Once all your deps are setup in `lisp-systems`, you can just run the normal 20 flow with `(micropm:setup-asdf-registry)`. 21 22 You can also skip `(micropm:setup <your-system-name>)` and just manually add the 23 deps into `lisp-systems` if you want to do that, by reading the quicklisp 24 dependency index. 25 26 **Note**: The old version used an `.envrc` file and pulled the dependencies from 27 quicklisp in a Docker container. See the `old` branch if you want to use that 28 instead. 29 30 31 32 ## Goals 33 34 - It should be loadable as a single file. 35 - The code should be easily auditable and readable, and therefore small in size 36 (< 200 LOCs). 37 - It should be decentralized. No quicklisp or ultralisp, just git, http(s), etc. 38 - Dependendies should not be global, each project may have a local version that's different and may 39 want to pin that version. 40 - It should be easy to work on projects that use different versions of a package, maybe even at the 41 same time, without too much hassle. 42 - It should be easy to set up. 43 - It should be easy to understand what it's doing and how it works. 44 - It should be possible to just freeze the dependencies (separate fetching and loading commands). 45 46 47 48 ## License 49 50 See [LICENSE](./LICENSE)