From e0e16763c7e230d9414100cb9c6a5b52d2afe13d Mon Sep 17 00:00:00 2001 From: FollieHiyuki Date: Sat, 17 Apr 2021 15:40:45 +0300 Subject: [PATCH] fish: update fisher, various changes --- deploy.sh | 2 +- home/.bashrc-bloated | 2 +- home/.config/dunst/dunstrc | 2 +- home/.config/fish/completions/fisher.fish | 7 + home/.config/fish/conf.d/aliases.fish | 1 - home/.config/fish/conf.d/env.fish | 1 + home/.config/fish/functions/fisher.fish | 251 +++++++++++----------- home/.config/wget/wgetrc | 1 + home/.config/zsh/.zshenv | 1 + home/.config/zsh/aliases.zsh | 1 - 10 files changed, 140 insertions(+), 129 deletions(-) create mode 100644 home/.config/fish/completions/fisher.fish create mode 100644 home/.config/wget/wgetrc diff --git a/deploy.sh b/deploy.sh index 06bd2e7..60c842e 100755 --- a/deploy.sh +++ b/deploy.sh @@ -30,7 +30,6 @@ case ${shell} in cp -rfv ./home/.bashrc ~/.bashrc cp -rfv ./home/.bash_profile ~/.bash_profile cp -rfv ./home/.config/fish/ ~/.config/fish/ - mkdir -pv ~/.config/fish/completions ;; *) exit ;; @@ -120,6 +119,7 @@ cp -rfv ./home/.config/tmux/ ~/.config/tmux/ cp -rfv ./home/.config/translate-shell/ ~/.config/translate-shell/ # cp -rfv ./home/.config/tridactyl/ ~/.config/tridactyl/ cp -rfv ./home/.config/vifm/ ~/.config/vifm/ +cp -rfv ./home/.config/wget/ ~/.config/wget/ cp -rfv ./home/.config/youtube-dl/ ~/.config/youtube-dl/ cp -rfv ./home/.config/ytmdl/ ~/.config/ytmdl/ cp -rfv ./home/.config/zathura/ ~/.config/zathura/ diff --git a/home/.bashrc-bloated b/home/.bashrc-bloated index 8383e42..9c8f314 100644 --- a/home/.bashrc-bloated +++ b/home/.bashrc-bloated @@ -39,6 +39,7 @@ export IPYTHONDIR=$XDG_CONFIG_HOME/ipython export XAUTHORITY=$XDG_RUNTIME_DIR/Xauthority export XINITRC=$XDG_CONFIG_HOME/X11/xinitrc export XSERVERRC=$XDG_CONFIG_HOME/X11/xserverrc +export WGETRC=$XDG_CONFIG_HOME/wget/wgetrc # env export PAGER="less -R" @@ -374,7 +375,6 @@ export PATH=$HOME/.local/bin:$HOME/.local/bin/fzf:$HOME/.local/share/bash/basher # /_/ |_/_/ /_/ \__,_/ /____/ # # remap -alias doas="doas --" alias p="pulsemixer" alias ls="exa -lF --icons --sort=type" alias la="exa -laF --icons --sort=type" diff --git a/home/.config/dunst/dunstrc b/home/.config/dunst/dunstrc index 1791dff..e811186 100644 --- a/home/.config/dunst/dunstrc +++ b/home/.config/dunst/dunstrc @@ -29,7 +29,7 @@ # the top and down respectively. # The width can be negative. In this case the actual width is the # screen width minus the width defined in within the geometry option. - geometry = "300x5-5+30" + geometry = "300x5-20+30" # Turn on the progess bar progress_bar = true diff --git a/home/.config/fish/completions/fisher.fish b/home/.config/fish/completions/fisher.fish new file mode 100644 index 0000000..6d23ce4 --- /dev/null +++ b/home/.config/fish/completions/fisher.fish @@ -0,0 +1,7 @@ +complete --command fisher --exclusive --long help --description "Print help" +complete --command fisher --exclusive --long version --description "Print version" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" +complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" diff --git a/home/.config/fish/conf.d/aliases.fish b/home/.config/fish/conf.d/aliases.fish index 7eb29e1..eedd19c 100644 --- a/home/.config/fish/conf.d/aliases.fish +++ b/home/.config/fish/conf.d/aliases.fish @@ -5,7 +5,6 @@ # /_/ |_/_/ /_/ \__,_/ /____/ # # remap -alias doas='doas --' abbr p pulsemixer alias startx='startx $HOME/.config/X11/xinitrc' alias fehwpp="feh --no-fehbg --bg-fill --randomize ~/Pictures/Wallpapers/*" diff --git a/home/.config/fish/conf.d/env.fish b/home/.config/fish/conf.d/env.fish index c7ef586..9b58cf1 100644 --- a/home/.config/fish/conf.d/env.fish +++ b/home/.config/fish/conf.d/env.fish @@ -45,6 +45,7 @@ set -gx JUPYTER_CONFIG_DIR $XDG_CONFIG_HOME/jupyter set -gx XAUTHORITY $XDG_RUNTIME_DIR/Xauthority set -gx XINITRC $XDG_CONFIG_HOME/X11/xinitrc set -gx XSERVERRC $XDG_CONFIG_HOME/X11/xserverrc +set -gx WGETRC $XDG_CONFIG_HOME/wget/wgetrc # env set -gx EDITOR nvim diff --git a/home/.config/fish/functions/fisher.fish b/home/.config/fish/functions/fisher.fish index c79c60d..a1fb6cf 100644 --- a/home/.config/fish/functions/fisher.fish +++ b/home/.config/fish/functions/fisher.fish @@ -1,206 +1,209 @@ -set -g fisher_version 4.1.0 - -function fisher -a cmd -d "fish plugin manager" - set -q fisher_path || set -l fisher_path $__fish_config_dir - set -l fish_plugins $__fish_config_dir/fish_plugins +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.3.0 + set --local fish_plugins $__fish_config_dir/fish_plugins switch "$cmd" case -v --version echo "fisher, version $fisher_version" case "" -h --help - echo "usage: fisher install install plugins" - echo " fisher remove remove installed plugins" - echo " fisher update update installed plugins" - echo " fisher update update all installed plugins" - echo " fisher list [] list installed plugins matching regex" - echo "options:" - echo " -v or --version print fisher version" - echo " -h or --help print this help message" + echo "Usage: fisher install Install plugins" + echo " fisher remove Remove installed plugins" + echo " fisher update Update installed plugins" + echo " fisher update Update all installed plugins" + echo " fisher list [] List installed plugins matching regex" + echo "Options:" + echo " -v or --version Print version" + echo " -h or --help Print this help message" case ls list string match --entire --regex -- "$argv[2]" $_fisher_plugins case install update remove - isatty || read -laz stdin && set -a argv $stdin - set -l install_plugins - set -l update_plugins - set -l remove_plugins - set -l arg_plugins $argv[2..-1] - set -l old_plugins $_fisher_plugins - set -l new_plugins + isatty || read --local --null --array stdin && set --append argv $stdin - if not set -q argv[2] - if test "$cmd" != update || test ! -e $fish_plugins - echo "fisher: not enough arguments for command: \"$cmd\"" >&2 && return 1 + set --local install_plugins + set --local update_plugins + set --local remove_plugins + set --local arg_plugins $argv[2..-1] + set --local old_plugins $_fisher_plugins + set --local new_plugins + + if ! set --query argv[2] + if test "$cmd" != update + echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1 + else if test ! -e $fish_plugins + echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1 end - set arg_plugins (string trim <$fish_plugins) + set arg_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins) end for plugin in $arg_plugins test -e "$plugin" && set plugin (realpath $plugin) - contains -- "$plugin" $new_plugins || set -a new_plugins $plugin + contains -- "$plugin" $new_plugins || set --append new_plugins $plugin end - if set -q argv[2] + if set --query argv[2] for plugin in $new_plugins if contains -- "$plugin" $old_plugins - if test "$cmd" = remove - set -a remove_plugins $plugin - else - set -a update_plugins $plugin - end - else if test "$cmd" != install - echo "fisher: plugin not installed: \"$plugin\"" >&2 && return 1 + test "$cmd" = remove && + set --append remove_plugins $plugin || + set --append update_plugins $plugin + else if test "$cmd" = install + set --append install_plugins $plugin else - set -a install_plugins $plugin + echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1 end end else for plugin in $new_plugins - if contains -- "$plugin" $old_plugins - set -a update_plugins $plugin - else - set -a install_plugins $plugin - end + contains -- "$plugin" $old_plugins && + set --append update_plugins $plugin || + set --append install_plugins $plugin end for plugin in $old_plugins - if not contains -- "$plugin" $new_plugins - set -a remove_plugins $plugin - end + contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin end end - set -l pid_list - set -l source_plugins - set -l fetch_plugins $update_plugins $install_plugins - echo -e "\x1b[1mfisher $cmd version $fisher_version\x1b[22m" + set --local pid_list + set --local source_plugins + set --local fetch_plugins $update_plugins $install_plugins + echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal) for plugin in $fetch_plugins - set -l source (command mktemp -d) - set -a source_plugins $source + set --local source (command mktemp -d) + set --append source_plugins $source command mkdir -p $source/{completions,conf.d,functions} - fish -c " - if test -e $plugin - command cp -Rf $plugin/* $source - else - set temp (command mktemp -d) - set name (string split \@ $plugin) || set name[2] HEAD - set url https://codeload.github.com/\$name[1]/tar.gz/\$name[2] - set -q fisher_user_api_token && set opts -u $fisher_user_api_token - - echo -e \"fetching \x1b[4m\$url\x1b[24m\" - if command curl $opts -Ss -w \"\" \$url 2>&1 | command tar -xzf- -C \$temp 2>/dev/null - command cp -Rf \$temp/*/* $source + fish --command " + if test -e $plugin + command cp -Rf $plugin/* $source else - echo fisher: invalid plugin name or host unavailable: \\\"$plugin\\\" >&2 - command rm -rf $source + set temp (command mktemp -d) + set name (string split \@ $plugin) || set name[2] HEAD + set url https://codeload.github.com/\$name[1]/tar.gz/\$name[2] + + echo Fetching (set_color --underline)\$url(set_color normal) + + if curl --silent \$url | tar -xzC \$temp -f - 2>/dev/null + command cp -Rf \$temp/*/* $source + else + echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2 + command rm -rf $source + end + command rm -rf \$temp end - command rm -rf \$temp - end - test ! -e $source && exit - command mv -f (string match --entire --regex -- \.fish\\\$ $source/*) $source/functions 2>/dev/null" & + set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files + " & - set -a pid_list (jobs --last --pid) + set --append pid_list (jobs --last --pid) end wait $pid_list 2>/dev/null for plugin in $fetch_plugins - if set -l source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source - if set -l index (contains --index -- "$plugin" $install_plugins) - set -e install_plugins[$index] + if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source + if set --local index (contains --index -- "$plugin" $install_plugins) + set --erase install_plugins[$index] else - set -e update_plugins[(contains --index -- "$plugin" $update_plugins)] + set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)] end end end for plugin in $update_plugins $remove_plugins - if set -l index (contains --index -- "$plugin" $_fisher_plugins) - set -l plugin_files_var _fisher_(string escape --style=var $plugin)_files + if set --local index (contains --index -- "$plugin" $_fisher_plugins) + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files - if contains -- "$plugin" $remove_plugins && set --erase _fisher_plugins[$index] - for file in (string match --entire --regex -- "conf\.d/" $$plugin_files_var) - emit (string replace --all --regex -- '^.*/|\.fish$' "" $file)_uninstall + if contains -- "$plugin" $remove_plugins + for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var) + emit {$name}_uninstall end - echo -es "removing \x1b[1m$plugin\x1b[22m" \n" "$$plugin_files_var + printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var end command rm -rf $$plugin_files_var - functions --erase (string match --entire --regex -- "functions/" $$plugin_files_var \ - | string replace --all --regex -- '^.*/|\.fish$' "") + functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var) + + for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var) + complete --erase --command $name + end + + set --erase _fisher_plugins[$index] set --erase $plugin_files_var end end - if set -q update_plugins[1] || set -q install_plugins[1] + if set --query update_plugins[1] || set --query install_plugins[1] command mkdir -p $fisher_path/{functions,conf.d,completions} end for plugin in $update_plugins $install_plugins - set -l source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] - set -l files $source/{functions,conf.d,completions}/* - set -l plugin_files_var _fisher_(string escape --style=var $plugin)_files - set -q files[1] && set -U $plugin_files_var (string replace $source $fisher_path $files) + set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] + set --local files $source/{functions,conf.d,completions}/* - for file in (string replace -- $source "" $files) + if set --local index (contains --index -- $plugin $install_plugins) + set --local user_files $fisher_path/{functions,conf.d,completions}/* + set --local conflict_files + + for file in (string replace -- $source/ $fisher_path/ $files) + contains -- $file $user_files && set --append conflict_files $file + end + + if set --query conflict_files[1] && set --erase install_plugins[$index] + echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2 + continue + end + end + + for file in (string replace -- $source/ "" $files) command cp -Rf $source/$file $fisher_path/$file end - contains -- $plugin $_fisher_plugins || set -Ua _fisher_plugins $plugin - contains -- $plugin $install_plugins && set -l event "install" || set -l event "update" - echo -es "installing \x1b[1m$plugin\x1b[22m" \n" "$$plugin_files_var + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files) - for file in (string match --entire --regex -- "[functions/|conf\.d/].*fish\$" $$plugin_files_var) + contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin + contains -- $plugin $install_plugins && set --local event install || set --local event update + + printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var + + for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var) source $file - if string match --quiet --regex -- "conf\.d/" $file - emit (string replace --all --regex -- '^.*/|\.fish$' "" $file)_$event + if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file) + emit {$name}_$event end end end command rm -rf $source_plugins - functions -q fish_prompt || source $__fish_data_dir/functions/fish_prompt.fish - set -q _fisher_plugins[1] || set -e _fisher_plugins - set -q _fisher_plugins && printf "%s\n" $_fisher_plugins >$fish_plugins || command rm -f $fish_plugins + set --query _fisher_plugins[1] || set --erase _fisher_plugins + set --query _fisher_plugins && + printf "%s\n" $_fisher_plugins >$fish_plugins || + command rm -f $fish_plugins - set -l total (count $install_plugins) (count $update_plugins) (count $remove_plugins) + set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins) test "$total" != "0 0 0" && echo (string join ", " ( - test $total[1] = 0 || echo "installed $total[1]") ( - test $total[2] = 0 || echo "updated $total[2]") ( - test $total[3] = 0 || echo "removed $total[3]") - ) "plugin/s" + test $total[1] = 0 || echo "Installed $total[1]") ( + test $total[2] = 0 || echo "Updated $total[2]") ( + test $total[3] = 0 || echo "Removed $total[3]") + ) plugin/s case \* - echo "fisher: unknown flag or command: \"$cmd\" (see `fisher -h`)" >&2 && return 1 + echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1 end end ## Migrations ## -if functions -q _fisher_self_update || test -e $__fish_config_dir/fishfile # 3.x - function _fisher_migrate - function _fisher_complete - fisher install jorgebucaran/fisher >/dev/null 2>/dev/null - functions --erase _fisher_complete - end - set -q XDG_DATA_HOME || set XDG_DATA_HOME ~/.local/share - set -q XDG_CACHE_HOME || set XDG_CACHE_HOME ~/.cache - set -q XDG_CONFIG_HOME || set XDG_CONFIG_HOME ~/.config - set -q fisher_path || set fisher_path $__fish_config_dir - test -e $__fish_config_dir/fishfile && command awk '/#|^gitlab|^ *$/ { next } $0' <$__fish_config_dir/fishfile >>$__fish_config_dir/fish_plugins - command rm -rf $__fish_config_dir/fishfile $fisher_path/{conf.d,completions}/fisher.fish {$XDG_DATA_HOME,$XDG_CACHE_HOME,$XDG_CONFIG_HOME}/fisher - functions --erase _fisher_migrate _fisher_copy_user_key_bindings _fisher_ls _fisher_fmt _fisher_self_update _fisher_self_uninstall _fisher_commit _fisher_parse _fisher_fetch _fisher_add _fisher_rm _fisher_jobs _fisher_now _fisher_help - fisher update +function _fisher_fish_postexec --on-event fish_postexec + if functions --query _fisher_list + fisher update >/dev/null 2>/dev/null + set --query XDG_DATA_HOME || set --local XDG_DATA_HOME ~/.local/share + test -e $XDG_DATA_HOME/fisher && command rm -rf $XDG_DATA_HOME/fisher + functions --erase _fisher_list _fisher_plugin_parse + set --erase fisher_data end - echo "upgrading to fisher $fisher_version -- learn more at" (set_color --bold --underline)"https://git.io/fisher-4"(set_color normal) - _fisher_migrate >/dev/null 2>/dev/null -else if functions -q _fisher_list # 4.0 - set -q XDG_DATA_HOME || set -l XDG_DATA_HOME ~/.local/share - test -e $XDG_DATA_HOME/fisher && command rm -rf $XDG_DATA_HOME/fisher - functions --erase _fisher_list _fisher_plugin_parse - echo -n "upgrading to fisher $fisher_version new in-memory state.." - fisher update >/dev/null 2>/dev/null - echo -ne "done\r\n" -end \ No newline at end of file + functions --erase _fisher_fish_postexec +end diff --git a/home/.config/wget/wgetrc b/home/.config/wget/wgetrc new file mode 100644 index 0000000..4fd7999 --- /dev/null +++ b/home/.config/wget/wgetrc @@ -0,0 +1 @@ +hsts-file=~/.cache/wget-hsts diff --git a/home/.config/zsh/.zshenv b/home/.config/zsh/.zshenv index 21379c6..ac7d36f 100644 --- a/home/.config/zsh/.zshenv +++ b/home/.config/zsh/.zshenv @@ -35,6 +35,7 @@ export JUPYTER_CONFIG_DIR=$XDG_CONFIG_HOME/jupyter export XAUTHORITY=$XDG_RUNTIME_DIR/Xauthority export XINITRC=$XDG_CONFIG_HOME/X11/xinitrc export XSERVERRC=$XDG_CONFIG_HOME/X11/xserverrc +export WGETRC=$XDG_CONFIG_HOME/wget/wgetrc # env export PAGER="less -R" diff --git a/home/.config/zsh/aliases.zsh b/home/.config/zsh/aliases.zsh index bf4e115..696c06c 100644 --- a/home/.config/zsh/aliases.zsh +++ b/home/.config/zsh/aliases.zsh @@ -1,5 +1,4 @@ # remap -alias doas="doas --" alias p="pulsemixer" alias startx="startx $HOME/.config/X11/xinitrc" alias fehwpp="feh --no-fehbg --bg-fill --randomize ~/Pictures/Wallpapers/*"