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.4.tar.gz (12.0 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.4-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: crys-0.1.4.tar.gz
  • Upload date:
  • Size: 12.0 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.4.tar.gz
Algorithm Hash digest
SHA256 3e7c776ead28e9529114dd70103b6f9c388a8f28466a890a0381d037f1ac4b0b
MD5 58b0812c3fa10f43f859fb8cbbb30277
BLAKE2b-256 cf1973f351c224ab4ff4ae3e2a10147cc91df2c533dac8ff705141609d057be2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: crys-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 11.3 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 c223667012224252db87456fce4718675ef91053d9e33ae070d62e2801d56b93
MD5 835c59bc99469e56408f37ff18c7aea2
BLAKE2b-256 eb29e04893bfe9988701618344a6b7a46b09d4473ea9f7f4fa048a2cf0da1f3f

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