Blame view

antigen.zsh 10.6 KB
e5dfac7ea   Shrikant Sharat   Initial commit. W...
1
2
3
4
  #!/bin/zsh
  
  # Each line in this string has the following entries separated by a space
  # character.
a12d3140a   Shrikant Sharat   Removed bundle-in...
5
  # <repo-url>, <plugin-location>, <bundle-type>
e5dfac7ea   Shrikant Sharat   Initial commit. W...
6
  # FIXME: Is not kept local by zsh!
9dc631003   Shrikant Sharat   Rename bundle rec...
7
  local _ANTIGEN_BUNDLE_RECORD=""
e5dfac7ea   Shrikant Sharat   Initial commit. W...
8
9
  
  # Syntaxes
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
10
  #   antigen-bundle <url> [<loc>=/]
843297b20   Shrikant Sharat   Initial implement...
11
12
  # Keyword only arguments:
  #   branch - The branch of the repo to use for this bundle.
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
13
  antigen-bundle () {
e5dfac7ea   Shrikant Sharat   Initial commit. W...
14
15
16
17
  
      # Bundle spec arguments' default values.
      local url="$ANTIGEN_DEFAULT_REPO_URL"
      local loc=/
2923c490c   Shrikant Sharat   Branch informatio...
18
      local branch=
38b0b0409   Shrikant Sharat   Fix #12. Local bu...
19
      local no_local_clone=false
d535ba468   Shrikant Sharat   Introduced a new ...
20
      local btype=plugin
e5dfac7ea   Shrikant Sharat   Initial commit. W...
21
22
  
      # Set spec values based on the positional arguments.
3635aa19e   Shrikant Sharat   Refactoring to pr...
23
24
      local position_args
      position_args=(url loc)
e5dfac7ea   Shrikant Sharat   Initial commit. W...
25
      local i=1
b43a3cf1f   Shrikant Sharat   Keyword arguments...
26
      while ! [[ -z $1 || $1 == --* ]]; do
3635aa19e   Shrikant Sharat   Refactoring to pr...
27
          local arg_name="${position_args[$i]}"
43bb2cef1   Shrikant Sharat   Variable declarat...
28
          local arg_value="$1"
e5dfac7ea   Shrikant Sharat   Initial commit. W...
29
30
31
32
33
34
35
          eval "local $arg_name='$arg_value'"
          shift
          i=$(($i + 1))
      done
  
      # Set spec values from keyword arguments, if any. The remaining arguments
      # are all assumed to be keyword arguments.
4dceca485   Shrikant Sharat   Add support for b...
36
      while [[ $1 == --* ]]; do
ec9febf8c   Shrikant Sharat   Fix themes not be...
37
38
          # Remove the `--` at the start.
          local arg="${1#--}"
4dceca485   Shrikant Sharat   Add support for b...
39
40
41
42
  
          if [[ $arg != *=* ]]; then
              arg="$arg=true"
          fi
ec9febf8c   Shrikant Sharat   Fix themes not be...
43
44
45
46
          # Get the name of the arg and replace the `-`'s to `_`'s.
          local arg_name="${${arg%\=*}//-/_}"
  
          # Get the value of the arg.
4dceca485   Shrikant Sharat   Add support for b...
47
          local arg_value="${arg#*\=}"
e5dfac7ea   Shrikant Sharat   Initial commit. W...
48
49
50
          eval "local $arg_name='$arg_value'"
          shift
      done
b29510ce7   Shrikant Sharat   Small code reorga...
51
52
53
54
55
      # Check if url is just the plugin name. Super short syntax.
      if [[ "$url" != */* ]]; then
          loc="plugins/$url"
          url="$ANTIGEN_DEFAULT_REPO_URL"
      fi
e5dfac7ea   Shrikant Sharat   Initial commit. W...
56
      # Resolve the url.
39379a878   Shrikant Sharat   Move url resolvin...
57
      url="$(-antigen-resolve-bundle-url "$url")"
e5dfac7ea   Shrikant Sharat   Initial commit. W...
58

2923c490c   Shrikant Sharat   Branch informatio...
59
60
61
62
      # Add the branch information to the url.
      if [[ ! -z $branch ]]; then
          url="$url|$branch"
      fi
41abcf662   Shrikant Sharat   Simpler implement...
63
      # The `make_local_clone` variable better represents whether there should be
e6cc15b5f   Shrikant Sharat   Fix local paths w...
64
65
66
67
      # a local clone made. For cloning to be avoided, firstly, the `$url` should
      # be an absolute local path and `$branch` should be empty. In addition to
      # these two conditions, either the `--no-local-clone` option should be
      # given, or `$url` should not a git repo.
41abcf662   Shrikant Sharat   Simpler implement...
68
      local make_local_clone=true
e6cc15b5f   Shrikant Sharat   Fix local paths w...
69
70
      if [[ $url == /* && -z $branch \
              && ( $no_local_clone == true || ! -d $url/.git ) ]]; then
41abcf662   Shrikant Sharat   Simpler implement...
71
72
          make_local_clone=false
      fi
e5dfac7ea   Shrikant Sharat   Initial commit. W...
73
      # Add it to the record.
41abcf662   Shrikant Sharat   Simpler implement...
74
75
      _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD
  $url $loc $btype $make_local_clone"
a12d3140a   Shrikant Sharat   Removed bundle-in...
76

38b0b0409   Shrikant Sharat   Fix #12. Local bu...
77
      # Ensure a clone exists for this repo, if needed.
41abcf662   Shrikant Sharat   Simpler implement...
78
      if $make_local_clone; then
38b0b0409   Shrikant Sharat   Fix #12. Local bu...
79
80
          -antigen-ensure-repo "$url"
      fi
e5dfac7ea   Shrikant Sharat   Initial commit. W...
81

499c0dd5d   Shrikant Sharat   Added some comments.
82
      # Load the plugin.
e6cc15b5f   Shrikant Sharat   Fix local paths w...
83
      -antigen-load "$url" "$loc" "$btype" "$make_local_clone"
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
84

a12d3140a   Shrikant Sharat   Removed bundle-in...
85
  }
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
86

39379a878   Shrikant Sharat   Move url resolvin...
87
88
89
90
91
  -antigen-resolve-bundle-url () {
      # Given an acceptable short/full form of a bundle's repo url, this function
      # echoes the full form of the repo's clone url.
  
      local url="$1"
7af602dae   Shrikant Sharat   Minor comment edi...
92
      # Expand short github url syntax: `username/reponame`.
60fa053ec   Shrikant Sharat   Add tests for url...
93
94
95
96
97
      if [[ $url != git://* && \
              $url != https://* && \
              $url != /* && \
              $url != git@github.com:*/*
              ]]; then
1cae4fc91   Shrikant Sharat   Some refactoring ...
98
          url="https://github.com/${url%.git}.git"
39379a878   Shrikant Sharat   Move url resolvin...
99
100
101
102
      fi
  
      echo "$url"
  }
