Skip to content

LuisAlejandro/spices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

161 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Spices is a universal dependency resolver: declare packages once in .spices.yml and install them with the matching native or language package manager on the host.
PyPI Package Github Releases Github Issues Push Coverage Contributor License Agreement Read The Docs Discord Channel


Current version: 0.0.3

Spices reads a validated .spices.yml``_ file and installs the declared dependencies using the package manager that matches the host Linux distribution (apt, yum/dnf, apk, pacman, portage) or a language manager (pip, npm, yarn, bundler). You can also declare third-party repositories, GPG keys, post-install scripts, and a free-form ``custom manager.

For more information, please read the full documentation.

Features

  • One config file — declare OS and language deps in .spices.yml.
  • Distro-aware — detects debian, alpine, arch, centos, fedora, and gentoo.
  • Language managers — pip, npm, yarn, and bundler alongside native apt/yum/apk/pacman/portage.
  • Repos and keys — optional third-party repos and GPG keys per manager.
  • Custom scripts — run arbitrary install steps via the custom manager.
  • Schema validation — Yamale schema under spices/config/schema.yml.

Getting started

Local development

Clone the repository and use the Docker-backed Makefile targets:

$ git clone https://github.com/LuisAlejandro/spices.git
$ cd spices
$ make image
$ make console

Run quality checks inside the container (run pip install -e . first if the dev image was rebuilt):

$ make format
$ make lint
$ make test
$ make test-all

Host-only Python (no Docker)

When Docker is unavailable, create a local virtualenv (dev deps + editable install) and run tox directly:

$ make virtualenv
$ ./virtualenv/bin/tox -e format
$ ./virtualenv/bin/tox -e lint
$ ./virtualenv/bin/tox -e coverage

Lint uses Ruff, pydocstyle, bandit, and Pyright from pyproject.toml.

Installation

The spices program is written in python and hosted on PyPI. Therefore, you can use pip to install the stable version:

$ pip install --upgrade spices

If you want to install the development version (not recommended), you can install directly from GitHub like this:

$ pip install --upgrade https://github.com/LuisAlejandro/spices/archive/master.tar.gz

Usage

Create a .spices.yml in your project, then:

$ spices install
$ spices install -c path/to/.spices.yml

See .spices.yml in this repo and example_with_repos.yml for examples. Legacy command docs in USAGE.rst may be outdated relative to the current CLI.

Getting help

If you have any doubts or problems, subscribe to our Discord server and ask for help. You can also ask your question on StackOverflow (tag it spices) or drop me an email at luis@collagelabs.org.

Contributing

See CONTRIBUTING for details.

Release history

See HISTORY for details.

License

Copyright 2016-2022, Spices Developers (read AUTHORS for a full list of copyright holders).

Released under a GPL-3 License.

Made with 💖 and 🍔


Web luisalejandro.org · GitHub @LuisAlejandro · Twitter @LuisAlejandro

About

[WIP] A universal dependency resolver: one installer to rule them all.

Resources

License

Contributing

Stars

3 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors