From 0baaf837ffb99bc1a0ad2b6bdc178c86da0dafec Mon Sep 17 00:00:00 2001 From: Charles Gould Date: Mon, 3 Jul 2023 14:36:10 -0400 Subject: [PATCH] Initialize _fisher_plugins using fish_plugins file (#741) This change is for users who commit fish_plugins and plugin sources but omit fish_variables. On a system where Fisher's universal variables are unset, most Fisher commands were not working out-of-the-box: * `fisher install ` - installs , rewrites fish_plugins file with only - if is in fish_plugins, same behavior as `fisher update` * `fisher remove ` - fails with error: Plugin not installed "" * `fisher update ` - fails with error: Plugin not installed "" * `fisher update` - fails with error about conflicting files, deletes fish_plugins file * `fisher list []` - returns nothing As of this commit all Fisher commands work except for `fisher remove`; Fisher still has no way of knowing which files to remove absent the universal variable that tracks the files associated to a plugin. It may make sense to reject calls like `fisher remove ` if the `_fisher__files` universal variable is missing. Fisher could suggest the user run `fisher update` and try again. --- functions/fisher.fish | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/functions/fisher.fish b/functions/fisher.fish index 1aec6712..ccaaa627 100644 --- a/functions/fisher.fish +++ b/functions/fisher.fish @@ -2,6 +2,8 @@ function fisher --argument-names cmd --description "A plugin manager for Fish" set --query fisher_path || set --local fisher_path $__fish_config_dir set --local fisher_version 4.4.3 set --local fish_plugins $__fish_config_dir/fish_plugins + test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins) + set --query _fisher_plugins || set --universal _fisher_plugins $file_plugins switch "$cmd" case -v --version @@ -29,8 +31,6 @@ function fisher --argument-names cmd --description "A plugin manager for Fish" set --local old_plugins $_fisher_plugins set --local new_plugins - test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins) - if ! set --query argv[2] if test "$cmd" != update echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1