Skip to content

πŸš€ Universal runtime manager written in Bash. Manage multiple versions of programming languages and development tools effortlessly. Inspired by asdf.

License

Notifications You must be signed in to change notification settings

marcoaurelima/cliverman

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

64 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Cliverman

   _____ _ _                                      
  / ____| (_)                                     
 | |    | |___   _____ _ __ _ __ ___   __ _ _ __  
 | |    | | \ \ / / _ \ '__| '_ ` _ \ / _` | '_ \ 
 | |____| | |\ V /  __/ |  | | | | | | (_| | | | |
  \_____|_|_| \_/ \___|_|  |_| |_| |_|\__,_|_| |_|

A universal runtime manager inspired by asdf, written in Bash. Manage multiple versions of programming languages and developer tools in a simple and efficient way.

πŸš€ Features

  • Universal: Manage multiple runtimes (Go, Node.js, Python, Ruby, etc.) with a single tool
  • Simple: Intuitive and easy-to-use command-line interface
  • Lightweight: Written in pure Bash with no heavy dependencies
  • Flexible: Easily switch between runtime versions

πŸ“‹ Supported Runtimes

βœ… Implemented and Available

  • Node.js (beta) - JavaScript runtime

βŒ› In Development

  • Golang - Go programming language
  • Python - Python programming language
  • Ruby - Ruby programming language
  • Deno - Secure JavaScript/TypeScript runtime
  • Rust - Systems programming language
  • Java - Java platform

πŸ“¦ Installation

git clone https://github.com/marcoaurelima/cliverman.git $HOME/.cliverman && cd $HOME/.cliverman && rm -rf .git

Configure your PATH

Add the following line to your shell configuration file:

. "${HOME}/.cliverman/config/env.sh"
export PATH="${HOME}/.cliverman/shims:${PATH}"
. "${HOME}/.cliverman/config/config.sh"
  • Bash: ~/.bashrc or ~/.bash_profile
  • Zsh: ~/.zshrc
  • Fish: ~/.config/fish/config.fish

After adding, reload the file:

source ~/.bashrc  # or source ~/.zshrc depending on your shell

πŸ“– Usage

Basic syntax

cliverman [command] [arguments]

Available commands

search - Search available runtimes

# List all available runtimes for installation
cliverman search all

# List all versions for a specific runtime
cliverman search golang
cliverman search nodejs
cliverman search python

list - List installed runtimes

# List all installed runtimes
cliverman list all

# List installed versions for a specific runtime
cliverman list golang

install - Install a runtime

# Install a specific version of a runtime
cliverman install golang:14.17.0
cliverman install python:3.9.5
cliverman install ruby:3.0.0

use - Set active version

# Set the global active version for a runtime
cliverman use golang:14.17.0
cliverman use python:3.9.5

uninstall - Uninstall runtime

# Uninstall all versions of a runtime
cliverman uninstall golang

# Uninstall a specific version
cliverman uninstall golang:14.17.0

clear - Clear runtime shims and cached data

# Invoke the runtime-specific clear script to remove shims
# and any cached/current-version metadata for a runtime
cliverman clear nodejs
cliverman clear golang

πŸ’‘ Practical examples

# 1. Search available Go versions
cliverman search golang

# 2. Install Go version 14.17.0
cliverman install golang:14.17.0

# 3. Install Go version 16.13.0
cliverman install golang:16.13.0

# 4. List installed Go versions
cliverman list golang

# 5. Activate version 16.13.0 globally
cliverman use golang:16.13.0

# 6. Check active version
go version

# 7. Uninstall a specific version
cliverman uninstall golang:14.17.0

πŸ”§ Requirements

πŸ“‚ Directory structure

~/.cliverman/
β”œβ”€β”€ installs/          # Installed runtimes
β”‚   β”œβ”€β”€ golang/
β”‚   β”œβ”€β”€ python/
β”‚   └── ruby/
└── shims/             # Symbolic links to active executables

🀝 Contributing

Contributions are welcome! Feel free to:

  1. Fork the project
  2. Create a branch for your feature (git checkout -b feature/MyFeature)
  3. Commit your changes (git commit -m 'Add MyFeature')
  4. Push to your branch (git push origin feature/MyFeature)
  5. Open a Pull Request

πŸ“ Roadmap

  • Support more runtimes (Deno, Rust, Java, etc.)
  • Per-project configuration (.cliverman-version)
  • Shell completion (bash, zsh, fish)

πŸ“„ LicenΓ§a

This project is licensed under the MIT License. See LICENSE for details.

πŸ™ Acknowledgements

Inspired by the excellent project asdf.


Made with ❀️ in Bash

About

πŸš€ Universal runtime manager written in Bash. Manage multiple versions of programming languages and development tools effortlessly. Inspired by asdf.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages