Show HN: Fisherman – Fish Shell Manager
github.com
github.com
This tool is not a framework, it does not pollute your shell public scope with superfluous functions, it does not make your shell slow, it's just a handful of 4 ~ 5 commands that let you share and manage your configuration, plugins, prompts, snippets, etc., and does not care whether they come from Oh My Fish!, Wahoo, or other vendors. You get the most of your shell and Fisherman gets out of your way.
Features include a flat tree structure, strong UNIX ties (everything is a stream), unified plugin architecture with automatic completions, documentation via man pages and support for utilities that use Make as a build tool, external self-managed database, cache system, plugin dependencies, quick shell start, extensive documentation and compatibility with Oh My Fish ecosystem of plugins / themes.
Basically, a flat tree takes advantage of fish's lack of private scope (it bundles everything into the same "public" scope).
Fisherman then only needs to "load" the one single path where plugins/snippets/prompts/etc are transferred after being downloaded to the cache.
This is faster than, loading a path hierarchy per plugin and also means that performance is not affected based in the number of plugins installed.
On the fly display of all the options. If so, to what extend? Some commands don't give autocomplete upon tab. Is there a way to fix that?
Showing everything as you type sounds neat, but in practice it's jarring to have your screen fill up the second you press a key. fish operates on the UI principle of progressive disclosure: be helpful but not overwhelming. That's why it only shows one.
fish knows how to parse man pages to extract options, so fish can tab-complete options even for commands that don't have explicit completions. It's surprising that nobody else seems to have tried this.
ridiculous_fish, we still use `complete` all over the place for completions don't we. In Fisherman there is a nice little AWK script, still far from perfect that attempts to do a similar thing, parsing a utility's usage help.
usage: utility [...]
-s --short Short option ...
Sorry, but I like this one https://github.com/bucaran/shark ^^
See the merge commit here:
* https://github.com/oh-my-fish/oh-my-fish/commit/2693a2fd18bd...
And compare to Wahoo here:
* https://github.com/bucaran/wahoo
Fisherman is a project of a different caliber, forged over a longer period of time, truer to the UNIX philosophy in principle "everything is a stream", built for extensibility and to solve OMF slow shell start issue (that has been a problem ever since I joined the project almost 2 years ago) and of course, backward compatible with OMF/Wahoo plugin/theme ecosystem.