Commit d535ba468a72b9ad19747d09e755fe857c1856bd
1 parent
24fbcce0a0
Introduced a new btype argument to bundle command.
The `name` argument will be phased out. Instead, the btype will indicate the type of a plugin. Currently it can have valuse of plugin and theme.
Showing 1 changed file with 34 additions and 27 deletions Side-by-side Diff
antigen.zsh
| ... | ... | @@ -2,7 +2,8 @@ |
| 2 | 2 | |
| 3 | 3 | # Each line in this string has the following entries separated by a space |
| 4 | 4 | # character. |
| 5 | -# <bundle-name>, <repo-url>, <plugin-location>, <repo-local-clone-dir> | |
| 5 | +# <bundle-name>, <repo-url>, <plugin-location>, <repo-local-clone-dir>, | |
| 6 | +# <bundle-type> | |
| 6 | 7 | # FIXME: Is not kept local by zsh! |
| 7 | 8 | local _ANTIGEN_BUNDLE_RECORD="" |
| 8 | 9 | |
| ... | ... | @@ -14,6 +15,7 @@ bundle () { |
| 14 | 15 | local url="$ANTIGEN_DEFAULT_REPO_URL" |
| 15 | 16 | local loc=/ |
| 16 | 17 | local name= |
| 18 | + local btype=plugin | |
| 17 | 19 | local load=true |
| 18 | 20 | |
| 19 | 21 | # Set spec values based on the positional arguments. |
| ... | ... | @@ -60,11 +62,12 @@ bundle () { |
| 60 | 62 | fi |
| 61 | 63 | |
| 62 | 64 | # Add it to the record. |
| 63 | - _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$name $url $loc $clone_dir" | |
| 65 | + _ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$name $url $loc $clone_dir $btype" | |
| 64 | 66 | |
| 65 | 67 | # Load it, unless specified otherwise. |
| 66 | 68 | if $load; then |
| 67 | - bundle-load "$name" | |
| 69 | + # bundle-load "$name" | |
| 70 | + bundle-load "$clone_dir/$loc" "$btype" | |
| 68 | 71 | fi |
| 69 | 72 | } |
| 70 | 73 | |
| ... | ... | @@ -100,6 +103,7 @@ bundle-install () { |
| 100 | 103 | local url="$(echo "$spec" | awk '{print $2}')" |
| 101 | 104 | local loc="$(echo "$spec" | awk '{print $3}')" |
| 102 | 105 | local clone_dir="$(echo "$spec" | awk '{print $4}')" |
| 106 | + local btype="$(echo "$spec" | awk '{print $5}')" | |
| 103 | 107 | |
| 104 | 108 | if [[ -z "$(echo "$handled_repos" | grep -Fm1 "$url")" ]]; then |
| 105 | 109 | if [[ ! -d $clone_dir ]]; then |
| ... | ... | @@ -121,7 +125,7 @@ bundle-install () { |
| 121 | 125 | cp "$clone_dir/$loc" "$ADOTDIR/bundles/$name" |
| 122 | 126 | fi |
| 123 | 127 | |
| 124 | - bundle-load "$name" | |
| 128 | + bundle-load "$clone_dir/$loc" "$btype" | |
| 125 | 129 | |
| 126 | 130 | done |
| 127 | 131 | |
| ... | ... | @@ -172,42 +176,45 @@ bundle-cleanup () { |
| 172 | 176 | |
| 173 | 177 | bundle-load () { |
| 174 | 178 | |
| 175 | - local name="$1" | |
| 176 | - local bundle_dir="$ADOTDIR/bundles/$name" | |
| 179 | + local location="$1" | |
| 180 | + local btype="$2" | |
| 177 | 181 | |
| 178 | - # Source the plugin script | |
| 179 | - local script_loc="$bundle_dir/$name.plugin.zsh" | |
| 180 | - if [[ -f $script_loc ]]; then | |
| 181 | - source "$script_loc" | |
| 182 | - fi | |
| 182 | + if [[ $btype == theme ]]; then | |
| 183 | 183 | |
| 184 | - # If the name of the plugin ends with `.lib`, all the *.zsh files in it are | |
| 185 | - # sourced. This is kind of a hack to source the libraries of oh-my-zsh. | |
| 186 | - if [[ $name == *.lib ]]; then | |
| 187 | - # FIXME: This throws an error if no files match the given glob pattern. | |
| 188 | - for lib ($bundle_dir/*.zsh) source $lib | |
| 189 | - fi | |
| 184 | + # Of course, if its a theme, the location would point to the script | |
| 185 | + # file. | |
| 186 | + source "$location" | |
| 190 | 187 | |
| 191 | - # If the name ends with `.theme`, it is handled as if it were a zsh-theme | |
| 192 | - # plugin. | |
| 193 | - if [[ $name == *.theme ]]; then | |
| 194 | - local theme_file="$bundle_dir/${name%.theme}.zsh-theme" | |
| 195 | - test -f "$theme_file" && source "$theme_file" | |
| 196 | - fi | |
| 188 | + else | |
| 197 | 189 | |
| 198 | - # Add to $fpath, for completion(s) | |
| 199 | - fpath=($bundle_dir $fpath) | |
| 190 | + # Source the plugin script | |
| 191 | + # FIXME: I don't know. Looks very very ugly. Needs a better | |
| 192 | + # implementation once tests are ready. | |
| 193 | + local script_loc="$(ls "$location" | grep -m1 '.plugin.zsh$')" | |
| 194 | + if [[ -f $script_loc ]]; then | |
| 195 | + # If we have a `*.plugin.zsh`, source it. | |
| 196 | + source "$script_loc" | |
| 197 | + elif [[ ! -z "$(ls "$location" | grep -m1 '.zsh$')" ]]; then | |
| 198 | + # If there is no `*.plugin.zsh` file, source *all* the `*.zsh` | |
| 199 | + # files. | |
| 200 | + for script ($location/*.zsh) source "$script" | |
| 201 | + fi | |
| 202 | + | |
| 203 | + # Add to $fpath, for completion(s) | |
| 204 | + fpath=($location $fpath) | |
| 205 | + | |
| 206 | + fi | |
| 200 | 207 | |
| 201 | 208 | } |
| 202 | 209 | |
| 203 | 210 | bundle-lib () { |
| 204 | - bundle --name=oh-my-zsh.lib --loc=lib | |
| 211 | + bundle --loc=lib | |
| 205 | 212 | } |
| 206 | 213 | |
| 207 | 214 | bundle-theme () { |
| 208 | 215 | local url="$ANTIGEN_DEFAULT_REPO_URL" |
| 209 | 216 | local name="${1:-robbyrussell}" |
| 210 | - bundle-install "$url" --name=$name.theme --loc=themes/$name.zsh-theme | |
| 217 | + bundle --loc=themes/$name.zsh-theme --btype=theme | |
| 211 | 218 | } |
| 212 | 219 | |
| 213 | 220 | bundle-apply () { |