#!/usr/bin/env zsh # The ZPE plugin helper. Copyright 2020 Armaan Bhojwani, MIT License config_dir=$HOME/.config/zpe/ plugin_dir=$HOME/.config/zpe/plugins/ zpe-meta-pre() { [[ -d "$config_dir" ]] || mkdir -p "$config_dir" touch "$config_dir"repositories [[ -d "$plugin_dir" ]] || mkdir -p "$plugin_dir" [[ -x git ]] && echo "please install git" [[ -x find ]] && echo "please install find" [[ -x diff ]] && echo "please install diff" } zpe-clone() { zpe-meta-pre while read line; do git -C "$plugin_dir" clone $line --depth=1 2> /dev/null done < "${config_dir}repositories" echo "all plugins are downloaded" } zpe-pull() { zpe-meta-pre local find_dirs=$(find "$plugin_dir" -name ".git" -type d) echo $find_dirs | xargs -P10 -I{} git --git-dir={} config pull.ff only echo $find_dirs | xargs -P10 -I{} git --git-dir={} pull > /dev/null echo "all plugins are up to date" } zpe-clean() { [[ -d /tmp/zpe ]] || mkdir /tmp/zpe/ find $plugin_dir -maxdepth 1 -type d -exec git -C {} config --get remote.origin.url \; > /tmp/zpe/installed-urls comm -23 <(sort /tmp/zpe/installed-urls) <(sort "$config_dir"repositories) >> /tmp/zpe/diff for d in "$plugin_dir"*; do while read line; do grep -l $line "$d"/.git/config >> /tmp/zpe/deletable done < /tmp/zpe/diff done while read line2; do xargs rm -rf <<< $(echo $line2 | sed 's/\/.git\/config//g') done < /tmp/zpe/deletable } zpe-source() { source "$plugin_dir"/$1 }