<div align="center">

# hyper-jump

_The console lights up, keys clack rapidly and then..._ 🛸

</div>

hyper-jump is an agnostic all-in-one and cross-platform command-line version manager toolset which I have created and used personally based on internal tools I daily interact with for many different reasons, that being for educational purposes or as a professional project/task.

## Core Features

- **Version Management**: Install and switch between different versions of package.
- **Environment Isolation**: Create isolated environments for different projects, each with its own set of package versions.
- **Remote Listing**: View available versions of packages from remote repositories.
- **Package Installation**: Download and install specific versions of packages with ease.
- **Package Uninstallation**: Remove installed versions of packages to declutter the environment.
- **Version Switching**: Seamlessly switch between installed versions with a single command.
- **Version Cleanup**: Erase all installed versions of packages to start fresh.
- **Proxy Handling**: Hyper-Jump acts as a proxy, allowing users to run commands from the selected package version.

## Potential Features

- **Updates notification**: Notify users when new versions of packages are available.
- **Custom Package Sources**: Allow users to add custom package sources or repositories for more flexibility.
- **Enhanced List Filtering**: Provide options to filter the list of installed and remote versions based on criteria such as release date or stability.

## Supported Packages

| Package Name                                                                   | Alias                 | Description                                          |
| ------------------------------------------------------------------------------ | --------------------- | ---------------------------------------------------- |
| [Neovim](https://github.com/neovim/neovim)                                     | `neovim`              | Manage versions of the Neovim client software.       |
| [Jujutsu](https://github.com/jj-vcs/jj)                                        | `jj`                  | Manage versions of the Jujutsu client software.      |
| [Zellij](https://github.com/zellij-org/zellij)                                 | `zellij`              | Manage versions of the Zellij client software.       |
| [Reth](https://github.com/paradigmxyz/reth)                                    | `reth`                | Manage versions of the Reth client software.         |
| [Cardano Node](https://github.com/IntersectMBO/cardano-node)                   | `cardano-node`        | Manage versions of the Cardano Node software.        |
| [Cardano CLI](https://github.com/cardano-scaling/cardano-cli)                  | `cardano-cli`         | Manage versions of the Cardano CLI tool.             |
| [Partner Chains CLI](https://github.com/input-output-hk/partner-chains)        | `partner-chains-cli`  | Manage versions of the Partner Chains CLI tool.      |
| [Partner Chains Node](https://github.com/input-output-hk/partner-chains)       | `partner-chains-node` | Manage versions of the Partner Chains Node software. |
| [Cardano Submit Api](https://github.com/IntersectMBO/cardano-node)             | `cardano-submit-api`  | Manage versions of the Cardano Submit Api software.  |
| [SideChain](https://github.com/input-output-hk/partner-chains-smart-contracts) | `sidechain-cli`       | Manage versions of the SideChain CLI tool.           |
| [Mithril](https://github.com/input-output-hk/mithril)                          | `mithril-client`      | Manage versions of the Mithril client software.      |
| [Scrolls](https://github.com/txpipe/scrolls)                                   | `scrolls`             | Manage versions of the Scrolls client software.      |
| [Oura](https://github.com/txpipe/oura/tree/main)                               | `oura`                | Manage versions of the Oura client software.         |
| [Dolos](https://github.com/txpipe/dolos)                                       | `dolos`               | Manage versions of the Dolos client software.        |
| [Aiken](https://github.com/aiken-lang/aiken)                                   | `aiken`               | Manage versions of the Aiken client software.        |

## Installation

```bash
cargo install hyper-jump
```

## Configuration

#### On Linux and macOS:

Add the following line to your shell configuration file (e.g., `~/.bashrc`, `~/.zshrc`, etc.):

```bash
export PATH="$HOME/.local/share/hyper-jump/bin:$PATH"
```

Or add the hyper-jump binary path to your PATH by running:

```bash
sudo launchctl config user path "$(hyper-jump prefix):${PATH}"
```

## Usage

To manage packages, use the following subcommands:

### Help

Display help information:

```bash
hyper-jump --help
```

### Use

Switch to a specific version of a package.

```sh
hyper-jump use <package-name> <version>
```

### Install

Install a specific version of a package.

```sh
hyper-jump install <package-name> <version>
```

### List

List installed versions of a package:

```sh
hyper-jump list <package-name>
```

### List Remote

List remote versions available for a package.

```sh
hyper-jump list-remote <package-name>
```

### Uninstall

Uninstall a specific version of a package.

```sh
hyper-jump uninstall <package-name> <version>
```

### Erase

Remove all installed versions.

```sh
hyper-jump erase
```
