mirror of
https://github.com/jorgebucaran/fisher
synced 2024-10-09 09:36:53 +02:00
Progress report improvements.
* Display fetch message for plugins retrieve from the cache. * Display what plugins are being removed.
This commit is contained in:
parent
a11213bd38
commit
52c5a7148c
1 changed files with 119 additions and 68 deletions
187
fisher.fish
187
fisher.fish
|
@ -1,4 +1,17 @@
|
|||
function fisher
|
||||
set -g fisher_version "2.6.8"
|
||||
set -g fisher_spinners ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
|
||||
|
||||
function __fisher_show_spinner
|
||||
if not set -q __fisher_fg_spinner[1]
|
||||
set -g __fisher_fg_spinner $fisher_spinners
|
||||
end
|
||||
|
||||
printf " $__fisher_fg_spinner[1]\r" > /dev/stderr
|
||||
|
||||
set -e __fisher_fg_spinner[1]
|
||||
end
|
||||
|
||||
set -l config_home $XDG_CONFIG_HOME
|
||||
set -l cache_home $XDG_CACHE_HOME
|
||||
|
||||
|
@ -22,27 +35,27 @@ function fisher
|
|||
set -g fisher_cache "$cache_home/fisherman"
|
||||
end
|
||||
|
||||
# to be deprecated ~ 2.8
|
||||
if test -z "$fisher_bundle"
|
||||
set -g fisher_bundle "$fish_config/fishfile"
|
||||
end
|
||||
|
||||
if test "$argv" = --complete
|
||||
__fisher_complete
|
||||
|
||||
return
|
||||
if test -z "$fisher_file"
|
||||
set -g fisher_file "$fish_config/fishfile"
|
||||
end
|
||||
|
||||
set -g fisher_version "2.6.7"
|
||||
set -g fisher_spinners ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏
|
||||
switch "$argv[1]"
|
||||
case --complete
|
||||
__fisher_complete
|
||||
return
|
||||
|
||||
function __fisher_show_spinner
|
||||
if not set -q __fisher_fg_spinner[1]
|
||||
set -g __fisher_fg_spinner $fisher_spinners
|
||||
end
|
||||
case -v --version
|
||||
__fisher_version
|
||||
return
|
||||
|
||||
printf " $__fisher_fg_spinner[1]\r" > /dev/stderr
|
||||
|
||||
set -e __fisher_fg_spinner[1]
|
||||
case -h
|
||||
__fisher_usage > /dev/stderr
|
||||
return
|
||||
end
|
||||
|
||||
if not command mkdir -p "$fish_config/"{conf.d,functions,completions} "$fisher_config" "$fisher_cache"
|
||||
|
@ -73,7 +86,6 @@ function fisher
|
|||
set -e argv[$index]
|
||||
set __fisher_stdout /dev/null
|
||||
set __fisher_stderr /dev/null
|
||||
|
||||
break
|
||||
end
|
||||
end
|
||||
|
@ -94,7 +106,7 @@ function fisher
|
|||
set -e argv[1]
|
||||
set cmd "update"
|
||||
|
||||
case r rm remove uninstall
|
||||
case r rm remove
|
||||
set -e argv[1]
|
||||
set cmd "rm"
|
||||
|
||||
|
@ -109,17 +121,11 @@ function fisher
|
|||
case h help
|
||||
set -e argv[1]
|
||||
__fisher_help $argv
|
||||
return
|
||||
|
||||
case --help
|
||||
set -e argv[1]
|
||||
__fisher_help
|
||||
|
||||
case -h
|
||||
__fisher_usage > /dev/stderr
|
||||
|
||||
case -v --version
|
||||
set -l home ~
|
||||
printf "fisherman version $fisher_version %s\n" (__fisher_plugin_normalize_path (status -f) | command awk -v home="$home" '{ sub(home, "~") } //')
|
||||
return
|
||||
|
||||
case -- ""
|
||||
|
@ -131,7 +137,7 @@ function fisher
|
|||
set cmd "install"
|
||||
end
|
||||
|
||||
case self-uninstall self-destroy
|
||||
case self-{uninstall,destroy}
|
||||
set -e argv[1]
|
||||
__fisher_self_uninstall $argv
|
||||
return
|
||||
|
@ -146,7 +152,6 @@ function fisher
|
|||
end
|
||||
|
||||
set -l elapsed (__fisher_get_epoch_in_ms)
|
||||
|
||||
set -l items (
|
||||
if test ! -z "$argv"
|
||||
printf "%s\n" $argv | command awk '
|
||||
|
@ -161,7 +166,7 @@ function fisher
|
|||
}
|
||||
}
|
||||
|
||||
!seen[$0]++
|
||||
!dedupe[$0]++
|
||||
|
||||
'
|
||||
end
|
||||
|
@ -171,8 +176,8 @@ function fisher
|
|||
if isatty
|
||||
command touch "$fisher_bundle"
|
||||
|
||||
set items (__fisher_read_bundle_file < "$fisher_bundle")
|
||||
set cmd "install"
|
||||
set items (__fisher_read_bundle_file < "$fisher_bundle")
|
||||
|
||||
if test -z "$items"
|
||||
__fisher_usage > /dev/stderr
|
||||
|
@ -271,13 +276,27 @@ function fisher
|
|||
__fisher_list_remote "$format" $argv
|
||||
end
|
||||
else
|
||||
|
||||
__fisher_list_remote "$format" $argv
|
||||
end
|
||||
|
||||
case rm
|
||||
__fisher_remove $items
|
||||
__fisher_log okay "Done in @"(__fisher_get_epoch_in_ms $elapsed | __fisher_humanize_duration)"@" $__fisher_stderr
|
||||
if test -z "$items"
|
||||
__fisher_parse_column_output | __fisher_read_bundle_file | read -az items
|
||||
end
|
||||
|
||||
for i in $items
|
||||
if test ! -d "$fisher_config/$i"
|
||||
__fisher_log warn "You can only remove plugins you've installed." $__fisher_stderr
|
||||
set -e items
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if test ! -z "$items"
|
||||
__fisher_remove $items
|
||||
__fisher_log okay "Done in @"(
|
||||
__fisher_get_epoch_in_ms $elapsed | __fisher_humanize_duration)"@" $__fisher_stderr
|
||||
end
|
||||
end
|
||||
|
||||
set -l config_glob $fisher_config/*
|
||||
|
@ -287,7 +306,7 @@ function fisher
|
|||
case ls ls-remote
|
||||
case \*
|
||||
if test -z "$config"
|
||||
echo > $fisher_bundle
|
||||
echo > "$fisher_bundle"
|
||||
set -e fisher_dependency_count
|
||||
else
|
||||
__fisher_plugin_get_url_info -- "$fisher_config"/$config > $fisher_bundle
|
||||
|
@ -434,6 +453,10 @@ function __fisher_plugin_fetch_items
|
|||
|
||||
if test -z "$names[2]"
|
||||
if test -d "$src"
|
||||
if test ! -d "$fisher_config/$names[1]"
|
||||
__fisher_log info "Fetch @$names[1]@" $__fisher_stderr
|
||||
end
|
||||
|
||||
if test -L "$src"
|
||||
command ln -sf "$src" "$fisher_config"
|
||||
else
|
||||
|
@ -444,9 +467,13 @@ function __fisher_plugin_fetch_items
|
|||
end
|
||||
else
|
||||
if test -d "$src"
|
||||
set -l real_namespace (__fisher_plugin_get_url_info --dirname "$src" )
|
||||
set -l real_namespace (__fisher_plugin_get_url_info --dirname "$src")
|
||||
|
||||
if test "$real_namespace" = "$names[2]"
|
||||
if test ! -d "$fisher_config/$names[1]"
|
||||
__fisher_log info "Fetch @$names[1]@" $__fisher_stderr
|
||||
end
|
||||
|
||||
command cp -Rf "$src" "$fisher_config"
|
||||
else
|
||||
set jobs $jobs (__fisher_plugin_url_clone_async "$i" "$names[1]")
|
||||
|
@ -787,39 +814,47 @@ end
|
|||
|
||||
function __fisher_remove
|
||||
if test -z "$argv"
|
||||
__fisher_parse_column_output | __fisher_read_bundle_file | read -az argv
|
||||
return 1
|
||||
end
|
||||
|
||||
if test ! -z "$argv"
|
||||
set -l orphans
|
||||
set -l orphans
|
||||
set -l removed
|
||||
|
||||
for i in $argv
|
||||
set -l name (__fisher_plugin_get_names "$i")[1]
|
||||
for i in $argv
|
||||
set -l name (__fisher_plugin_get_names "$i")[1]
|
||||
|
||||
__fisher_show_spinner
|
||||
__fisher_plugin_decrement_ref_count "$name"
|
||||
__fisher_show_spinner
|
||||
__fisher_plugin_decrement_ref_count "$name"
|
||||
|
||||
if test -f "$fisher_config/$i/fishfile"
|
||||
while read -l i
|
||||
set -l name (__fisher_plugin_get_names "$i")[1]
|
||||
if test -f "$fisher_config/$i/fishfile"
|
||||
while read -l i
|
||||
set -l name (__fisher_plugin_get_names "$i")[1]
|
||||
|
||||
if test (__fisher_plugin_get_ref_count "$name") -le 1
|
||||
set orphans $orphans "$name"
|
||||
else
|
||||
__fisher_plugin_decrement_ref_count "$name"
|
||||
end
|
||||
if test (__fisher_plugin_get_ref_count "$name") -le 1
|
||||
set orphans $orphans "$name"
|
||||
else
|
||||
__fisher_plugin_decrement_ref_count "$name"
|
||||
end
|
||||
|
||||
__fisher_show_spinner
|
||||
end < "$fisher_config/$i/fishfile"
|
||||
end
|
||||
|
||||
__fisher_plugin_disable "$fisher_config/$name"
|
||||
__fisher_show_spinner
|
||||
__fisher_show_spinner
|
||||
end < "$fisher_config/$i/fishfile"
|
||||
end
|
||||
|
||||
for i in $orphans
|
||||
__fisher_remove "$i" > /dev/stderr
|
||||
if test -d "$fisher_config/$name"
|
||||
set removed $removed $name
|
||||
end
|
||||
|
||||
__fisher_plugin_disable "$fisher_config/$name"
|
||||
|
||||
__fisher_show_spinner
|
||||
end
|
||||
|
||||
for i in $orphans
|
||||
__fisher_remove "$i" > /dev/stderr
|
||||
end
|
||||
|
||||
for i in $removed
|
||||
__fisher_log info "Remove @$i@" $__fisher_stderr
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1062,7 +1097,7 @@ function __fisher_list_plugin_directory
|
|||
|
||||
for i in $argv
|
||||
if test ! -d "$fisher_config/$i"
|
||||
__fisher_log error "Skipped @$i@" $__fisher_stderr
|
||||
__fisher_log error "You can only list plugins you've installed." $__fisher_stderr
|
||||
|
||||
return 1
|
||||
end
|
||||
|
@ -1586,7 +1621,7 @@ function __fisher_read_bundle_file
|
|||
{
|
||||
sub("^[@* \t]*", "")
|
||||
|
||||
if (!seen[$0]++) {
|
||||
if (!dedupe[$0]++) {
|
||||
printf("%s\n", $0)
|
||||
}
|
||||
}
|
||||
|
@ -1600,7 +1635,7 @@ end
|
|||
|
||||
|
||||
function __fisher_plugin_decrement_ref_count -a name
|
||||
if set -l i (contains -i -- "$name" $fisher_dependency_count)
|
||||
if set -l i (contains --index -- "$name" $fisher_dependency_count)
|
||||
set -e fisher_dependency_count[$i]
|
||||
end
|
||||
end
|
||||
|
@ -1625,6 +1660,11 @@ function __fisher_plugin_get_ref_count -a name
|
|||
end
|
||||
|
||||
|
||||
function __fisher_completions
|
||||
echo "fisher --complete"
|
||||
end
|
||||
|
||||
# to be deprecated ~ 2.8
|
||||
function __fisher_completions_write
|
||||
echo "fisher --complete"
|
||||
end
|
||||
|
@ -1636,23 +1676,23 @@ function __fisher_complete
|
|||
|
||||
if test ! -s "$fisher_cache/.index"
|
||||
if test ! -z "$config"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove uninstall" -a "$config"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove uninstall" -a "$fisher_active_prompt" -d "Prompt"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove" -a "$config"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove" -a "$fisher_active_prompt" -d "Prompt"
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
set -l IFS \t
|
||||
set -l real_home ~
|
||||
|
||||
for name in (command find $config_glob -maxdepth 0 -type l ^ /dev/null)
|
||||
set -l path (command readlink "$name")
|
||||
set -l name (command basename "$name" | sed "s|$real_home|~|")
|
||||
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove uninstall" -a "$name" -d "$path"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove" -a "$name" -d "$path"
|
||||
end
|
||||
|
||||
set -l IFS \t
|
||||
|
||||
command awk -v FS=\t -v OFS=\t '
|
||||
|
||||
{
|
||||
|
@ -1669,7 +1709,7 @@ function __fisher_complete
|
|||
complete -xc fisher -n "__fish_seen_subcommand_from info ls-remote" -a "$name" -d "$info"
|
||||
|
||||
if contains -- "$name" $config
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove uninstall" -a "$name" -d "$info"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove" -a "$name" -d "$info"
|
||||
else
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from i in install" -a "$name" -d "$info"
|
||||
end
|
||||
|
@ -1682,7 +1722,7 @@ function __fisher_complete
|
|||
case \*
|
||||
set -l name (__fisher_plugin_get_names "$i")[1]
|
||||
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove uninstall" -a "$name" -d "$i"
|
||||
complete -xc fisher -n "__fish_seen_subcommand_from l ls list u up update r rm remove" -a "$name" -d "$i"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1813,9 +1853,9 @@ function __fisher_usage
|
|||
set -l u (set_color -u)
|
||||
set -l nc (set_color normal)
|
||||
|
||||
echo "Usage: fisher [<command>] [<plugins>] [--quiet] [--version]"
|
||||
echo "Usage: fisher [<command>] [<plugins>]"
|
||||
echo
|
||||
echo "where <command> can be one of:"
|
||||
echo "where <command> is one of:"
|
||||
echo " "$u"i"$nc"nstall (default)"
|
||||
echo " "$u"u"$nc"pdate"
|
||||
echo " "$u"r"$nc"m"
|
||||
|
@ -1824,6 +1864,13 @@ function __fisher_usage
|
|||
end
|
||||
|
||||
|
||||
function __fisher_version
|
||||
set -l real_home ~
|
||||
printf "fisherman version $fisher_version %s\n" (
|
||||
__fisher_plugin_normalize_path (status -f) | command sed "s|$real_home|~|")
|
||||
end
|
||||
|
||||
|
||||
function __fisher_help -a cmd number
|
||||
if test -z "$argv"
|
||||
set -l page "$fisher_cache/fisher.1"
|
||||
|
@ -1851,9 +1898,13 @@ function __fisher_help -a cmd number
|
|||
|
||||
if not man "$page" ^ /dev/null
|
||||
if test -d "$fisher_config/$cmd"
|
||||
__fisher_log info "No manual for @$cmd@" $__fisher_stderr
|
||||
__fisher_log warn "There's no manual for this plugin." $__fisher_stderr
|
||||
|
||||
set -l url (__fisher_plugin_get_url_info -- "$fisher_config/$cmd")
|
||||
|
||||
__fisher_log info "Try online: <@github.com/$url@>" $__fisher_stderr
|
||||
else
|
||||
__fisher_log error "Skipped @$cmd@" $__fisher_stderr
|
||||
__fisher_log error "You can only check plugins you've installed." $__fisher_stderr
|
||||
end
|
||||
|
||||
return 1
|
||||
|
|
Loading…
Reference in a new issue