@jorgebucaran jorgebucaran released this Oct 5, 2018 · 128 commits to master since this release

Fisher 3 is the continuation of and successor to Fisherman. For a historical background of this work see the original V3 proposal (#307) and later discussion about the future of the project (#443).

Installing Packages

  • The install command has been renamed to add.
    • Installing from a gist is no longer supported (but it might be be back in a future release).
    • To install a package from a tag, branch or commit-ish you can use an @ symbol followed by the git ref; the colon : symbol has been deprecated.
    • Both .fish files provided by your package will be copied to $fisher_path.
      • .fish files in the top-level directory and files of any extension inside functions, completions and conf.d directories will be copied to your $fisher_path.

Updating Packages & Self-Update

  • A new self-update command has been added which can be used to update Fisher itself within the same shell session.
    • Fisher will be updated only if a new version is available.
  • The update command has been removed; to update all your installed packages just run fisher.
    • Every time you run fisher, fisher add or fisher rm, every package that is currently installed on your system is installed again from scratch and as a result there is no need to update specific packages—you're always up-to-date.
      • To lock a specific package version you must use the @ symbol followed by a git tag, branch or commit-ish, e.g. mypkg/foobar@1.3.2, mypkg/bazbam@fdc5ce1..

Listing Packages

  • The ls and rm commands are still available with a few minor differences.
    • ls followed by a package name does not list specific package information (but it might be be back in a future release).
    • ls output format no longer displays a legend to indicate whether a package is a theme or a local package; now it's a flat dump of every installed package specifier.
      • For local packages the full path is shown instead.
      • I'm considering adding a new --tree flag in order to display packages in a tree-like format.
  • ls-remote has been removed as there is no longer a preferred organization to look for packages.

Uninstalling Fisher

  • To uninstall Fisher from your system use self-uninstall; no warnings, use with caution!.
    • Unlike V2, this command will first remove all the packages that are currently installed and proceed to remove Fisher itself.

Environment Variables

  • $fish_path been renamed to $fisher_path to clarify that this variable is a Fisher specific extension, not your shell's.
    • This variable controls the prefix location where functions, completions and configuration snippets will be copied to when installing a package.
    • Unlike V2, the fishfile is always inside your fish configuration directory (XDG_CONFIG_HOME/fish).

Compatibility with Oh My Fish!

  • Oh My Fish! packages are still largely supported, but 100% compatibility is not a goal.
    • Packages with init.fish, uninstall.fish, key_bindings.fish or recursive directories should work out of the box.
    • init_ events, hooks, Oh My Fish! core library functions and Oh My Fish! environment variables such as $OMF_PATH, $package, $path and $dependencies are not currently supported.
      • If you tried to install an Oh My Fish! package and it didn't work as you expected, please open an issue and I'll look into it.

System Requirements

  • Fisher can run on fish 2.0 now.
    • It's a good idea to upgrade to at least fish 2.3 to use the string builtin and configuration snippets, but there's no reason for Fisher to force you to use any specific fish version.
  • curl is still required for fetching packages.
    • If I start to hear complains I could add a fallback to wget when curl is not available on your system.
  • git is an optional dependency; it is used to fetch self-hosted packages.
    • Otherwise, Fisher will fetch package tarballs directly from GitHub, GitLab, and BitBucket.
      • I'm open to adding more hosts in the future if the need should arise.
Assets 2