3c5ff1c1e   Shrikant Sharat   Add antigen-bundl...
103
104
105
106
107
108
  antigen-bundles () {
      # Bulk add many bundles at one go. Empty lines and lines starting with a `#`
      # are ignored. Everything else is given to `antigen-bundle` as is, no
      # quoting rules applied.
  
      local line
2e6d0c416   Shrikant Sharat   Fix #5. Ignore sp...
109
      grep -v '^\s*$\|^#' | while read line; do
3c5ff1c1e   Shrikant Sharat   Add antigen-bundl...
110
111
112
113
114
          # Using `eval` so that we can use the shell-style quoting in each line
          # piped to `antigen-bundles`.
          eval "antigen-bundle $line"
      done
  }
2fe4683b3   Shrikant Sharat   Update README wit...
115
  antigen-update () {
158407151   Shrikant Sharat   Refactoring of pr...
116
      # Update your bundles, i.e., `git pull` in all the plugin repos.
8d0d219d6   Shrikant Sharat   Fix #9 Update com...
117
      -antigen-echo-record \
2923c490c   Shrikant Sharat   Branch informatio...
118
          | awk '{print $1}' \
8d0d219d6   Shrikant Sharat   Fix #9 Update com...
119
          | sort -u \
2923c490c   Shrikant Sharat   Branch informatio...
120
          | while read url; do
5d199ab20   Shrikant Sharat   Print the repo ur...
121
              echo "**** Pulling $url"
0912ba472   Shrikant Sharat   Print a summary o...
122
              -antigen-ensure-repo --update --verbose "$url"
5d199ab20   Shrikant Sharat   Print the repo ur...
123
              echo
8d0d219d6   Shrikant Sharat   Fix #9 Update com...
124
          done
158407151   Shrikant Sharat   Refactoring of pr...
125
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
126
  -antigen-get-clone-dir () {
a12d3140a   Shrikant Sharat   Removed bundle-in...
127
128
129
      # Takes a repo url and gives out the path that this url needs to be cloned
      # to. Doesn't actually clone anything.
      # TODO: Memoize?
843297b20   Shrikant Sharat   Initial implement...
130

2923c490c   Shrikant Sharat   Branch informatio...
131
132
      # The url given.
      local url="$1"
843297b20   Shrikant Sharat   Initial implement...
133

499c0dd5d   Shrikant Sharat   Added some comments.
134
135
      # Echo the full path to the clone directory.
      echo -n $ADOTDIR/repos/
2923c490c   Shrikant Sharat   Branch informatio...
136
      echo "$url" | sed \
a12d3140a   Shrikant Sharat   Removed bundle-in...
137
          -e 's./.-SLASH-.g' \
843297b20   Shrikant Sharat   Initial implement...
138
139
          -e 's.:.-COLON-.g' \
          -e 's.|.-PIPE-.g'
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
140
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
141
  -antigen-get-clone-url () {
0b32bec27   Shrikant Sharat   bundle-cleanup co...
142
143
144
145
146
      # Takes a repo's clone dir and gives out the repo's original url that was
      # used to create the given directory path.
      # TODO: Memoize?
      echo "$1" | sed \
          -e "s:^$ADOTDIR/repos/::" \
0b32bec27   Shrikant Sharat   bundle-cleanup co...
147
          -e 's.-SLASH-./.g' \
843297b20   Shrikant Sharat   Initial implement...
148
          -e 's.-COLON-.:.g' \
a5e21a6a1   Shrikant Sharat   Do comparisons wi...
149
          -e 's.-PIPE-.|.g'
0b32bec27   Shrikant Sharat   bundle-cleanup co...
150
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
151
  -antigen-ensure-repo () {
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
152

499c0dd5d   Shrikant Sharat   Added some comments.
153
154
155
      # Ensure that a clone exists for the given repo url and branch. If the first
      # argument is `--update` and if a clone already exists for the given repo
      # and branch, it is pull-ed, i.e., updated.
c1479baff   Shrikant Sharat   Accept a --verbos...
156
      # Argument defaults.
499c0dd5d   Shrikant Sharat   Added some comments.
157
      # Check if we have to update.
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
158
      local update=false
c1479baff   Shrikant Sharat   Accept a --verbos...
159
160
161
162
163
164
      # Verbose output.
      local verbose=false
  
      # Load any boolean arguments specified.
      while [[ $1 == --* ]]; do
          eval "local '${1#--}=true'"
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
165
          shift
c1479baff   Shrikant Sharat   Accept a --verbos...
166
      done
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
167

499c0dd5d   Shrikant Sharat   Added some comments.
168
      # Get the clone's directory as per the given repo url and branch.
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
169
      local url="$1"
2923c490c   Shrikant Sharat   Branch informatio...
170
      local clone_dir="$(-antigen-get-clone-dir $url)"
062a7b830   Shrikant Sharat   Refactor temporar...
171
172
173
174
175
  
      # A temporary function wrapping the `git` command with repeated arguments.
      --plugin-git () {
          eval git --git-dir=$clone_dir/.git --work-tree=$clone_dir "$@"
      }
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
176

499c0dd5d   Shrikant Sharat   Added some comments.
177
      # Clone if it doesn't already exist.
aa510273d   Shrikant Sharat   Removed useless l...
178
      if [[ ! -d $clone_dir ]]; then
2923c490c   Shrikant Sharat   Branch informatio...
179
          git clone "${url%|*}" "$clone_dir"
aa510273d   Shrikant Sharat   Removed useless l...
180
      elif $update; then
0912ba472   Shrikant Sharat   Print a summary o...
181
          # Save current revision.
382d92096   Shrikant Sharat   Use local variabl...
182
          local old_rev="$(--plugin-git rev-parse HEAD)"
499c0dd5d   Shrikant Sharat   Added some comments.
183
          # Pull changes if update requested.
062a7b830   Shrikant Sharat   Refactor temporar...
184
          --plugin-git pull
0912ba472   Shrikant Sharat   Print a summary o...
185
          # Get the new revision.
382d92096   Shrikant Sharat   Use local variabl...
186
          local new_rev="$(--plugin-git rev-parse HEAD)"
2ac7c0cb0   Shrikant Sharat   Bundles are insta...
187
      fi
499c0dd5d   Shrikant Sharat   Added some comments.
188
      # If its a specific branch that we want, checkout that branch.
2923c490c   Shrikant Sharat   Branch informatio...
189
      if [[ $url == *\|* ]]; then
062a7b830   Shrikant Sharat   Refactor temporar...
190
          --plugin-git checkout "${url#*|}"
843297b20   Shrikant Sharat   Initial implement...
191
      fi
0912ba472   Shrikant Sharat   Print a summary o...
192
193
194
      if ! [[ -z $old_rev || $old_rev == $new_rev ]]; then
          echo Updated from ${old_rev:0:7} to ${new_rev:0:7}.
          if $verbose; then
062a7b830   Shrikant Sharat   Refactor temporar...
195
              --plugin-git log --oneline --reverse --no-merges --stat '@{1}..'
0912ba472   Shrikant Sharat   Print a summary o...
196
197
          fi
      fi
7af602dae   Shrikant Sharat   Minor comment edi...
198
      # Remove the temporary git wrapper function.
062a7b830   Shrikant Sharat   Refactor temporar...
199
      unfunction -- --plugin-git
e5dfac7ea   Shrikant Sharat   Initial commit. W...
200
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
201
  -antigen-load () {
e5dfac7ea   Shrikant Sharat   Initial commit. W...
202

a12d3140a   Shrikant Sharat   Removed bundle-in...
203
      local url="$1"
843297b20   Shrikant Sharat   Initial implement...
204
      local loc="$2"
a12d3140a   Shrikant Sharat   Removed bundle-in...
205
      local btype="$3"
41abcf662   Shrikant Sharat   Simpler implement...
206
      local make_local_clone="$4"
843297b20   Shrikant Sharat   Initial implement...
207

499c0dd5d   Shrikant Sharat   Added some comments.
208
      # The full location where the plugin is located.
38b0b0409   Shrikant Sharat   Fix #12. Local bu...
209
      local location
41abcf662   Shrikant Sharat   Simpler implement...
210
      if $make_local_clone; then
38b0b0409   Shrikant Sharat   Fix #12. Local bu...
211
212
213
214
          location="$(-antigen-get-clone-dir "$url")/$loc"
      else
          location="$url"
      fi
e5dfac7ea   Shrikant Sharat   Initial commit. W...
215

d535ba468   Shrikant Sharat   Introduced a new ...
216
      if [[ $btype == theme ]]; then
e5dfac7ea   Shrikant Sharat   Initial commit. W...
217

d535ba468   Shrikant Sharat   Introduced a new ...
218
219
220
          # Of course, if its a theme, the location would point to the script
          # file.
          source "$location"
e5dfac7ea   Shrikant Sharat   Initial commit. W...
221

d535ba468   Shrikant Sharat   Introduced a new ...
222
      else
e5dfac7ea   Shrikant Sharat   Initial commit. W...
223

7af602dae   Shrikant Sharat   Minor comment edi...
224
          # Source the plugin script.
d535ba468   Shrikant Sharat   Introduced a new ...
225
226
          # FIXME: I don't know. Looks very very ugly. Needs a better
          # implementation once tests are ready.
cd68a349f   Shrikant Sharat   Fix update to zsh...
227
          local script_loc="$(ls "$location" | grep -m1 '\.plugin\.zsh$')"
499c0dd5d   Shrikant Sharat   Added some comments.
228

d535ba468   Shrikant Sharat   Introduced a new ...
229
230
231
          if [[ -f $script_loc ]]; then
              # If we have a `*.plugin.zsh`, source it.
              source "$script_loc"
499c0dd5d   Shrikant Sharat   Added some comments.
232

cd68a349f   Shrikant Sharat   Fix update to zsh...
233
          elif [[ ! -z "$(ls "$location" | grep -m1 '\.zsh$')" ]]; then
d535ba468   Shrikant Sharat   Introduced a new ...
234
235
              # If there is no `*.plugin.zsh` file, source *all* the `*.zsh`
              # files.
cd68a349f   Shrikant Sharat   Fix update to zsh...
236
              for script ($location/*.zsh(N)) source "$script"
499c0dd5d   Shrikant Sharat   Added some comments.
237

cd68a349f   Shrikant Sharat   Fix update to zsh...
238
          elif [[ ! -z "$(ls "$location" | grep -m1 '\.sh$')" ]]; then
17f8e971e   Shrikant Sharat   Work with non zsh...
239
240
              # If there are no `*.zsh` files either, we look for and source any
              # `*.sh` files instead.
cd68a349f   Shrikant Sharat   Fix update to zsh...
241
              for script ($location/*.sh(N)) source "$script"
499c0dd5d   Shrikant Sharat   Added some comments.
242

d535ba468   Shrikant Sharat   Introduced a new ...
243
          fi
499c0dd5d   Shrikant Sharat   Added some comments.
244
          # Add to $fpath, for completion(s).
d535ba468   Shrikant Sharat   Introduced a new ...
245
246
247
          fpath=($location $fpath)
  
      fi
e5dfac7ea   Shrikant Sharat   Initial commit. W...
248

e5dfac7ea   Shrikant Sharat   Initial commit. W...
249
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
250
  antigen-cleanup () {
0b32bec27   Shrikant Sharat   bundle-cleanup co...
251

499c0dd5d   Shrikant Sharat   Added some comments.
252
      # Cleanup unused repositories.
1f541f429   Shrikant Sharat   Add --force argum...
253
254
255
256
      local force=false
      if [[ $1 == --force ]]; then
          force=true
      fi
0b32bec27   Shrikant Sharat   bundle-cleanup co...
257
258
259
260
261
262
263
      if [[ ! -d "$ADOTDIR/repos" || -z "$(ls "$ADOTDIR/repos/")" ]]; then
          echo "You don't have any bundles."
          return 0
      fi
  
      # Find directores in ADOTDIR/repos, that are not in the bundles record.
      local unused_clones="$(comm -13 \
a5e21a6a1   Shrikant Sharat   Do comparisons wi...
264
          <(-antigen-echo-record \
b6db07ac2   Shrikant Sharat   Cleanup omits bun...
265
              | awk '$4 == "true" {print $1}' \
b2523d4be   Shrikant Sharat   Fix -cleanup list...
266
              | while read line; do
a5e21a6a1   Shrikant Sharat   Do comparisons wi...
267
                  -antigen-get-clone-dir "$line"
72fae27c8   Shrikant Sharat   Inputs to `comm` ...
268
              done \
a5e21a6a1   Shrikant Sharat   Do comparisons wi...
269
270
              | sort -u) \
          <(ls -d "$ADOTDIR/repos/"* | sort -u))"
0b32bec27   Shrikant Sharat   bundle-cleanup co...
271
272
273
274
275
276
277
  
      if [[ -z $unused_clones ]]; then
          echo "You don't have any unidentified bundles."
          return 0
      fi
  
      echo 'You have clones for the following repos, but are not used.'
843297b20   Shrikant Sharat   Initial implement...
278
      echo "$unused_clones" \
a5e21a6a1   Shrikant Sharat   Do comparisons wi...
279
280
281
          | while read line; do
              -antigen-get-clone-url "$line"
          done \
843297b20   Shrikant Sharat   Initial implement...
282
          | sed -e 's/^/  /' -e 's/|/, branch /'
0b32bec27   Shrikant Sharat   bundle-cleanup co...
283

1f541f429   Shrikant Sharat   Add --force argum...
284
285
      if $force || (echo -n '
  Delete them all? [y/N] '; read -q); then
0b32bec27   Shrikant Sharat   bundle-cleanup co...
286
287
          echo
          echo
759e381e1   Shrikant Sharat   Refactor variable...
288
          echo "$unused_clones" | while read line; do
a5e21a6a1   Shrikant Sharat   Do comparisons wi...
289
290
              echo -n "Deleting clone for $(-antigen-get-clone-url "$line")..."
              rm -rf "$line"
0b32bec27   Shrikant Sharat   bundle-cleanup co...
291
292
293
294
295
296
297
              echo ' done.'
          done
      else
          echo
          echo Nothing deleted.
      fi
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
298
299
  antigen-lib () {
      antigen-bundle --loc=lib
e5dfac7ea   Shrikant Sharat   Initial commit. W...
300
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
301
  antigen-theme () {
e5dfac7ea   Shrikant Sharat   Initial commit. W...
302
      local name="${1:-robbyrussell}"
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
303
      antigen-bundle --loc=themes/$name.zsh-theme --btype=theme
e5dfac7ea   Shrikant Sharat   Initial commit. W...
304
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
305
  antigen-apply () {
e5dfac7ea   Shrikant Sharat   Initial commit. W...
306
      # Initialize completion.
a91386310   Shrikant Sharat   Add a todo note o...
307
308
      # TODO: Only load completions if there are any changes to the bundle
      # repositories.
e5dfac7ea   Shrikant Sharat   Initial commit. W...
309
310
      compinit -i
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
311
  antigen-list () {
7af602dae   Shrikant Sharat   Minor comment edi...
312
      # List all currently installed bundles.
9dc631003   Shrikant Sharat   Rename bundle rec...
313
      if [[ -z "$_ANTIGEN_BUNDLE_RECORD" ]]; then
df942673b   Shrikant Sharat   Added bundle-list...
314
315
316
          echo "You don't have any bundles." >&2
          return 1
      else
3aa0d2d8a   Shrikant Sharat   Fix duplicate ent...
317
          -antigen-echo-record | sort -u
df942673b   Shrikant Sharat   Added bundle-list...
318
319
      fi
  }
fee42de18   Shrikant Sharat   Add a small antig...
320
321
322
323
324
325
326
  antigen-help () {
      cat <<EOF
  Antigen is a plugin management system for zsh. It makes it easy to grab awesome
  shell scripts and utilities, put up on github. For further details and complete
  documentation, visit the project's page at 'http://antigen.sharats.me'.
  EOF
  }
fd547d958   Shrikant Sharat   An `antigen` comm...
327
328
329
330
331
332
333
  # A syntax sugar to avoid the `-` when calling antigen commands. With this
  # function, you can write `antigen-bundle` as `antigen bundle` and so on.
  antigen () {
      local cmd="$1"
      shift
      "antigen-$cmd" "$@"
  }
bc9d20c7a   Shrikant Sharat   Add comments.
334
335
  # Echo the bundle specs as in the record. The first line is not echoed since it
  # is a blank line.
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
336
  -antigen-echo-record () {
9dc631003   Shrikant Sharat   Rename bundle rec...
337
      echo "$_ANTIGEN_BUNDLE_RECORD" | sed -n '1!p'
e5dfac7ea   Shrikant Sharat   Initial commit. W...
338
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
339
  -antigen-env-setup () {
7af602dae   Shrikant Sharat   Minor comment edi...
340
      # Pre-startup initializations.
e5dfac7ea   Shrikant Sharat   Initial commit. W...
341
342
      -set-default ANTIGEN_DEFAULT_REPO_URL \
          https://github.com/robbyrussell/oh-my-zsh.git
911cc8cb5   Shrikant Sharat   Use ADOTDIR as th...
343
      -set-default ADOTDIR $HOME/.antigen
3047bfeb7   Shrikant Sharat   Load compinit at ...
344

7af602dae   Shrikant Sharat   Minor comment edi...
345
      # Load the compinit module.
3047bfeb7   Shrikant Sharat   Load compinit at ...
346
347
348
349
      autoload -U compinit
  
      # Without the following, `compdef` function is not defined.
      compinit -i
e5dfac7ea   Shrikant Sharat   Initial commit. W...
350
351
352
353
354
  }
  
  # Same as `export $1=$2`, but will only happen if the name specified by `$1` is
  # not already set.
  -set-default () {
43bb2cef1   Shrikant Sharat   Variable declarat...
355
356
      local arg_name="$1"
      local arg_value="$2"
e5dfac7ea   Shrikant Sharat   Initial commit. W...
357
358
      eval "test -z \"\$$arg_name\" && export $arg_name='$arg_value'"
  }
a4f6e2fc8   Shrikant Sharat   Fix #2. Add `anti...
359
  -antigen-env-setup