diff --git a/fisher.fish b/fisher.fish index e5d4b55..19262ca 100644 --- a/fisher.fish +++ b/fisher.fish @@ -45,7 +45,7 @@ function fisher -a cmd -d "fish package manager" case ls set -e argv[1] if test -s "$fisher_path/fishfile" - set -l file (_fisher_fmt <$fisher_path/fishfile | _fisher_diff R) + set -l file (_fisher_fmt <$fisher_path/fishfile | _fisher_parse -R) _fisher_ls | _fisher_fmt | command awk -v FILE="$file" " BEGIN { for (n = split(FILE, f); ++i <= n;) file[f[i]] } \$0 in file && /$argv[1]/ " | command sed "s|^$HOME|~|" @@ -200,7 +200,7 @@ function _fisher_commit -a cmd command rm -Rf $fisher_config command mkdir -p $fisher_config - set -l next_pkgs (_fisher_fmt <$fishfile | _fisher_diff R $cmd (printf "%s\n" $argv | _fisher_fmt)) + set -l next_pkgs (_fisher_fmt <$fishfile | _fisher_parse -R $cmd (printf "%s\n" $argv | _fisher_fmt)) set -l new_pkgs (_fisher_fetch $next_pkgs) set -l old_pkgs for pkg in $rm_pkgs @@ -210,7 +210,7 @@ function _fisher_commit -a cmd end if test -z "$new_pkgs$old_pkgs$rm_pkgs$next_pkgs" - echo "nothing to commit -- try adding some packages" >&2 + echo "fisher: nothing to commit -- try adding some packages" >&2 return 1 end @@ -225,7 +225,7 @@ function _fisher_commit -a cmd end end - printf "%s\n" (_fisher_fmt <$fishfile | _fisher_diff W $cmd $actual_pkgs | command sed "s|^$HOME|~|") >$fishfile + printf "%s\n" (_fisher_fmt <$fishfile | _fisher_parse -W $cmd $actual_pkgs | command sed "s|^$HOME|~|") >$fishfile _fisher_complete @@ -240,19 +240,19 @@ function _fisher_commit -a cmd ' >&2 end -function _fisher_diff -a diff cmd +function _fisher_parse -a mode cmd set -e argv[1..2] - command awk -v FS="[[:space:]]*#" -v DIFF="$diff" -v CMD="$cmd" -v ARGSTR="$argv" ' + command awk -v FS="[[:space:]]*#" -v MODE="$mode" -v CMD="$cmd" -v ARGSTR="$argv" ' BEGIN { for (n = split(ARGSTR, a, " "); i++ < n;) pkgs[getkey(a[i])] = a[i] } { k = getkey($1) } - DIFF == "R" && !(k in pkgs) && $0 = $1 - DIFF == "W" && (/^#/ || !NF || (k in pkgs && $0 = pkgs[k]) || CMD != "rm") - DIFF == "W" || CMD == "rm" { delete pkgs[k] } + MODE == "-R" && !(k in pkgs) && $0 = $1 + MODE == "-W" && (/^#/ || !NF || (k in pkgs && $0 = pkgs[k]) || CMD != "rm") + MODE == "-W" || CMD == "rm" { delete pkgs[k] } END { for (k in pkgs) { - if (CMD != "rm" || DIFF == "W") print pkgs[k] + if (CMD != "rm" || MODE == "-W") print pkgs[k] else print "package not in fishfile: \""k"\"" > "/dev/stderr" } } @@ -281,7 +281,7 @@ function _fisher_fetch continue end - command awk -v NAME=$i -v FS=/ ' + command awk -v NAME="$i" -v FS=/ ' BEGIN { if (split(NAME, tmp, /@+|:/) > 2) { if (tmp[4]) sub("@"tmp[4], "", NAME) @@ -353,7 +353,7 @@ function _fisher_deps if test ! -d "$pkg" echo $pkg else if test -s "$pkg/fishfile" - _fisher_deps (_fisher_fmt < $pkg/fishfile | _fisher_diff R) + _fisher_deps (_fisher_fmt < $pkg/fishfile | _fisher_parse -R) end end end