IlanCosman / scuba

🤿 Minimal plugin manager for the friendly interactive shell
MIT License
18 stars 0 forks source link
fish fish-plugin fish-plugins fish-shell

Fisher 4.0 has been released and incorporates most of Scuba's features. This project is archived for now.

Scuba ci_badge fish_version_badge license_badge blazing_badge

🤿 Scuba - It's how you swim with the fish

Scuba is the fastest, smallest, and fishiest plugin manager for the friendly interactive shell.

Bootstrap Scuba

curl -sL https://git.io/scuba-install | source && _scuba_sub_install ilancosman/scuba

Quickstart

Installing plugins

The install command installs plugins from their repository paths on GitHub.

scuba install patrickf3139/fzf.fish

To get a specific version of a plugin add an @ symbol after the plugin name followed by a tag, branch, or commit.

scuba install jorgebucaran/nvm.fish@1.1.0

You can install plugins from local directories as well.

scuba install ~/path/to/plugin

Listing plugins

The list command lists installed plugins.

$ scuba list
ilancosman/scuba
patrickf3139/fzf.fish
jorgebucaran/nvm.fish@1.1.0
/home/ilan/path/to/plugin

ilancosman/scuba is listed because you installed it to start with!

list also accepts a regular expression to filter the output.

$ scuba list '^/'
/home/ilan/path/to/plugin

Updating plugins

The update command fetches and installs the latest version of plugins.

scuba update patrickf3139/fzf.fish

scuba update by itself will update all installed plugins, including Scuba.

Removing plugins

The remove command removes installed plugins.

scuba remove patrickf3139/fzf.fish

Since Scuba is just like any other plugin, you can uninstall it using scuba remove ilancosman/scuba.

Creating a Plugin

See the plugin creation guide for documentation.

Contributing

From the smallest typo to the largest feature, contributions of any size or experience level are welcome!

If you're interested in helping contribute to Scuba, please take a look at the Contributing Guide.

Oh My Fish and Fisher plugin support

In general anywhere you see fisher add, you can replace it with scuba install. The only minor issue may be uninstall.fish since Scuba uses an event system instead of storing the plugin in a permenant directory on your machine. Thus, plugins that rely on uninstall.fish to remove leftover variables will not do so. Fisher 4.0, coming out sometime in 2021, will also remove uninstall.fish support. All plugins should transition to the uninstall event system that Scuba and Fisher use.

Comparison with Fisher

Scuba is highly inspired by Fisher and operates similarly. What are the advantages and disadvantages? What's simply different?

TLDR: Scuba is similar to the proposed fisher 4.0 but faster, simpler, better maintained, and more in line with fish design philosophy. Unlike Fisher, Scuba does not support file-based configuration or dependencies.

Advantages

Disadvantages

Differences

Acknowledgements