Skip to content

Multi-plateform deterministic and unobstrusive System Package Manager

License

Notifications You must be signed in to change notification settings

PunkyPenguins/packster

Repository files navigation

Packster

Multi-plateform deterministic and unobstrusive System Package Manager

Goal

This project aim to provide a System-level Package Manager that deal with dependencies in a healthy, deterministic way.

The idea is to use concepts from Language Package Managers ( like cargo ) to handle properly the diamond dependency problem : basically allow multiple versions to be deployed.

Setup

With rustup: https://www.rust-lang.org/tools/install

We stick to the stable distribution for now ( nightly conflicts with ntapi crate )

How To ...

Execute tests

cargo test

Execute linter

cargo clippy

Build a binary

cargo build --release

You'd find your binary in target\release ( packster-cli or packster-cli.exe depending on your building platform )

Get CLI help

General help:

cargo run -- --help

Scope specific help ( by exemple project scope ):

cargo run -- project --help

Command specific help ( by exemple pack command ):

cargo run -- project pack --help

Create a package

Create a packster.toml file in a directory ( let's say myproject ) containing files or directories you want to pack.

It shall contain something like :

identifier = "my-package"
version = "0.0.1"

Then create the package file with :

cargo run -- project pack myproject

You'd then see in your current working directory the package package file as my-package_0.0.1_b7112762ff233f95979dd390197187a66ac164a808628228ef41b43042dc582d.302e312e30.packster

Initialize a deployment location

Create an empty directory ( let's say mylocation )

Then initialize a location inside with :

cargo run -- location init mylocation

You'd then see a lockfile named packster.lock inside mylocation

Deploy a Package in a Location

cargo run -- package deploy my-package_0.0.1_b7112762ff233f95979dd390197187a66ac164a808628228ef41b43042dc582d.302e312e30.packster mylocation

Show packages in a location

cargo run -- location show mylocation

Undeploy a Package in a location

cargo run -- location undeploy b7112762ff233f95979dd390197187a66ac164a808628228ef41b43042dc582d mylocation

About

Multi-plateform deterministic and unobstrusive System Package Manager

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages