Commit aa510273dba10d47e7dbbe6616caef44e2738c55

Authored by Shrikant Sharat
1 parent a91386310e

Removed useless logic in a private function.

Showing 1 changed file with 4 additions and 11 deletions Inline Diff

1 #!/bin/zsh 1 #!/bin/zsh
2 2
3 # Each line in this string has the following entries separated by a space 3 # Each line in this string has the following entries separated by a space
4 # character. 4 # character.
5 # <repo-url>, <plugin-location>, <bundle-type> 5 # <repo-url>, <plugin-location>, <bundle-type>
6 # FIXME: Is not kept local by zsh! 6 # FIXME: Is not kept local by zsh!
7 local _ANTIGEN_BUNDLE_RECORD="" 7 local _ANTIGEN_BUNDLE_RECORD=""
8 8
9 # Syntaxes 9 # Syntaxes
10 # bundle <url> [<loc>=/] 10 # bundle <url> [<loc>=/]
11 bundle () { 11 bundle () {
12 12
13 # Bundle spec arguments' default values. 13 # Bundle spec arguments' default values.
14 local url="$ANTIGEN_DEFAULT_REPO_URL" 14 local url="$ANTIGEN_DEFAULT_REPO_URL"
15 local loc=/ 15 local loc=/
16 local btype=plugin 16 local btype=plugin
17 17
18 # Set spec values based on the positional arguments. 18 # Set spec values based on the positional arguments.
19 local position_args='url loc' 19 local position_args='url loc'
20 local i=1 20 local i=1
21 while ! [[ -z $1 || $1 == --*=* ]]; do 21 while ! [[ -z $1 || $1 == --*=* ]]; do
22 local arg_name="$(echo "$position_args" | cut -d\ -f$i)" 22 local arg_name="$(echo "$position_args" | cut -d\ -f$i)"
23 local arg_value="$1" 23 local arg_value="$1"
24 eval "local $arg_name='$arg_value'" 24 eval "local $arg_name='$arg_value'"
25 shift 25 shift
26 i=$(($i + 1)) 26 i=$(($i + 1))
27 done 27 done
28 28
29 # Check if url is just the plugin name. Super short syntax. 29 # Check if url is just the plugin name. Super short syntax.
30 if [[ "$url" != */* ]]; then 30 if [[ "$url" != */* ]]; then
31 loc="plugins/$url" 31 loc="plugins/$url"
32 url="$ANTIGEN_DEFAULT_REPO_URL" 32 url="$ANTIGEN_DEFAULT_REPO_URL"
33 fi 33 fi
34 34
35 # Set spec values from keyword arguments, if any. The remaining arguments 35 # Set spec values from keyword arguments, if any. The remaining arguments
36 # are all assumed to be keyword arguments. 36 # are all assumed to be keyword arguments.
37 while [[ $1 == --*=* ]]; do 37 while [[ $1 == --*=* ]]; do
38 local arg_name="$(echo "$1" | cut -d= -f1 | sed 's/^--//')" 38 local arg_name="$(echo "$1" | cut -d= -f1 | sed 's/^--//')"
39 local arg_value="$(echo "$1" | cut -d= -f2)" 39 local arg_value="$(echo "$1" | cut -d= -f2)"
40 eval "local $arg_name='$arg_value'" 40 eval "local $arg_name='$arg_value'"
41 shift 41 shift
42 done 42 done
43 43
44 # Resolve the url. 44 # Resolve the url.
45 if [[ $url != git://* && $url != https://* ]]; then 45 if [[ $url != git://* && $url != https://* ]]; then
46 url="${url%.git}" 46 url="${url%.git}"
47 url="https://github.com/$url.git" 47 url="https://github.com/$url.git"
48 fi 48 fi
49 49
50 # Add it to the record. 50 # Add it to the record.
51 _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$url $loc $btype" 51 _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$url $loc $btype"
52 52
53 -antigen-ensure-repo "$url" 53 -antigen-ensure-repo "$url"
54 54
55 bundle-load "$url" "$loc" "$btype" 55 bundle-load "$url" "$loc" "$btype"
56 56
57 } 57 }
58 58
59 -antigen-get-clone-dir () { 59 -antigen-get-clone-dir () {
60 # Takes a repo url and gives out the path that this url needs to be cloned 60 # Takes a repo url and gives out the path that this url needs to be cloned
61 # to. Doesn't actually clone anything. 61 # to. Doesn't actually clone anything.
62 # TODO: Memoize? 62 # TODO: Memoize?
63 echo -n $ADOTDIR/repos/ 63 echo -n $ADOTDIR/repos/
64 echo "$1" | sed \ 64 echo "$1" | sed \
65 -e 's/\.git$//' \ 65 -e 's/\.git$//' \
66 -e 's./.-SLASH-.g' \ 66 -e 's./.-SLASH-.g' \
67 -e 's.:.-COLON-.g' 67 -e 's.:.-COLON-.g'
68 } 68 }
69 69
70 -antigen-get-clone-url () { 70 -antigen-get-clone-url () {
71 # Takes a repo's clone dir and gives out the repo's original url that was 71 # Takes a repo's clone dir and gives out the repo's original url that was
72 # used to create the given directory path. 72 # used to create the given directory path.
73 # TODO: Memoize? 73 # TODO: Memoize?
74 echo "$1" | sed \ 74 echo "$1" | sed \
75 -e "s:^$ADOTDIR/repos/::" \ 75 -e "s:^$ADOTDIR/repos/::" \
76 -e 's/$/.git/' \ 76 -e 's/$/.git/' \
77 -e 's.-SLASH-./.g' \ 77 -e 's.-SLASH-./.g' \
78 -e 's.-COLON-.:.g' 78 -e 's.-COLON-.:.g'
79 } 79 }
80 80
81 -antigen-ensure-repo () { 81 -antigen-ensure-repo () {
82 82
83 local update=false 83 local update=false
84 if [[ $1 == --update ]]; then 84 if [[ $1 == --update ]]; then
85 update=true 85 update=true
86 shift 86 shift
87 fi 87 fi
88 88
89 local handled_repos=""
90 local install_bundles=""
91
92 local url="$1" 89 local url="$1"
93 local clone_dir="$(-antigen-get-clone-dir $url)" 90 local clone_dir="$(-antigen-get-clone-dir $url)"
94 91
95 if ! echo "$handled_repos" | grep -Fqm1 "$url"; then 92 if [[ ! -d $clone_dir ]]; then
96 if [[ ! -d $clone_dir ]]; then 93 git clone "$url" "$clone_dir"
97 git clone "$url" "$clone_dir" 94 elif $update; then
98 elif $update; then 95 git --git-dir "$clone_dir/.git" pull
99 git --git-dir "$clone_dir/.git" pull
100 fi
101
102 handled_repos="$handled_repos\n$url"
103 fi 96 fi
104 97
105 } 98 }
106 99
107 bundle-update () { 100 bundle-update () {
108 # Update your bundles, i.e., `git pull` in all the plugin repos. 101 # Update your bundles, i.e., `git pull` in all the plugin repos.
109 -bundle-echo-record | awk '{print $1}' | sort -u | while read url; do 102 -bundle-echo-record | awk '{print $1}' | sort -u | while read url; do
110 -antigen-ensure-repo --update "$url" 103 -antigen-ensure-repo --update "$url"
111 done 104 done
112 } 105 }
113 106
114 bundle-load () { 107 bundle-load () {
115 108
116 local url="$1" 109 local url="$1"
117 local location="$(-antigen-get-clone-dir "$url")/$2" 110 local location="$(-antigen-get-clone-dir "$url")/$2"
118 local btype="$3" 111 local btype="$3"
119 112
120 if [[ $btype == theme ]]; then 113 if [[ $btype == theme ]]; then
121 114
122 # Of course, if its a theme, the location would point to the script 115 # Of course, if its a theme, the location would point to the script
123 # file. 116 # file.
124 source "$location" 117 source "$location"
125 118
126 else 119 else
127 120
128 # Source the plugin script 121 # Source the plugin script
129 # FIXME: I don't know. Looks very very ugly. Needs a better 122 # FIXME: I don't know. Looks very very ugly. Needs a better
130 # implementation once tests are ready. 123 # implementation once tests are ready.
131 local script_loc="$(ls "$location" | grep -m1 '.plugin.zsh$')" 124 local script_loc="$(ls "$location" | grep -m1 '.plugin.zsh$')"
132 if [[ -f $script_loc ]]; then 125 if [[ -f $script_loc ]]; then
133 # If we have a `*.plugin.zsh`, source it. 126 # If we have a `*.plugin.zsh`, source it.
134 source "$script_loc" 127 source "$script_loc"
135 elif [[ ! -z "$(ls "$location" | grep -m1 '.zsh$')" ]]; then 128 elif [[ ! -z "$(ls "$location" | grep -m1 '.zsh$')" ]]; then
136 # If there is no `*.plugin.zsh` file, source *all* the `*.zsh` 129 # If there is no `*.plugin.zsh` file, source *all* the `*.zsh`
137 # files. 130 # files.
138 for script ($location/*.zsh) source "$script" 131 for script ($location/*.zsh) source "$script"
139 fi 132 fi
140 133
141 # Add to $fpath, for completion(s) 134 # Add to $fpath, for completion(s)
142 fpath=($location $fpath) 135 fpath=($location $fpath)
143 136
144 fi 137 fi
145 138
146 } 139 }
147 140
148 bundle-cleanup () { 141 bundle-cleanup () {
149 142
150 if [[ ! -d "$ADOTDIR/repos" || -z "$(ls "$ADOTDIR/repos/")" ]]; then 143 if [[ ! -d "$ADOTDIR/repos" || -z "$(ls "$ADOTDIR/repos/")" ]]; then
151 echo "You don't have any bundles." 144 echo "You don't have any bundles."
152 return 0 145 return 0
153 fi 146 fi
154 147
155 # Find directores in ADOTDIR/repos, that are not in the bundles record. 148 # Find directores in ADOTDIR/repos, that are not in the bundles record.
156 local unused_clones="$(comm -13 \ 149 local unused_clones="$(comm -13 \
157 <(-bundle-echo-record | awk '{print $1}' | sort -u) \ 150 <(-bundle-echo-record | awk '{print $1}' | sort -u) \
158 <(ls "$ADOTDIR/repos" | while read line; do 151 <(ls "$ADOTDIR/repos" | while read line; do
159 -antigen-get-clone-url "$line" 152 -antigen-get-clone-url "$line"
160 done))" 153 done))"
161 154
162 if [[ -z $unused_clones ]]; then 155 if [[ -z $unused_clones ]]; then
163 echo "You don't have any unidentified bundles." 156 echo "You don't have any unidentified bundles."
164 return 0 157 return 0
165 fi 158 fi
166 159
167 echo 'You have clones for the following repos, but are not used.' 160 echo 'You have clones for the following repos, but are not used.'
168 echo "$unused_clones" | sed 's/^/ /' 161 echo "$unused_clones" | sed 's/^/ /'
169 162
170 echo -n '\nDelete them all? [y/N] ' 163 echo -n '\nDelete them all? [y/N] '
171 if read -q; then 164 if read -q; then
172 echo 165 echo
173 echo 166 echo
174 echo "$unused_clones" | while read url; do 167 echo "$unused_clones" | while read url; do
175 echo -n "Deleting clone for $url..." 168 echo -n "Deleting clone for $url..."
176 rm -rf "$(-antigen-get-clone-dir $url)" 169 rm -rf "$(-antigen-get-clone-dir $url)"
177 echo ' done.' 170 echo ' done.'
178 done 171 done
179 else 172 else
180 echo 173 echo
181 echo Nothing deleted. 174 echo Nothing deleted.
182 fi 175 fi
183 } 176 }
184 177
185 bundle-lib () { 178 bundle-lib () {
186 bundle --loc=lib 179 bundle --loc=lib
187 } 180 }
188 181
189 bundle-theme () { 182 bundle-theme () {
190 local url="$ANTIGEN_DEFAULT_REPO_URL" 183 local url="$ANTIGEN_DEFAULT_REPO_URL"
191 local name="${1:-robbyrussell}" 184 local name="${1:-robbyrussell}"
192 bundle --loc=themes/$name.zsh-theme --btype=theme 185 bundle --loc=themes/$name.zsh-theme --btype=theme
193 } 186 }
194 187
195 bundle-apply () { 188 bundle-apply () {
196 # Initialize completion. 189 # Initialize completion.
197 # TODO: Only load completions if there are any changes to the bundle 190 # TODO: Only load completions if there are any changes to the bundle
198 # repositories. 191 # repositories.
199 compinit -i 192 compinit -i
200 } 193 }
201 194
202 bundle-list () { 195 bundle-list () {
203 # List all currently installed bundles 196 # List all currently installed bundles
204 if [[ -z "$_ANTIGEN_BUNDLE_RECORD" ]]; then 197 if [[ -z "$_ANTIGEN_BUNDLE_RECORD" ]]; then
205 echo "You don't have any bundles." >&2 198 echo "You don't have any bundles." >&2
206 return 1 199 return 1
207 else 200 else
208 -bundle-echo-record | awk '{print $1 " " $2 " " $3}' 201 -bundle-echo-record | awk '{print $1 " " $2 " " $3}'
209 fi 202 fi
210 } 203 }
211 204
212 # Echo the bundle specs as in the record. The first line is not echoed since it 205 # Echo the bundle specs as in the record. The first line is not echoed since it
213 # is a blank line. 206 # is a blank line.
214 -bundle-echo-record () { 207 -bundle-echo-record () {
215 echo "$_ANTIGEN_BUNDLE_RECORD" | sed -n '1!p' 208 echo "$_ANTIGEN_BUNDLE_RECORD" | sed -n '1!p'
216 } 209 }
217 210
218 -bundle-env-setup () { 211 -bundle-env-setup () {
219 # Pre-startup initializations 212 # Pre-startup initializations
220 -set-default ANTIGEN_DEFAULT_REPO_URL \ 213 -set-default ANTIGEN_DEFAULT_REPO_URL \
221 https://github.com/robbyrussell/oh-my-zsh.git 214 https://github.com/robbyrussell/oh-my-zsh.git
222 -set-default ADOTDIR $HOME/.antigen 215 -set-default ADOTDIR $HOME/.antigen
223 216
224 # Load the compinit module 217 # Load the compinit module
225 autoload -U compinit 218 autoload -U compinit
226 219
227 # Without the following, `compdef` function is not defined. 220 # Without the following, `compdef` function is not defined.
228 compinit -i 221 compinit -i
229 } 222 }
230 223
231 # Same as `export $1=$2`, but will only happen if the name specified by `$1` is 224 # Same as `export $1=$2`, but will only happen if the name specified by `$1` is
232 # not already set. 225 # not already set.
233 -set-default () { 226 -set-default () {
234 local arg_name="$1" 227 local arg_name="$1"
235 local arg_value="$2" 228 local arg_value="$2"
236 eval "test -z \"\$$arg_name\" && export $arg_name='$arg_value'" 229 eval "test -z \"\$$arg_name\" && export $arg_name='$arg_value'"
237 } 230 }
238 231
239 -bundle-env-setup 232 -bundle-env-setup
240 233