Progress report improvements.

* Display fetch message for plugins retrieve from the cache.
* Display what plugins are being removed.
This commit is contained in:
Jorge Bucaran 2016-05-08 04:20:27 +09:00
parent a11213bd38
commit 52c5a7148c
No known key found for this signature in database
GPG key ID: E54BA3C0E646DB30

View file

@ -1,4 +1,17 @@
function fisher 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 config_home $XDG_CONFIG_HOME
set -l cache_home $XDG_CACHE_HOME set -l cache_home $XDG_CACHE_HOME
@ -22,27 +35,27 @@ function fisher
set -g fisher_cache "$cache_home/fisherman" set -g fisher_cache "$cache_home/fisherman"
end end
# to be deprecated ~ 2.8
if test -z "$fisher_bundle" if test -z "$fisher_bundle"
set -g fisher_bundle "$fish_config/fishfile" set -g fisher_bundle "$fish_config/fishfile"
end end
if test "$argv" = --complete if test -z "$fisher_file"
__fisher_complete set -g fisher_file "$fish_config/fishfile"
return
end end
set -g fisher_version "2.6.7" switch "$argv[1]"
set -g fisher_spinners ⠋ ⠙ ⠹ ⠸ ⠼ ⠴ ⠦ ⠧ ⠇ ⠏ case --complete
__fisher_complete
return
function __fisher_show_spinner case -v --version
if not set -q __fisher_fg_spinner[1] __fisher_version
set -g __fisher_fg_spinner $fisher_spinners return
end
printf " $__fisher_fg_spinner[1]\r" > /dev/stderr case -h
__fisher_usage > /dev/stderr
set -e __fisher_fg_spinner[1] return
end end
if not command mkdir -p "$fish_config/"{conf.d,functions,completions} "$fisher_config" "$fisher_cache" 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 -e argv[$index]
set __fisher_stdout /dev/null set __fisher_stdout /dev/null
set __fisher_stderr /dev/null set __fisher_stderr /dev/null
break break
end end
end end
@ -94,7 +106,7 @@ function fisher
set -e argv[1] set -e argv[1]
set cmd "update" set cmd "update"
case r rm remove uninstall case r rm remove
set -e argv[1] set -e argv[1]
set cmd "rm" set cmd "rm"
@ -109,17 +121,11 @@ function fisher
case h help case h help
set -e argv[1] set -e argv[1]
__fisher_help $argv __fisher_help $argv
return
case --help case --help
set -e argv[1] set -e argv[1]
__fisher_help __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 return
case -- "" case -- ""
@ -131,7 +137,7 @@ function fisher
set cmd "install" set cmd "install"
end end
case self-uninstall self-destroy case self-{uninstall,destroy}
set -e argv[1] set -e argv[1]
__fisher_self_uninstall $argv __fisher_self_uninstall $argv
return return
@ -146,7 +152,6 @@ function fisher
end end
set -l elapsed (__fisher_get_epoch_in_ms) set -l elapsed (__fisher_get_epoch_in_ms)
set -l items ( set -l items (
if test ! -z "$argv" if test ! -z "$argv"
printf "%s\n" $argv | command awk ' printf "%s\n" $argv | command awk '
@ -161,7 +166,7 @@ function fisher
} }
} }
!seen[$0]++ !dedupe[$0]++
' '
end end
@ -171,8 +176,8 @@ function fisher
if isatty if isatty
command touch "$fisher_bundle" command touch "$fisher_bundle"
set items (__fisher_read_bundle_file < "$fisher_bundle")
set cmd "install" set cmd "install"
set items (__fisher_read_bundle_file < "$fisher_bundle")
if test -z "$items" if test -z "$items"
__fisher_usage > /dev/stderr __fisher_usage > /dev/stderr
@ -271,13 +276,27 @@ function fisher
__fisher_list_remote "$format" $argv __fisher_list_remote "$format" $argv
end end
else else
__fisher_list_remote "$format" $argv __fisher_list_remote "$format" $argv
end end
case rm case rm
__fisher_remove $items if test -z "$items"
__fisher_log okay "Done in @"(__fisher_get_epoch_in_ms $elapsed | __fisher_humanize_duration)"@" $__fisher_stderr __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 end
set -l config_glob $fisher_config/* set -l config_glob $fisher_config/*
@ -287,7 +306,7 @@ function fisher
case ls ls-remote case ls ls-remote
case \* case \*
if test -z "$config" if test -z "$config"
echo > $fisher_bundle echo > "$fisher_bundle"
set -e fisher_dependency_count set -e fisher_dependency_count
else else
__fisher_plugin_get_url_info -- "$fisher_config"/$config > $fisher_bundle __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 -z "$names[2]"
if test -d "$src" if test -d "$src"
if test ! -d "$fisher_config/$names[1]"
__fisher_log info "Fetch @$names[1]@" $__fisher_stderr
end
if test -L "$src" if test -L "$src"
command ln -sf "$src" "$fisher_config" command ln -sf "$src" "$fisher_config"
else else
@ -444,9 +467,13 @@ function __fisher_plugin_fetch_items
end end
else else
if test -d "$src" 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 "$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" command cp -Rf "$src" "$fisher_config"
else else
set jobs $jobs (__fisher_plugin_url_clone_async "$i" "$names[1]") set jobs $jobs (__fisher_plugin_url_clone_async "$i" "$names[1]")
@ -787,39 +814,47 @@ end
function __fisher_remove function __fisher_remove
if test -z "$argv" if test -z "$argv"
__fisher_parse_column_output | __fisher_read_bundle_file | read -az argv return 1
end end
if test ! -z "$argv" set -l orphans
set -l orphans set -l removed
for i in $argv for i in $argv
set -l name (__fisher_plugin_get_names "$i")[1] set -l name (__fisher_plugin_get_names "$i")[1]
__fisher_show_spinner __fisher_show_spinner
__fisher_plugin_decrement_ref_count "$name" __fisher_plugin_decrement_ref_count "$name"
if test -f "$fisher_config/$i/fishfile" if test -f "$fisher_config/$i/fishfile"
while read -l i while read -l i
set -l name (__fisher_plugin_get_names "$i")[1] set -l name (__fisher_plugin_get_names "$i")[1]
if test (__fisher_plugin_get_ref_count "$name") -le 1 if test (__fisher_plugin_get_ref_count "$name") -le 1
set orphans $orphans "$name" set orphans $orphans "$name"
else else
__fisher_plugin_decrement_ref_count "$name" __fisher_plugin_decrement_ref_count "$name"
end end
__fisher_show_spinner __fisher_show_spinner
end < "$fisher_config/$i/fishfile" end < "$fisher_config/$i/fishfile"
end
__fisher_plugin_disable "$fisher_config/$name"
__fisher_show_spinner
end end
for i in $orphans if test -d "$fisher_config/$name"
__fisher_remove "$i" > /dev/stderr set removed $removed $name
end 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
end end
@ -1062,7 +1097,7 @@ function __fisher_list_plugin_directory
for i in $argv for i in $argv
if test ! -d "$fisher_config/$i" 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 return 1
end end
@ -1586,7 +1621,7 @@ function __fisher_read_bundle_file
{ {
sub("^[@* \t]*", "") sub("^[@* \t]*", "")
if (!seen[$0]++) { if (!dedupe[$0]++) {
printf("%s\n", $0) printf("%s\n", $0)
} }
} }
@ -1600,7 +1635,7 @@ end
function __fisher_plugin_decrement_ref_count -a name 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] set -e fisher_dependency_count[$i]
end end
end end
@ -1625,6 +1660,11 @@ function __fisher_plugin_get_ref_count -a name
end end
function __fisher_completions
echo "fisher --complete"
end
# to be deprecated ~ 2.8
function __fisher_completions_write function __fisher_completions_write
echo "fisher --complete" echo "fisher --complete"
end end
@ -1636,23 +1676,23 @@ function __fisher_complete
if test ! -s "$fisher_cache/.index" if test ! -s "$fisher_cache/.index"
if test ! -z "$config" 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" -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 "$fisher_active_prompt" -d "Prompt"
end end
return return
end end
set -l IFS \t
set -l real_home ~ set -l real_home ~
for name in (command find $config_glob -maxdepth 0 -type l ^ /dev/null) for name in (command find $config_glob -maxdepth 0 -type l ^ /dev/null)
set -l path (command readlink "$name") set -l path (command readlink "$name")
set -l name (command basename "$name" | sed "s|$real_home|~|") 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 end
set -l IFS \t
command awk -v FS=\t -v OFS=\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" complete -xc fisher -n "__fish_seen_subcommand_from info ls-remote" -a "$name" -d "$info"
if contains -- "$name" $config 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 else
complete -xc fisher -n "__fish_seen_subcommand_from i in install" -a "$name" -d "$info" complete -xc fisher -n "__fish_seen_subcommand_from i in install" -a "$name" -d "$info"
end end
@ -1682,7 +1722,7 @@ function __fisher_complete
case \* case \*
set -l name (__fisher_plugin_get_names "$i")[1] 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 end
end end
@ -1813,9 +1853,9 @@ function __fisher_usage
set -l u (set_color -u) set -l u (set_color -u)
set -l nc (set_color normal) set -l nc (set_color normal)
echo "Usage: fisher [<command>] [<plugins>] [--quiet] [--version]" echo "Usage: fisher [<command>] [<plugins>]"
echo echo
echo "where <command> can be one of:" echo "where <command> is one of:"
echo " "$u"i"$nc"nstall (default)" echo " "$u"i"$nc"nstall (default)"
echo " "$u"u"$nc"pdate" echo " "$u"u"$nc"pdate"
echo " "$u"r"$nc"m" echo " "$u"r"$nc"m"
@ -1824,6 +1864,13 @@ function __fisher_usage
end 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 function __fisher_help -a cmd number
if test -z "$argv" if test -z "$argv"
set -l page "$fisher_cache/fisher.1" set -l page "$fisher_cache/fisher.1"
@ -1851,9 +1898,13 @@ function __fisher_help -a cmd number
if not man "$page" ^ /dev/null if not man "$page" ^ /dev/null
if test -d "$fisher_config/$cmd" 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 else
__fisher_log error "Skipped @$cmd@" $__fisher_stderr __fisher_log error "You can only check plugins you've installed." $__fisher_stderr
end end
return 1 return 1