Skip to main content

One short CLI for pip/npm/node/python chores

Project description

Crystal Dependency Manager (crys)

One short command instead of remembering different pip/npm invocations.

Install

cd crystal-dependency-manager
pip install .

This registers a crys command on your PATH (via Python's normal console-scripts mechanism).

Why

crys doesn't reinvent pip/npm/apt/brew/choco — it just remembers the long command for you and runs it. A few examples of what's actually happening behind the scenes:

You type crys runs (depending on your OS/tools)
crys update pip python -m pip install --upgrade pip
crys update npm npm install -g npm@latest
crys update py sudo apt update && sudo apt install --only-upgrade python3 (or brew upgrade python, choco upgrade python, ...)
crys update node sudo apt install --only-upgrade nodejs (or brew upgrade node, choco upgrade nodejs, ...)
crys update rust rustup update (or brew upgrade rust, choco upgrade rust, ...)
crys remove py sudo apt remove python3 (or brew uninstall python, choco uninstall python, ...) — with a confirmation prompt first
crys remove node brew uninstall node / apt remove nodejs / choco uninstall nodejs — with a confirmation prompt first
crys remove rust rustup self uninstall -y (or brew uninstall rust, choco uninstall rust, ...) — with a confirmation prompt first
crys install node brew install node / sudo apt install nodejs npm / choco install nodejs / winget install OpenJS.NodeJS — only if Node isn't already there
crys install rust the official curl | sh installer from rustup.rs — only if Rust isn't already there
crys install py nothing — prints why crys can't bootstrap its own interpreter, and where to get Python
crys lib install req py pip install -r requirements.txt
crys lib install req node npm install
crys lib install req rust cargo fetch

Every run also prints the exact command it's about to execute (the cyan $ ... line), so you can see what actually happened and learn the "real" command if you ever need it without crys.

Commands

crys install node                  install Node.js if it's missing
crys install rust                  install Rust (via rustup) if missing
crys install go                    install Go if it's missing
crys install ruby                  install Ruby if it's missing
crys install php                   install PHP if it's missing
crys install py                    explains why crys can't do this one

crys lib install req py            install from requirements.txt (pip)
crys lib install req node          install from package.json (npm)
crys lib install req rust          fetch deps from Cargo.toml (cargo)
crys lib install req go            fetch deps from go.mod (go)
crys lib install req ruby          install from Gemfile (bundler)
crys lib install req php           install from composer.json (composer)

crys update pip                    upgrade pip itself
crys update npm                    upgrade npm itself
crys update py                     upgrade the Python interpreter
crys update node                   upgrade the Node.js runtime
crys update rust                   upgrade the Rust toolchain
crys update go                     upgrade the Go toolchain
crys update ruby                   upgrade the Ruby interpreter
crys update php                    upgrade the PHP interpreter

crys update py lib <name>          pip install --upgrade <name>
crys update node lib <name>        npm install <name>@latest
crys update rust lib <name>        cargo update -p <name>
crys update go lib <name>          go get -u <name>
crys update ruby lib <name>        gem update <name>
crys update php lib <name>         composer update <name>

crys remove py                     uninstall Python (asks to confirm)
crys remove node                   uninstall Node.js (asks to confirm)
crys remove rust                   uninstall Rust (asks to confirm)
crys remove go                     uninstall Go (asks to confirm)
crys remove ruby                   uninstall Ruby (asks to confirm)
crys remove php                    uninstall PHP (asks to confirm)

crys version                       print the crys version
crys version py                    print the Python version
crys version node                  print the Node.js version
crys version rust                  print the Rust version
crys version go                    print the Go version
crys version ruby                  print the Ruby version
crys version php                   print the PHP version

crys uninstall                     remove Crystal Dependency Manager
crys help                          show help text

Notes on the risky commands

  • crys update node / crys update py try, in order: nvm/pyenv (if present, they just print the right follow-up command since those are shell functions, not real executables), then brew on macOS, then apt/dnf/pacman on Linux, then choco/winget on Windows.
  • crys remove node / crys remove py always ask for confirmation first. crys remove py on Linux refuses to run automatically, since removing the system Python package can break the OS — it prints the manual command instead.
  • Everything shells out to the real tool (pip, npm, brew, apt, etc.) rather than reimplementing package management, so crys stays a thin, predictable wrapper.

Uninstalling

crys uninstall

or manually: pip uninstall crystal-dependency-manager

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crys-0.1.6.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

crys-0.1.6-py3-none-any.whl (12.1 kB view details)

Uploaded Python 3

File details

Details for the file crys-0.1.6.tar.gz.

File metadata

  • Download URL: crys-0.1.6.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for crys-0.1.6.tar.gz
Algorithm Hash digest
SHA256 637f9f198c12a6ccdb2283255c1d93e4eaf586b029fcd80ad869220a51f05962
MD5 4a66ed5d0752228a3dc32aa9d3f94346
BLAKE2b-256 eac1b340b4666303ce744d08b9926fc7bcd6b7264e9396e4303f6afa273fee0a

See more details on using hashes here.

File details

Details for the file crys-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: crys-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for crys-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 617faaf05fc78cb6820bf88717627b3ec6fe98533613ce02dbf4eb2de29f8548
MD5 c7a725f265095d9a08a67240bb2f2f03
BLAKE2b-256 2c37602ff138d57f29fa9cccd5f845a85703f1012a7ee92072ad38c7e85c0697

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page