Commit 843297b2062084271496e3998623e446c397b832

Authored by Shrikant Sharat
1 parent 2e6d0c4163

Initial implementation of --branch.

The `antigen-bundle` command takes a `--branch` keyword-only argument that
specified the branch of the repo to be used for this bundle.

Alpha implementation. Needs more testing.

Showing 1 changed file with 34 additions and 10 deletions Side-by-side Diff

... ... @@ -8,11 +8,14 @@ local _ANTIGEN_BUNDLE_RECORD=""
8 8  
9 9 # Syntaxes
10 10 # antigen-bundle <url> [<loc>=/]
  11 +# Keyword only arguments:
  12 +# branch - The branch of the repo to use for this bundle.
11 13 antigen-bundle () {
12 14  
13 15 # Bundle spec arguments' default values.
14 16 local url="$ANTIGEN_DEFAULT_REPO_URL"
15 17 local loc=/
  18 + local branch=-
16 19 local btype=plugin
17 20  
18 21 # Set spec values based on the positional arguments.
... ... @@ -48,11 +51,11 @@ antigen-bundle () {
48 51 fi
49 52  
50 53 # Add it to the record.
51   - _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$url $loc $btype"
  54 + _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$url $loc $btype $branch"
52 55  
53   - -antigen-ensure-repo "$url"
  56 + -antigen-ensure-repo "$url" "$branch"
54 57  
55   - -antigen-load "$url" "$loc" "$btype"
  58 + -antigen-load "$url" "$loc" "$btype" "$branch"
56 59  
57 60 }
58 61  
... ... @@ -81,11 +84,21 @@ antigen-update () {
81 84 # Takes a repo url and gives out the path that this url needs to be cloned
82 85 # to. Doesn't actually clone anything.
83 86 # TODO: Memoize?
  87 + local url="$1"
  88 + local branch="$2"
84 89 echo -n $ADOTDIR/repos/
85   - echo "$1" | sed \
  90 +
  91 + local branched_url="$url"
  92 +
  93 + if [[ "$branch" != - ]]; then
  94 + branched_url="$branched_url|$branch"
  95 + fi
  96 +
  97 + echo "$branched_url" | sed \
86 98 -e 's/\.git$//' \
87 99 -e 's./.-SLASH-.g' \
88   - -e 's.:.-COLON-.g'
  100 + -e 's.:.-COLON-.g' \
  101 + -e 's.|.-PIPE-.g'
89 102 }
90 103  
91 104 -antigen-get-clone-url () {
... ... @@ -96,7 +109,8 @@ antigen-update () {
96 109 -e "s:^$ADOTDIR/repos/::" \
97 110 -e 's/$/.git/' \
98 111 -e 's.-SLASH-./.g' \
99   - -e 's.-COLON-.:.g'
  112 + -e 's.-COLON-.:.g' \
  113 + -e 's.-PIPE-.|.g'
100 114 }
101 115  
102 116 -antigen-ensure-repo () {
... ... @@ -108,7 +122,8 @@ antigen-update () {
108 122 fi
109 123  
110 124 local url="$1"
111   - local clone_dir="$(-antigen-get-clone-dir $url)"
  125 + local branch="$2"
  126 + local clone_dir="$(-antigen-get-clone-dir $url $branch)"
112 127  
113 128 if [[ ! -d $clone_dir ]]; then
114 129 git clone "$url" "$clone_dir"
... ... @@ -116,13 +131,21 @@ antigen-update () {
116 131 git --git-dir "$clone_dir/.git" --work-tree "$clone_dir" pull
117 132 fi
118 133  
  134 + if [[ "$branch" != - ]]; then
  135 + git --git-dir "$clone_dir/.git" --work-tree "$clone_dir" \
  136 + checkout "$branch"
  137 + fi
  138 +
119 139 }
120 140  
121 141 -antigen-load () {
122 142  
123 143 local url="$1"
124   - local location="$(-antigen-get-clone-dir "$url")/$2"
  144 + local loc="$2"
125 145 local btype="$3"
  146 + local branch="$4"
  147 +
  148 + local location="$(-antigen-get-clone-dir "$url" "$branch")/$loc"
126 149  
127 150 if [[ $btype == theme ]]; then
128 151  
... ... @@ -165,7 +188,7 @@ antigen-cleanup () {
165 188  
166 189 # Find directores in ADOTDIR/repos, that are not in the bundles record.
167 190 local unused_clones="$(comm -13 \
168   - <(-antigen-echo-record | awk '{print $1}' | sort -u) \
  191 + <(-antigen-echo-record | awk '{print $1 "|" $4}' | sort -u) \
169 192 <(ls "$ADOTDIR/repos" | while read line; do
170 193 -antigen-get-clone-url "$line"
171 194 done))"
... ... @@ -176,7 +199,8 @@ antigen-cleanup () {
176 199 fi
177 200  
178 201 echo 'You have clones for the following repos, but are not used.'
179   - echo "$unused_clones" | sed 's/^/ /'
  202 + echo "$unused_clones" \
  203 + | sed -e 's/^/ /' -e 's/|/, branch /'
180 204  
181 205 echo -n '\nDelete them all? [y/N] '
182 206 if read -q; then