Removing some oldies
parent
536543ddfc
commit
c1195d4870
@ -1,798 +0,0 @@
|
|||||||
# Antigen: A simple plugin manager for zsh
|
|
||||||
# Authors: Shrikant Sharat Kandula
|
|
||||||
# and Contributors <https://github.com/zsh-users/antigen/contributors>
|
|
||||||
# Homepage: http://antigen.sharats.me
|
|
||||||
# License: MIT License <mitl.sharats.me>
|
|
||||||
|
|
||||||
# Each line in this string has the following entries separated by a space
|
|
||||||
# character.
|
|
||||||
# <repo-url>, <plugin-location>, <bundle-type>, <has-local-clone>
|
|
||||||
# FIXME: Is not kept local by zsh!
|
|
||||||
local _ANTIGEN_BUNDLE_RECORD=""
|
|
||||||
local _ANTIGEN_INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
||||||
|
|
||||||
# Used to defer compinit/compdef
|
|
||||||
typeset -a __deferred_compdefs
|
|
||||||
compdef () { __deferred_compdefs=($__deferred_compdefs "$*") }
|
|
||||||
|
|
||||||
# Syntaxes
|
|
||||||
# antigen-bundle <url> [<loc>=/]
|
|
||||||
# Keyword only arguments:
|
|
||||||
# branch - The branch of the repo to use for this bundle.
|
|
||||||
antigen-bundle () {
|
|
||||||
|
|
||||||
# Bundle spec arguments' default values.
|
|
||||||
local url="$ANTIGEN_DEFAULT_REPO_URL"
|
|
||||||
local loc=/
|
|
||||||
local branch=
|
|
||||||
local no_local_clone=false
|
|
||||||
local btype=plugin
|
|
||||||
|
|
||||||
# Parse the given arguments. (Will overwrite the above values).
|
|
||||||
eval "$(-antigen-parse-args \
|
|
||||||
'url?, loc? ; branch:?, no-local-clone?, btype:?' \
|
|
||||||
"$@")"
|
|
||||||
|
|
||||||
# Check if url is just the plugin name. Super short syntax.
|
|
||||||
if [[ "$url" != */* ]]; then
|
|
||||||
loc="plugins/$url"
|
|
||||||
url="$ANTIGEN_DEFAULT_REPO_URL"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Resolve the url.
|
|
||||||
url="$(-antigen-resolve-bundle-url "$url")"
|
|
||||||
|
|
||||||
# Add the branch information to the url.
|
|
||||||
if [[ ! -z $branch ]]; then
|
|
||||||
url="$url|$branch"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The `make_local_clone` variable better represents whether there should be
|
|
||||||
# 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.
|
|
||||||
local make_local_clone=true
|
|
||||||
if [[ $url == /* && -z $branch &&
|
|
||||||
( $no_local_clone == true || ! -d $url/.git ) ]]; then
|
|
||||||
make_local_clone=false
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add the theme extension to `loc`, if this is a theme.
|
|
||||||
if [[ $btype == theme && $loc != *.zsh-theme ]]; then
|
|
||||||
loc="$loc.zsh-theme"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add it to the record.
|
|
||||||
_ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD\n$url $loc $btype"
|
|
||||||
_ANTIGEN_BUNDLE_RECORD="$_ANTIGEN_BUNDLE_RECORD $make_local_clone"
|
|
||||||
|
|
||||||
# Ensure a clone exists for this repo, if needed.
|
|
||||||
if $make_local_clone; then
|
|
||||||
-antigen-ensure-repo "$url"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Load the plugin.
|
|
||||||
-antigen-load "$url" "$loc" "$make_local_clone"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
-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"
|
|
||||||
|
|
||||||
# Expand short github url syntax: `username/reponame`.
|
|
||||||
if [[ $url != git://* &&
|
|
||||||
$url != https://* &&
|
|
||||||
$url != http://* &&
|
|
||||||
$url != ssh://* &&
|
|
||||||
$url != /* &&
|
|
||||||
$url != git@github.com:*/*
|
|
||||||
]]; then
|
|
||||||
url="https://github.com/${url%.git}.git"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$url"
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
grep '^[[:space:]]*[^[:space:]#]' | while read line; do
|
|
||||||
# Using `eval` so that we can use the shell-style quoting in each line
|
|
||||||
# piped to `antigen-bundles`.
|
|
||||||
eval "antigen-bundle $line"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-update () {
|
|
||||||
# Update your bundles, i.e., `git pull` in all the plugin repos.
|
|
||||||
|
|
||||||
date >! $ADOTDIR/revert-info
|
|
||||||
|
|
||||||
-antigen-echo-record |
|
|
||||||
awk '$4 == "true" {print $1}' |
|
|
||||||
sort -u |
|
|
||||||
while read url; do
|
|
||||||
echo "**** Pulling $url"
|
|
||||||
|
|
||||||
local clone_dir="$(-antigen-get-clone-dir "$url")"
|
|
||||||
if [[ -d "$clone_dir" ]]; then
|
|
||||||
(echo -n "$clone_dir:"
|
|
||||||
cd "$clone_dir"
|
|
||||||
git rev-parse HEAD) >> $ADOTDIR/revert-info
|
|
||||||
fi
|
|
||||||
|
|
||||||
-antigen-ensure-repo "$url" --update --verbose
|
|
||||||
|
|
||||||
echo
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-revert () {
|
|
||||||
if [[ -f $ADOTDIR/revert-info ]]; then
|
|
||||||
cat $ADOTDIR/revert-info | sed -n '1!p' | while read line; do
|
|
||||||
local dir="$(echo "$line" | cut -d: -f1)"
|
|
||||||
git --git-dir="$dir/.git" --work-tree="$dir" \
|
|
||||||
checkout "$(echo "$line" | cut -d: -f2)" 2> /dev/null
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Reverted to state before running -update on $(
|
|
||||||
cat $ADOTDIR/revert-info | sed -n '1p')."
|
|
||||||
|
|
||||||
else
|
|
||||||
echo 'No revert information available. Cannot revert.' >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-get-clone-dir () {
|
|
||||||
# Takes a repo url and gives out the path that this url needs to be cloned
|
|
||||||
# to. Doesn't actually clone anything.
|
|
||||||
echo -n $ADOTDIR/repos/
|
|
||||||
|
|
||||||
if [[ "$1" == "https://github.com/sorin-ionescu/prezto.git" ]]; then
|
|
||||||
# Prezto's directory *has* to be `.zprezto`.
|
|
||||||
echo .zprezto
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "$1" | sed \
|
|
||||||
-e 's./.-SLASH-.g' \
|
|
||||||
-e 's.:.-COLON-.g' \
|
|
||||||
-e 's.|.-PIPE-.g'
|
|
||||||
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-get-clone-url () {
|
|
||||||
# Takes a repo's clone dir and gives out the repo's original url that was
|
|
||||||
# used to create the given directory path.
|
|
||||||
|
|
||||||
if [[ "$1" == ".zprezto" ]]; then
|
|
||||||
# Prezto's (in `.zprezto`), is assumed to be from `sorin-ionescu`'s
|
|
||||||
# remote.
|
|
||||||
echo https://github.com/sorin-ionescu/prezto.git
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "$1" | sed \
|
|
||||||
-e "s:^$ADOTDIR/repos/::" \
|
|
||||||
-e 's.-SLASH-./.g' \
|
|
||||||
-e 's.-COLON-.:.g' \
|
|
||||||
-e 's.-PIPE-.|.g'
|
|
||||||
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-ensure-repo () {
|
|
||||||
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Argument defaults.
|
|
||||||
# The url. No sane default for this, so just empty.
|
|
||||||
local url=
|
|
||||||
# Check if we have to update.
|
|
||||||
local update=false
|
|
||||||
# Verbose output.
|
|
||||||
local verbose=false
|
|
||||||
|
|
||||||
eval "$(-antigen-parse-args 'url ; update?, verbose?' "$@")"
|
|
||||||
shift $#
|
|
||||||
|
|
||||||
# Get the clone's directory as per the given repo url and branch.
|
|
||||||
local clone_dir="$(-antigen-get-clone-dir $url)"
|
|
||||||
|
|
||||||
# A temporary function wrapping the `git` command with repeated arguments.
|
|
||||||
--plugin-git () {
|
|
||||||
(cd "$clone_dir" && git --no-pager "$@")
|
|
||||||
}
|
|
||||||
|
|
||||||
# Clone if it doesn't already exist.
|
|
||||||
if [[ ! -d $clone_dir ]]; then
|
|
||||||
git clone --recursive "${url%|*}" "$clone_dir"
|
|
||||||
elif $update; then
|
|
||||||
# Save current revision.
|
|
||||||
local old_rev="$(--plugin-git rev-parse HEAD)"
|
|
||||||
# Pull changes if update requested.
|
|
||||||
--plugin-git pull
|
|
||||||
# Update submodules.
|
|
||||||
--plugin-git submodule update --recursive
|
|
||||||
# Get the new revision.
|
|
||||||
local new_rev="$(--plugin-git rev-parse HEAD)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If its a specific branch that we want, checkout that branch.
|
|
||||||
if [[ $url == *\|* ]]; then
|
|
||||||
local current_branch=${$(--plugin-git symbolic-ref HEAD)##refs/heads/}
|
|
||||||
local requested_branch="${url#*|}"
|
|
||||||
# Only do the checkout when we are not already on the branch.
|
|
||||||
[[ $requested_branch != $current_branch ]] &&
|
|
||||||
--plugin-git checkout $requested_branch
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -n $old_rev && $old_rev != $new_rev ]]; then
|
|
||||||
echo Updated from ${old_rev:0:7} to ${new_rev:0:7}.
|
|
||||||
if $verbose; then
|
|
||||||
--plugin-git log --oneline --reverse --no-merges --stat '@{1}..'
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Remove the temporary git wrapper function.
|
|
||||||
unfunction -- --plugin-git
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-load () {
|
|
||||||
|
|
||||||
local url="$1"
|
|
||||||
local loc="$2"
|
|
||||||
local make_local_clone="$3"
|
|
||||||
|
|
||||||
# The full location where the plugin is located.
|
|
||||||
local location
|
|
||||||
if $make_local_clone; then
|
|
||||||
location="$(-antigen-get-clone-dir "$url")/"
|
|
||||||
else
|
|
||||||
location="$url/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[[ $loc != "/" ]] && location="$location$loc"
|
|
||||||
|
|
||||||
if [[ -f "$location" ]]; then
|
|
||||||
source "$location"
|
|
||||||
|
|
||||||
else
|
|
||||||
|
|
||||||
# Source the plugin script.
|
|
||||||
# FIXME: I don't know. Looks very very ugly. Needs a better
|
|
||||||
# implementation once tests are ready.
|
|
||||||
local script_loc="$(ls "$location" | grep '\.plugin\.zsh$' | head -n1)"
|
|
||||||
|
|
||||||
if [[ -f $location/$script_loc ]]; then
|
|
||||||
# If we have a `*.plugin.zsh`, source it.
|
|
||||||
source "$location/$script_loc"
|
|
||||||
|
|
||||||
elif [[ -f $location/init.zsh ]]; then
|
|
||||||
# If we have a `init.zsh`
|
|
||||||
if (( $+functions[pmodload] )); then
|
|
||||||
# If pmodload is defined pmodload the module. Remove `modules/`
|
|
||||||
# from loc to find module name.
|
|
||||||
pmodload "${loc#modules/}"
|
|
||||||
else
|
|
||||||
# Otherwise source it.
|
|
||||||
source "$location/init.zsh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif ls "$location" | grep -l '\.zsh$' &> /dev/null; then
|
|
||||||
# If there is no `*.plugin.zsh` file, source *all* the `*.zsh`
|
|
||||||
# files.
|
|
||||||
for script ($location/*.zsh(N)) { source "$script" }
|
|
||||||
|
|
||||||
elif ls "$location" | grep -l '\.sh$' &> /dev/null; then
|
|
||||||
# If there are no `*.zsh` files either, we look for and source any
|
|
||||||
# `*.sh` files instead.
|
|
||||||
for script ($location/*.sh(N)) { source "$script" }
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add to $fpath, for completion(s), if not in there already
|
|
||||||
if (( ! ${fpath[(I)$location]} )); then
|
|
||||||
fpath=($location $fpath)
|
|
||||||
fi
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Update (with `git pull`) antigen itself.
|
|
||||||
# TODO: Once update is finished, show a summary of the new commits, as a kind of
|
|
||||||
# "what's new" message.
|
|
||||||
antigen-selfupdate () {
|
|
||||||
( cd $_ANTIGEN_INSTALL_DIR
|
|
||||||
if [[ ! ( -d .git || -f .git ) ]]; then
|
|
||||||
echo "Your copy of antigen doesn't appear to be a git clone. " \
|
|
||||||
"The 'selfupdate' command cannot work in this case."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
local head="$(git rev-parse --abbrev-ref HEAD)"
|
|
||||||
if [[ $head == "HEAD" ]]; then
|
|
||||||
# If current head is detached HEAD, checkout to master branch.
|
|
||||||
git checkout master
|
|
||||||
fi
|
|
||||||
git pull
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-cleanup () {
|
|
||||||
|
|
||||||
# Cleanup unused repositories.
|
|
||||||
|
|
||||||
local force=false
|
|
||||||
if [[ $1 == --force ]]; then
|
|
||||||
force=true
|
|
||||||
fi
|
|
||||||
|
|
||||||
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 \
|
|
||||||
<(-antigen-echo-record |
|
|
||||||
awk '$4 == "true" {print $1}' |
|
|
||||||
while read line; do
|
|
||||||
-antigen-get-clone-dir "$line"
|
|
||||||
done |
|
|
||||||
sort -u) \
|
|
||||||
<(\ls -d "$ADOTDIR/repos/"* | sort -u))"
|
|
||||||
|
|
||||||
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.'
|
|
||||||
echo "$unused_clones" |
|
|
||||||
while read line; do
|
|
||||||
-antigen-get-clone-url "$line"
|
|
||||||
done |
|
|
||||||
sed -e 's/^/ /' -e 's/|/, branch /'
|
|
||||||
|
|
||||||
if $force || (echo -n '\nDelete them all? [y/N] '; read -q); then
|
|
||||||
echo
|
|
||||||
echo
|
|
||||||
echo "$unused_clones" | while read line; do
|
|
||||||
echo -n "Deleting clone for $(-antigen-get-clone-url "$line")..."
|
|
||||||
rm -rf "$line"
|
|
||||||
echo ' done.'
|
|
||||||
done
|
|
||||||
else
|
|
||||||
echo
|
|
||||||
echo Nothing deleted.
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-use () {
|
|
||||||
if [[ $1 == oh-my-zsh ]]; then
|
|
||||||
-antigen-use-oh-my-zsh
|
|
||||||
elif [[ $1 == prezto ]]; then
|
|
||||||
-antigen-use-prezto
|
|
||||||
else
|
|
||||||
echo 'Usage: antigen-use <library-name>' >&2
|
|
||||||
echo 'Where <library-name> is any one of the following:' >&2
|
|
||||||
echo ' * oh-my-zsh' >&2
|
|
||||||
echo ' * prezto' >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-use-oh-my-zsh () {
|
|
||||||
if [[ -z "$ZSH" ]]; then
|
|
||||||
export ZSH="$(-antigen-get-clone-dir "$ANTIGEN_DEFAULT_REPO_URL")"
|
|
||||||
fi
|
|
||||||
if [[ -z "$ZSH_CACHE_DIR" ]]; then
|
|
||||||
export ZSH_CACHE_DIR="$ZSH/cache/"
|
|
||||||
fi
|
|
||||||
antigen-bundle --loc=lib
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-use-prezto () {
|
|
||||||
antigen-bundle sorin-ionescu/prezto
|
|
||||||
export ZDOTDIR=$ADOTDIR/repos/
|
|
||||||
}
|
|
||||||
|
|
||||||
# For backwards compatibility.
|
|
||||||
antigen-lib () {
|
|
||||||
-antigen-use-oh-my-zsh
|
|
||||||
echo '`antigen-lib` is deprecated and will soon be removed.'
|
|
||||||
echo 'Use `antigen-use oh-my-zsh` instead.'
|
|
||||||
}
|
|
||||||
|
|
||||||
# For backwards compatibility.
|
|
||||||
antigen-prezto-lib () {
|
|
||||||
-antigen-use-prezto
|
|
||||||
echo '`antigen-prezto-lib` is deprecated and will soon be removed.'
|
|
||||||
echo 'Use `antigen-use prezto` instead.'
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-theme () {
|
|
||||||
|
|
||||||
if [[ "$1" != */* && "$1" != --* ]]; then
|
|
||||||
# The first argument is just a name of the plugin, to be picked up from
|
|
||||||
# the default repo.
|
|
||||||
local name="${1:-robbyrussell}"
|
|
||||||
antigen-bundle --loc=themes/$name --btype=theme
|
|
||||||
|
|
||||||
else
|
|
||||||
antigen-bundle "$@" --btype=theme
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-apply () {
|
|
||||||
|
|
||||||
# Initialize completion.
|
|
||||||
local cdef
|
|
||||||
|
|
||||||
# Load the compinit module. This will readefine the `compdef` function to
|
|
||||||
# the one that actually initializes completions.
|
|
||||||
autoload -U compinit
|
|
||||||
if [[ -z $ANTIGEN_COMPDUMPFILE ]]; then
|
|
||||||
compinit -i
|
|
||||||
else
|
|
||||||
compinit -i -d $ANTIGEN_COMPDUMPFILE
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Apply all `compinit`s that have been deferred.
|
|
||||||
eval "$(for cdef in $__deferred_compdefs; do
|
|
||||||
echo compdef $cdef
|
|
||||||
done)"
|
|
||||||
|
|
||||||
unset __deferred_compdefs
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-list () {
|
|
||||||
# List all currently installed bundles.
|
|
||||||
if [[ -z "$_ANTIGEN_BUNDLE_RECORD" ]]; then
|
|
||||||
echo "You don't have any bundles." >&2
|
|
||||||
return 1
|
|
||||||
else
|
|
||||||
-antigen-echo-record | sort -u
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-snapshot () {
|
|
||||||
|
|
||||||
local snapshot_file="${1:-antigen-shapshot}"
|
|
||||||
|
|
||||||
# The snapshot content lines are pairs of repo-url and git version hash, in
|
|
||||||
# the form:
|
|
||||||
# <version-hash> <repo-url>
|
|
||||||
local snapshot_content="$(-antigen-echo-record |
|
|
||||||
grep 'true$' |
|
|
||||||
sed 's/ .*$//' |
|
|
||||||
sort -u |
|
|
||||||
while read url; do
|
|
||||||
local dir="$(-antigen-get-clone-dir "$url")"
|
|
||||||
local version_hash="$(cd "$dir" && git rev-parse HEAD)"
|
|
||||||
echo "$version_hash $url"
|
|
||||||
done)"
|
|
||||||
|
|
||||||
{
|
|
||||||
# The first line in the snapshot file is for metadata, in the form:
|
|
||||||
# key='value'; key='value'; key='value';
|
|
||||||
# Where `key`s are valid shell variable names.
|
|
||||||
|
|
||||||
# Snapshot version. Has no relation to antigen version. If the snapshot
|
|
||||||
# file format changes, this number can be incremented.
|
|
||||||
echo -n "version='1';"
|
|
||||||
|
|
||||||
# Snapshot creation date+time.
|
|
||||||
echo -n " created_on='$(date)';"
|
|
||||||
|
|
||||||
# Add a checksum with the md5 checksum of all the snapshot lines.
|
|
||||||
chksum() { (md5sum; test $? = 127 && md5) 2>/dev/null | cut -d' ' -f1 }
|
|
||||||
local checksum="$(echo "$snapshot_content" | chksum)"
|
|
||||||
unset -f chksum;
|
|
||||||
echo -n " checksum='${checksum%% *}';"
|
|
||||||
|
|
||||||
# A newline after the metadata and then the snapshot lines.
|
|
||||||
echo "\n$snapshot_content"
|
|
||||||
|
|
||||||
} > "$snapshot_file"
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
antigen-restore () {
|
|
||||||
|
|
||||||
if [[ $# == 0 ]]; then
|
|
||||||
echo 'Please provide a snapshot file to restore from.' >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local snapshot_file="$1"
|
|
||||||
|
|
||||||
# TODO: Before doing anything with the snapshot file, verify its checksum.
|
|
||||||
# If it fails, notify this to the user and confirm if restore should
|
|
||||||
# proceed.
|
|
||||||
|
|
||||||
echo -n "Restoring from $snapshot_file..."
|
|
||||||
|
|
||||||
sed -n '1!p' "$snapshot_file" |
|
|
||||||
while read line; do
|
|
||||||
|
|
||||||
local version_hash="${line%% *}"
|
|
||||||
local url="${line##* }"
|
|
||||||
local clone_dir="$(-antigen-get-clone-dir "$url")"
|
|
||||||
|
|
||||||
if [[ ! -d $clone_dir ]]; then
|
|
||||||
git clone "$url" "$clone_dir" &> /dev/null
|
|
||||||
fi
|
|
||||||
|
|
||||||
(cd "$clone_dir" && git checkout $version_hash) &> /dev/null
|
|
||||||
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ' done.'
|
|
||||||
echo 'Please open a new shell to get the restored changes.'
|
|
||||||
}
|
|
||||||
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
# 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"
|
|
||||||
if [[ -z "$cmd" ]]; then
|
|
||||||
echo 'Antigen: Please give a command to run.' >&2
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
shift
|
|
||||||
|
|
||||||
if functions "antigen-$cmd" > /dev/null; then
|
|
||||||
"antigen-$cmd" "$@"
|
|
||||||
else
|
|
||||||
echo "Antigen: Unknown command: $cmd" >&2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-parse-args () {
|
|
||||||
# An argument parsing functionality to parse arguments the *antigen* way :).
|
|
||||||
# Takes one first argument (called spec), which dictates how to parse and
|
|
||||||
# the rest of the arguments are parsed. Outputs a piece of valid shell code
|
|
||||||
# that can be passed to `eval` inside a function which creates the arguments
|
|
||||||
# and their values as local variables. Suggested use is to set the defaults
|
|
||||||
# to all arguments first and then eval the output of this function.
|
|
||||||
|
|
||||||
# Spec: Only long argument supported. No support for parsing short options.
|
|
||||||
# The spec must have two sections, separated by a `;`.
|
|
||||||
# '<positional-arguments>;<keyword-only-arguments>'
|
|
||||||
# Positional arguments are passed as just values, like `command a b`.
|
|
||||||
# Keyword arguments are passed as a `--name=value` pair, like `command
|
|
||||||
# --arg1=a --arg2=b`.
|
|
||||||
|
|
||||||
# Each argument in the spec is separated by a `,`. Each keyword argument can
|
|
||||||
# end in a `:` to specifiy that this argument wants a value, otherwise it
|
|
||||||
# doesn't take a value. (The value in the output when the keyword argument
|
|
||||||
# doesn't have a `:` is `true`).
|
|
||||||
|
|
||||||
# Arguments in either section can end with a `?` (should come after `:`, if
|
|
||||||
# both are present), means optional. FIXME: Not yet implemented.
|
|
||||||
|
|
||||||
# See the test file, tests/arg-parser.t for (working) examples.
|
|
||||||
|
|
||||||
local spec="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
# Sanitize the spec
|
|
||||||
spec="$(echo "$spec" | tr '\n' ' ' | sed 's/[[:space:]]//g')"
|
|
||||||
|
|
||||||
local code=''
|
|
||||||
|
|
||||||
--add-var () {
|
|
||||||
test -z "$code" || code="$code\n"
|
|
||||||
code="${code}local $1='$2'"
|
|
||||||
}
|
|
||||||
|
|
||||||
local positional_args="$(echo "$spec" | cut -d\; -f1)"
|
|
||||||
local positional_args_count="$(echo $positional_args |
|
|
||||||
awk -F, '{print NF}')"
|
|
||||||
|
|
||||||
# Set spec values based on the positional arguments.
|
|
||||||
local i=1
|
|
||||||
while [[ -n $1 && $1 != --* ]]; do
|
|
||||||
|
|
||||||
if (( $i > $positional_args_count )); then
|
|
||||||
echo "Only $positional_args_count positional arguments allowed." >&2
|
|
||||||
echo "Found at least one more: '$1'" >&2
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local name_spec="$(echo "$positional_args" | cut -d, -f$i)"
|
|
||||||
local name="${${name_spec%\?}%:}"
|
|
||||||
local value="$1"
|
|
||||||
|
|
||||||
if echo "$code" | grep -l "^local $name=" &> /dev/null; then
|
|
||||||
echo "Argument '$name' repeated with the value '$value'". >&2
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
--add-var $name "$value"
|
|
||||||
|
|
||||||
shift
|
|
||||||
i=$(($i + 1))
|
|
||||||
done
|
|
||||||
|
|
||||||
local keyword_args="$(
|
|
||||||
# Positional arguments can double up as keyword arguments too.
|
|
||||||
echo "$positional_args" | tr , '\n' |
|
|
||||||
while read line; do
|
|
||||||
if [[ $line == *\? ]]; then
|
|
||||||
echo "${line%?}:?"
|
|
||||||
else
|
|
||||||
echo "$line:"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Specified keyword arguments.
|
|
||||||
echo "$spec" | cut -d\; -f2 | tr , '\n'
|
|
||||||
)"
|
|
||||||
local keyword_args_count="$(echo $keyword_args | awk -F, '{print NF}')"
|
|
||||||
|
|
||||||
# Set spec values from keyword arguments, if any. The remaining arguments
|
|
||||||
# are all assumed to be keyword arguments.
|
|
||||||
while [[ $1 == --* ]]; do
|
|
||||||
# Remove the `--` at the start.
|
|
||||||
local arg="${1#--}"
|
|
||||||
|
|
||||||
# Get the argument name and value.
|
|
||||||
if [[ $arg != *=* ]]; then
|
|
||||||
local name="$arg"
|
|
||||||
local value=''
|
|
||||||
else
|
|
||||||
local name="${arg%\=*}"
|
|
||||||
local value="${arg#*=}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if echo "$code" | grep -l "^local $name=" &> /dev/null; then
|
|
||||||
echo "Argument '$name' repeated with the value '$value'". >&2
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# The specification for this argument, used for validations.
|
|
||||||
local arg_line="$(echo "$keyword_args" |
|
|
||||||
egrep "^$name:?\??" | head -n1)"
|
|
||||||
|
|
||||||
# Validate argument and value.
|
|
||||||
if [[ -z $arg_line ]]; then
|
|
||||||
# This argument is not known to us.
|
|
||||||
echo "Unknown argument '$name'." >&2
|
|
||||||
return
|
|
||||||
|
|
||||||
elif (echo "$arg_line" | grep -l ':' &> /dev/null) &&
|
|
||||||
[[ -z $value ]]; then
|
|
||||||
# This argument needs a value, but is not provided.
|
|
||||||
echo "Required argument for '$name' not provided." >&2
|
|
||||||
return
|
|
||||||
|
|
||||||
elif (echo "$arg_line" | grep -vl ':' &> /dev/null) &&
|
|
||||||
[[ -n $value ]]; then
|
|
||||||
# This argument doesn't need a value, but is provided.
|
|
||||||
echo "No argument required for '$name', but provided '$value'." >&2
|
|
||||||
return
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z $value ]]; then
|
|
||||||
value=true
|
|
||||||
fi
|
|
||||||
|
|
||||||
--add-var "${name//-/_}" "$value"
|
|
||||||
shift
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "$code"
|
|
||||||
|
|
||||||
unfunction -- --add-var
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Echo the bundle specs as in the record. The first line is not echoed since it
|
|
||||||
# is a blank line.
|
|
||||||
-antigen-echo-record () {
|
|
||||||
echo "$_ANTIGEN_BUNDLE_RECORD" | sed -n '1!p'
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-env-setup () {
|
|
||||||
|
|
||||||
# Helper function: Same as `export $1=$2`, but will only happen if the name
|
|
||||||
# specified by `$1` is not already set.
|
|
||||||
-set-default () {
|
|
||||||
local arg_name="$1"
|
|
||||||
local arg_value="$2"
|
|
||||||
eval "test -z \"\$$arg_name\" && export $arg_name='$arg_value'"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Pre-startup initializations.
|
|
||||||
-set-default ANTIGEN_DEFAULT_REPO_URL \
|
|
||||||
https://github.com/robbyrussell/oh-my-zsh.git
|
|
||||||
-set-default ADOTDIR $HOME/.antigen
|
|
||||||
|
|
||||||
# Setup antigen's own completion.
|
|
||||||
compdef _antigen antigen
|
|
||||||
|
|
||||||
# Remove private functions.
|
|
||||||
unfunction -- -set-default
|
|
||||||
}
|
|
||||||
|
|
||||||
# Setup antigen's autocompletion
|
|
||||||
_antigen () {
|
|
||||||
local -a _1st_arguments
|
|
||||||
_1st_arguments=(
|
|
||||||
'bundle:Install and load the given plugin'
|
|
||||||
'bundles:Bulk define bundles'
|
|
||||||
'update:Update all bundles'
|
|
||||||
'revert:Revert the state of all bundles to how they were before the last antigen update'
|
|
||||||
'list:List out the currently loaded bundles'
|
|
||||||
'cleanup:Clean up the clones of repos which are not used by any bundles currently loaded'
|
|
||||||
'use:Load any (supported) zsh pre-packaged framework'
|
|
||||||
'theme:Switch the prompt theme'
|
|
||||||
'apply:Load all bundle completions'
|
|
||||||
'snapshot:Create a snapshot of all the active clones'
|
|
||||||
'restore:Restore the bundles state as specified in the snapshot'
|
|
||||||
'selfupdate:Update antigen itself'
|
|
||||||
'help:Print help message'
|
|
||||||
)
|
|
||||||
|
|
||||||
__bundle() {
|
|
||||||
_arguments \
|
|
||||||
'--loc[Path to the location <path-to/location>]' \
|
|
||||||
'--url[Path to the repository <github-account/repository>]' \
|
|
||||||
'--branch[Git branch name]' \
|
|
||||||
'--no-local-clone[Do not create a clone]' \
|
|
||||||
'--btype[Indicates whether the bundle is a theme or a simple plugin]'
|
|
||||||
}
|
|
||||||
|
|
||||||
__cleanup() {
|
|
||||||
_arguments \
|
|
||||||
'--force[Do not ask for confirmation]'
|
|
||||||
}
|
|
||||||
|
|
||||||
_arguments '*:: :->command'
|
|
||||||
|
|
||||||
if (( CURRENT == 1 )); then
|
|
||||||
_describe -t commands "antigen command" _1st_arguments
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
local -a _command_args
|
|
||||||
case "$words[1]" in
|
|
||||||
bundle)
|
|
||||||
__bundle
|
|
||||||
;;
|
|
||||||
use)
|
|
||||||
compadd "$@" "oh-my-zsh" "prezto"
|
|
||||||
;;
|
|
||||||
cleanup)
|
|
||||||
__cleanup
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
-antigen-env-setup
|
|
@ -1,2 +0,0 @@
|
|||||||
install: --no-rdoc --no-ri
|
|
||||||
update: --no-rdoc --no-ri
|
|
@ -1,16 +0,0 @@
|
|||||||
{
|
|
||||||
"default_hour": 9,
|
|
||||||
"linewrap": 79,
|
|
||||||
"encrypt": false,
|
|
||||||
"default_minute": 0,
|
|
||||||
"tagsymbols": "@",
|
|
||||||
"editor": "emacsclient -a \"\" -t",
|
|
||||||
"timeformat": "%Y-%m-%d %H:%M",
|
|
||||||
"highlight": true,
|
|
||||||
"journals": {
|
|
||||||
"default": {
|
|
||||||
"journal": "/Users/dustinswan/Sync/journal.txt",
|
|
||||||
"encrypt": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,180 +0,0 @@
|
|||||||
# Keys: brew, cask, arch, aur, pip, gem, npm
|
|
||||||
|
|
||||||
# Buildy stuff
|
|
||||||
brew-cask:
|
|
||||||
brew: brew-cask
|
|
||||||
node:
|
|
||||||
brew: node
|
|
||||||
arch: nodejs
|
|
||||||
openssl:
|
|
||||||
brew: openssl
|
|
||||||
arch: openssl
|
|
||||||
python:
|
|
||||||
brew: python --with-brewed-openssl
|
|
||||||
arch: python2
|
|
||||||
ruby:
|
|
||||||
brew: chruby ruby-build
|
|
||||||
aur: chruby ruby-build
|
|
||||||
haskell:
|
|
||||||
brew: haskell-platform
|
|
||||||
arch: ghc cabal-install haddock happy alex
|
|
||||||
|
|
||||||
# Unixy stuff
|
|
||||||
coreutils:
|
|
||||||
brew: coreutils
|
|
||||||
arch: coreutils
|
|
||||||
findutils:
|
|
||||||
brew: findutils
|
|
||||||
arch: findutils
|
|
||||||
aspell:
|
|
||||||
brew: aspell
|
|
||||||
arch: apsell
|
|
||||||
git:
|
|
||||||
brew: git
|
|
||||||
arch: git
|
|
||||||
perforce:
|
|
||||||
brew: perforce
|
|
||||||
aur: p4
|
|
||||||
tmux:
|
|
||||||
brew: tmux
|
|
||||||
arch: tmux
|
|
||||||
wget:
|
|
||||||
brew: wget --enable-iri
|
|
||||||
arch: wget
|
|
||||||
weechat:
|
|
||||||
brew: weechat --with-aspell --with-python --with-ruby
|
|
||||||
arch: weechat
|
|
||||||
ranger:
|
|
||||||
brew: ranger
|
|
||||||
arch: ranger
|
|
||||||
bash:
|
|
||||||
brew: bash
|
|
||||||
arch: bash
|
|
||||||
zsh:
|
|
||||||
brew: zsh
|
|
||||||
arch: zsh
|
|
||||||
ack:
|
|
||||||
brew: ack
|
|
||||||
arch: ack
|
|
||||||
tree:
|
|
||||||
brew: tree
|
|
||||||
arch: tree
|
|
||||||
openssh:
|
|
||||||
brew: openssh --with-brewed-openssl
|
|
||||||
ssh-copy-id:
|
|
||||||
brew: ssh-copy-id
|
|
||||||
ffind:
|
|
||||||
brew: ffind # No arch package
|
|
||||||
vim:
|
|
||||||
brew: macvim --HEAD --override-system-vim
|
|
||||||
arch: gvim
|
|
||||||
imagemagick:
|
|
||||||
brew: imagemagick
|
|
||||||
arch: imagemagick
|
|
||||||
imagesnap:
|
|
||||||
brew: imagesnap # TODO Linux
|
|
||||||
mosh:
|
|
||||||
brew: mosh
|
|
||||||
arch: mosh
|
|
||||||
ca-certificates:
|
|
||||||
brew: curl-ca-bundle
|
|
||||||
arch: ca-certificates
|
|
||||||
watch:
|
|
||||||
brew: watch
|
|
||||||
gnupg:
|
|
||||||
brew: gnupg
|
|
||||||
arch: gnupg
|
|
||||||
gpg-agent:
|
|
||||||
brew: gpg-agent
|
|
||||||
gpgme:
|
|
||||||
brew: gpgme
|
|
||||||
arch: gpgme
|
|
||||||
mplayer:
|
|
||||||
brew: mplayer
|
|
||||||
arch: mplayer
|
|
||||||
ncmpcpp:
|
|
||||||
brew: ncmpcpp --clock --outputs --visualizer --HEAD
|
|
||||||
arch: ncmpcpp
|
|
||||||
mopidy: # TODO
|
|
||||||
pip: mopidy
|
|
||||||
gstreamer:
|
|
||||||
brew: gstreamer010 # TODO gst-plugnis*** --with-***
|
|
||||||
|
|
||||||
# Mail stuff
|
|
||||||
msmtp:
|
|
||||||
brew: msmtp
|
|
||||||
arch: msmtp
|
|
||||||
urlview:
|
|
||||||
brew: urlview
|
|
||||||
aur: urlview
|
|
||||||
offlineimap:
|
|
||||||
brew: offlineimap
|
|
||||||
arch: offlineimap
|
|
||||||
notmuch:
|
|
||||||
brew: notmuch
|
|
||||||
arch: notmuch
|
|
||||||
alot:
|
|
||||||
aur: alot
|
|
||||||
# brew: alot # TODO
|
|
||||||
#afew: # TODO
|
|
||||||
|
|
||||||
# Multiplatform desktop stuff
|
|
||||||
|
|
||||||
spotify:
|
|
||||||
cask: spotify
|
|
||||||
aur: spotify
|
|
||||||
// All OSes
|
|
||||||
firefox:
|
|
||||||
cask: firefox
|
|
||||||
arch: firefox
|
|
||||||
chrome:
|
|
||||||
cask: google-chrome
|
|
||||||
arch: chromium
|
|
||||||
dropbox:
|
|
||||||
cask: dropbox
|
|
||||||
aur: dropbox
|
|
||||||
google-drive:
|
|
||||||
cask: google-drive # TODO linux
|
|
||||||
vlc:
|
|
||||||
cask: vlc
|
|
||||||
arch: vlc
|
|
||||||
electrum:
|
|
||||||
cask: electrum
|
|
||||||
aur: electrum
|
|
||||||
steam:
|
|
||||||
cask: steam
|
|
||||||
arch: steam
|
|
||||||
sketchup:
|
|
||||||
cask: sketchup # TODO linux
|
|
||||||
truecrypt:
|
|
||||||
cask: truecrypt
|
|
||||||
arch: truecrypt
|
|
||||||
|
|
||||||
# Mac-only desktop stuff
|
|
||||||
alfred:
|
|
||||||
cask: alfred
|
|
||||||
slate:
|
|
||||||
cask: slate
|
|
||||||
charles:
|
|
||||||
cask: charles
|
|
||||||
iterm2:
|
|
||||||
brew: iterm2
|
|
||||||
keyremap4macbook:
|
|
||||||
cask: keyremap4macbook
|
|
||||||
the-unarchiver:
|
|
||||||
cask: the-unarchiver
|
|
||||||
launchrocket:
|
|
||||||
cask: launchrocket
|
|
||||||
flux:
|
|
||||||
cask: flux
|
|
||||||
xquartz:
|
|
||||||
cask: xquartz
|
|
||||||
macpass:
|
|
||||||
cask: macpass
|
|
||||||
time-out:
|
|
||||||
cask: time-out
|
|
||||||
|
|
||||||
# Linux-only
|
|
||||||
urxvt:
|
|
||||||
arch: rxvt-unicode
|
|
||||||
# TODO wm
|
|
@ -1,18 +0,0 @@
|
|||||||
import subprocess
|
|
||||||
import os
|
|
||||||
|
|
||||||
def gmail_password():
|
|
||||||
path = os.environ['HOME'] + "/.gmail_password.gpg"
|
|
||||||
args = ["gpg", "-d", path]
|
|
||||||
try:
|
|
||||||
return subprocess.check_output(args).rstrip()
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
return "".strip()
|
|
||||||
|
|
||||||
def iocom_password():
|
|
||||||
path = os.environ['HOME'] + "/.iocom_password.gpg"
|
|
||||||
args = ["gpg", "-d", path]
|
|
||||||
try:
|
|
||||||
return subprocess.check_output(args).rstrip()
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
return "".strip()
|
|
@ -1,22 +0,0 @@
|
|||||||
ignorekeys add www\.fastmail\.com
|
|
||||||
ignorekeys add mail\.google\.com
|
|
||||||
ignorekeys add apps\.rackspace\.com\/a\/webmail.php
|
|
||||||
ignorekeys add google\.com/calendar
|
|
||||||
ignorekeys add duckduckgo\.com
|
|
||||||
ignorekeys add docs\.google\.com
|
|
||||||
ignorekeys add feedly\.com
|
|
||||||
ignorekeys add reddit\.com
|
|
||||||
ignorekeys add tumblr\.com
|
|
||||||
ignorekeys add cmd\.fm
|
|
||||||
ignorekeys add getpocket\.com
|
|
||||||
ignorekeys add google\.com\/search
|
|
||||||
ignorekeys add dswan\.insors\.net\/webclient
|
|
||||||
ignorekeys add visitest\.iocom\.com\/webclient
|
|
||||||
ignorekeys add visimeet\.iocom\.com\/webclient
|
|
||||||
ignorekeys add lingvist\.io
|
|
||||||
ignorekeys add duolingo\.com
|
|
||||||
|
|
||||||
set gui=nonavigation
|
|
||||||
|
|
||||||
map <M-l> :open
|
|
||||||
map <M-t> :tabopen <CR> :open
|
|
Loading…
Reference in New Issue