]> git.armaanb.net Git - zpe.git/blob - zpe.zsh
add zpe-clean, zpe-source
[zpe.git] / zpe.zsh
1 #!/usr/bin/env zsh
2 # The ZPE plugin helper. Copyright 2020 Armaan Bhojwani, MIT License
3
4 config_dir=$HOME/.config/zpe/
5 plugin_dir=$HOME/.config/zpe/plugins/
6
7 zpe-meta-pre() {
8   [[ -d "$config_dir" ]] || mkdir -p "$config_dir"
9   touch "$config_dir"repositories
10   [[ -d "$plugin_dir" ]] || mkdir -p "$plugin_dir"
11   [[ -x git ]] && echo "please install git"
12   [[ -x find ]] && echo "please install find"
13   [[ -x diff ]] && echo "please install diff"
14 }
15
16 zpe-clone() {
17   zpe-meta-pre
18   while read line; do
19     git -C "$plugin_dir" clone $line --depth=1 2> /dev/null
20   done < "${config_dir}repositories"
21   echo "all plugins are downloaded"
22 }
23
24 zpe-pull() {
25   zpe-meta-pre
26   local find_dirs=$(find "$plugin_dir" -name ".git" -type d)
27   echo $find_dirs | xargs -P10 -I{} git --git-dir={} config pull.ff only
28   echo $find_dirs |  xargs  -P10 -I{} git --git-dir={} pull > /dev/null
29   echo "all plugins are up to date"
30 }
31
32 zpe-clean() {
33   [[ -d /tmp/zpe ]] || mkdir /tmp/zpe/
34   find $plugin_dir -maxdepth 1 -type d -exec git -C {} config --get remote.origin.url \; > /tmp/zpe/installed-urls
35   comm -23 <(sort /tmp/zpe/installed-urls) <(sort "$config_dir"repositories) >> /tmp/zpe/diff
36
37   for d in "$plugin_dir"*; do
38     while read line; do
39       grep -l $line "$d"/.git/config >> /tmp/zpe/deletable
40     done < /tmp/zpe/diff
41   done
42
43   while read line2; do
44     xargs rm -rf <<< $(echo $line2 | sed 's/\/.git\/config//g')
45   done < /tmp/zpe/deletable
46 }
47
48 zpe-source() {
49   source "$plugin_dir"/$1
50 }