zdharma-continuum.zinit/tests/_support/bootstrap
Vladislav Doster d618467ff0 fix: failing zunit tests & bootstrap script
Signed-off-by: Vladislav Doster <mvdoster@gmail.com>
2023-01-05 04:36:25 -06:00

68 lines
2 KiB
Bash
Executable file

#!/usr/bin/env zsh
setopt NO_GLOBAL_RCS NO_GLOBAL_EXPORT NO_RCS
# Log functions [[[
function error(){ print -P "%F{red}[ERROR]%f: ${1}" && return 1; }
function info() { print -P "%F{green}[INFO]%f:%F{cyan} ${1} %f"; }
function warn() { print -P "%F{yellow}[WARN]%f: ${1}"; }
# ]]]
# Create Zunit test environment [[[
GIT_REPO=$(git rev-parse --show-toplevel)
_mktemp_cmd='mktemp'
if (( ${+commands[gmktemp]} )); then
_mktemp_cmd='gmktemp'
fi
TMP_ZUNIT=$(${_mktemp_cmd} --directory --tmpdir="${GIT_REPO}/tests/_support")
if [[ ! -d ${TMP_ZUNIT} ]]; then
error "zunit temp dir not found"
exit 1
fi
typeset -gAH ZINIT;
ZINIT[HOME_DIR]=${TMP_ZUNIT};
ZINIT[BIN_DIR]=$ZINIT[HOME_DIR]/zinit.git;
ZINIT[COMPLETIONS_DIR]=$ZINIT[HOME_DIR]/completions;
ZINIT[PLUGINS_DIR]=$ZINIT[HOME_DIR]/plugins;
ZINIT[SNIPPETS_DIR]=$ZINIT[HOME_DIR]/snippets;
ZINIT[ZCOMPDUMP_PATH]=$ZINIT[HOME_DIR]/zcompdump;
ZPFX=$ZINIT[HOME_DIR]/polaris;
command git diff > ${ZINIT[HOME_DIR]}/unstaged.diff
info 'creating test env'
git clone \
--dissociate \
--local \
--no-hardlinks \
--reference "${GIT_REPO}" \
"${GIT_REPO}" \
"${ZINIT[BIN_DIR]}"
if (( $? != 0 )); then
error "Unable to copy ${GIT_REPO} to ${TMP_ZUNIT}" >&2
exit 1
fi
if [[ -s $ZINIT[HOME_DIR]/unstaged.diff ]]; then
(
git -C $ZINIT[BIN_DIR] apply $ZINIT[HOME_DIR]/unstaged.diff && \
chmod g-rwX "${ZINIT[HOME_DIR]}" && \
zcompile "${ZINIT[BIN_DIR]}/zinit.zsh"
)
fi
(( $? != 0 )) && { error "Unable to copy ${GIT_REPO} to ${TMP_ZUNIT}" >&2; exit 1 }
{
source $ZINIT[BIN_DIR]/zinit.zsh && \
autoload -Uz _zinit && \
(( ${+_comps} )) && \
_comps[zinit]=_zinit
}
(( $? != 0 )) && { error "Unable to copy ${GIT_REPO} to ${TMP_ZUNIT}" >&2; exit 1 }
# ]]]
# Install Annexes [[[
info 'installing test dependencies'
zinit depth'1' light-mode for zdharma-continuum/zinit-annex-{'binary-symlink','default-ice'}
# ]]]
# vim:ft=zsh:sw=2:sts=2:et:foldmarker=[[[,]]]:foldmethod=marker