From 66bff0b5ef46550866c959bb745a61363dc5331f Mon Sep 17 00:00:00 2001 From: Timmy Keller Date: Thu, 16 Jun 2022 15:19:16 -0500 Subject: zplug commit --- zsh/zscripts/zplug.zsh | 116 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100755 zsh/zscripts/zplug.zsh (limited to 'zsh/zscripts/zplug.zsh') diff --git a/zsh/zscripts/zplug.zsh b/zsh/zscripts/zplug.zsh new file mode 100755 index 0000000..e1fa3c6 --- /dev/null +++ b/zsh/zscripts/zplug.zsh @@ -0,0 +1,116 @@ +#!/usr/bin/env zsh + +local zplugs="${ZDOTDIR:-~/.}${ZDOTDIR+/}zplugs" +local zplugins="${ZDATADIR:-.local/share/zsh}/zplugins" + +unsetopt nomatch # Disable error message when no file can be found + +function __zplugInstall() { + touch "$zplugs" + local pluglist=( `cat "$zplugs"` ) + shift + for plug in "$@"; do + pluglist[$((${#pluglist[@]}+1))]=$plug + done + + mkdir -p "$zplugins" + + for plug in ${pluglist[@]}; do + [ -d "$zplugins/$(basename -s'.git' "$plug")" ] && continue + if ! `git -C "$zplugins" clone "$plug" "$(basename -s'.git' "$plug")"`; then + vared -p "Remove \"$plug\"? [y|n]: " -c confirm + [ "$confirm" =~ (y|yes) ] && pluglist=(${pluglist#$plug}) \ + && echo "Repo Deleted" \ + || echo "Repo Kept" + confirm="" + fi + echo + done + for plug in ${pluglist[@]}; do echo "$plug"; done | sort -u > "$zplugs" + echo "All plugins installed and saved to $zplugs!\nDone" +} + +function __zplugUninstall() { + mkdir -p "$zplugins" + local pluglist=( `cat "$zplugs"` ) + [ -z "$pluglist" ] && echo "No packages are installed!" && return + echo "Listing all packages in $zplugins ..." + local pluglistbn=() + for i in {1..${#pluglist[@]}}; do + pluglistbn[$i]="$(basename -s'.git' "${pluglist[$i]}")" + printf '%3d) %s\n' $i "${pluglistbn[$i]}" + done + + echo + vared -p "Choose zsh plugin(s) to remove: " -c plugids + + echo "\nListing selected plugins:" + for plugid in $=plugids; do + if [ -z ${pluglist[$plugid]} ]; then + echo "Error: input \"$plugid\" is not a valid plugin identifier" + return + fi + printf " " + echo "${pluglistbn[$plugid]}" + done + + echo + vared -p "Really remove all of these plugins? [y|n]: " -c confirm + case $confirm in + y|yes) ;; + n|no) echo "Aborted" && return ;; + *) echo "Input not understood\nAborted" && return ;; + esac + for plugid in $=plugids; do + printf " " + rm -vrf "$zplugins/${pluglistbn[$plugid]}" + pluglist[$plugid]="" + done + for plug in ${pluglist[@]}; do echo "$plug"; done | sort -u > "$zplugs" + echo "\nDone" +} + +function __zplugUpgrade() { + mkdir -p "$zplugins" + echo "Upgrading all packages...\n" + for plugdir in "$zplugins"/*; do; + basename "$plugdir" + git -C "$plugdir" pull; + echo + done + echo "Done" +} + +function __zplugList() { + mkdir -p "$zplugins" + echo "Listing all packages...\n" + ls "$zplugins" | nl -s') ' -w3 + echo "\nDone" +} + +function __zplugHelp() { + echo "Usage: zplug [install/add/i|uninstall/remove/r|upgrade/update/u|list/l|help/h] + zplug install, add, i [packages] : Add any packages listed to $zplugs file and install all plugins + zplug uninstall, remove, r : Interactively remove packages. Removes package from config file as well + zplug upgrade, update, u : Update all installed packages + zplug list, l : List all installed packages + zplug help, h : Show this help menu + + To use zplug, just put \"zplugInitialize\" as the last line of your zshrc!" +} + +function zplug() { + local cmd=${1:-h} + case $cmd in + install|add|i) __zplugInstall $@ ;; + uninstall|remove|r) __zplugUninstall ;; + upgrade|update|u) __zplugUpgrade ;; + list|l) __zplugList ;; + help|h) __zplugHelp ;; + *) echo "zplug: input \"$1\" not recognized!" && __zplugHelp ;; + esac +} + +function zplugInitialize() { + for plugin in "$zplugins"/*/*.zsh; do source "$plugin"; done +} -- cgit v1.2.3