Git Product home page Git Product logo

cl-pinner's Introduction

cl-pinner - Pinnable Common Lisp packages from any version control system endpoint

Have you ever wanted to run multiple versions of the same packages? Well, now you can!

Disclaimer

NOTE: This is still alpha quality and in the prototypal stages.

Please DO NOT use for any type of production system!

Usage

Loading an external system pinned to a specific version

To pull in the Ahungry Fleece package (a dependency of this project that isn't on Quicklisp until next month), you can run in your REPL (after cloning and loading this project):

(cl-pinner.lib.fetch:fetch-and-load
  "git" "ahungry-fleece"
  "https://github.com/ahungry/ahungry-fleece" "master")

This will load it up with the master branch checked out, and the package will then be loaded up automatically as:

(ql:quickoad :vmaster.ahungry-fleece)

You can then try out an earlier version of the same repository, by doing:

(cl-pinner.lib.fetch:fetch-and-load
  "git" "ahungry-fleece"
  "https://github.com/ahungry/ahungry-fleece" "0.3.1")

This will load it up with the 0.3.1 tag checked out, and the package will then be loaded up automatically as:

(ql:quickoad :v0.3.1.ahungry-fleece)

with sub-dependencies identified as v0.3.1.af.lib.io etc.

and yes, you CAN run both at the same time in the same Common Lisp REPL/image without any conflicts! (just make sure you import-from or use-package the version as needed, or make the fully qualified function calls).

Running the tests (todo)

Tests for this repo are to come soon.

CLI

Build with cat build.sh | sh in the project root.

Then you can use a simple make test in the future to test changes.

REPL

To run tests in the REPL: (ql:quickload :cl-pinner) (cl-pinner.run.tests:main)

TODO

  • Need to support fetchers other than git (and VC systems such as mercurial/svn).
  • Need to add the unit tests
  • Need to add CLI / roswell style commands
  • Need to add YAML style configuration loading/parsing

Upcoming YAML configuration systems

You can see a sample of the planned out yaml configuration loader that this system will work with here (or in the repo pinned.yml file):

# Define some dependencies
system:
  # A great utility library
  ahungry-fleece:
    type: git
    uri: https://github.com/ahungry/ahungry-fleece.git
    version: 0.3.1

This will allow the user an easy location to specify the exact versions of each library they want the system to fetch and load, without having to modify their own project's ASDF file all the time.

License

GPLv3

cl-pinner's People

Contributors

ahungry avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.