cl-micropm

A very minimalist, decentralized "package manager" for Common Lisp (<200 LOC)
Log | Files | Refs | Submodules | README | LICENSE

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)