1
0
Fork 0
mirror of https://github.com/yavook/kiwi-scp.git synced 2024-12-25 18:42:59 +00:00
kiwi-scp/kiwi

147 lines
3.1 KiB
Text
Raw Normal View History

2020-08-04 00:56:29 +00:00
#!/bin/bash
#############
# CONSTANTS #
2020-08-20 22:04:26 +00:00
#############
2020-08-04 00:56:29 +00:00
2020-08-04 14:38:51 +00:00
# base config filename
KIWI_CONF_NAME="kiwi.yml"
# version tag filename
KIWI_VERSION_TAG="etc/version_tag"
# dependencies to run kiwi-config
KIWI_DEPS=(python3 pipenv less docker docker-compose)
2020-08-20 22:04:26 +00:00
# base install dir
2020-08-04 14:38:51 +00:00
KIWI_BASEDIR="${HOME}/.cache/kiwi-config"
# per-user env setup script
KIWI_ENVFILE="${HOME}/.kiwienv"
2020-08-04 00:56:29 +00:00
# repository uri
KIWI_REPO="https://github.com/ldericher/kiwi-config"
# use latest version by default
KIWI_VERSION="master"
###################
# DYNAMIC STRINGS #
###################
# directory of correct installation
function kiwi_installdir() {
echo "${KIWI_BASEDIR}/${KIWI_VERSION}"
}
# src directory in installed version
function kiwi_root() {
echo "$(kiwi_installdir)/src"
}
# main script in installed version
function kiwi_executable() {
echo "$(kiwi_root)/kiwi-config.py"
}
# cache current work directory
WORKDIR="$(pwd)"
##################
# PER-USER SETUP #
##################
# add in environment setup
if [ -f "${KIWI_ENVFILE}" ]; then
2020-08-20 22:04:26 +00:00
# shellcheck source=$HOME/.kiwienv
source "${KIWI_ENVFILE}"
fi
##########
# CHECKS #
##########
for dep in "${KIWI_DEPS[@]}"; do
2020-08-20 22:04:26 +00:00
if ! command -v "${dep}" &>/dev/null; then
echo "Dependency '${dep}' not found, please install!"
exit 1
fi
done
2020-08-04 00:56:29 +00:00
########
# MAIN #
########
# check if pwd is a kiwi folder
if [ -f "./${KIWI_CONF_NAME}" ]; then
2020-08-20 22:04:26 +00:00
# determine needed kiwi-config version
re_version_line='version\s*:\s*'
2020-08-24 12:48:50 +00:00
eval "$(grep -E "${re_version_line}" "./${KIWI_CONF_NAME}" | sed -r "s/${re_version_line}/KIWI_VERSION=/")"
2020-08-04 00:56:29 +00:00
fi
# install if kiwi-config not found
if [ ! -x "$(kiwi_executable)" ]; then
2020-08-20 22:04:26 +00:00
echo -n "Installing kiwi-config v${KIWI_VERSION} into ${KIWI_BASEDIR} ... "
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
### TODO: post-release version ###
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# # switch to temp dir
# tmpdir=$(mktemp -d)
# cd "${tmpdir}" || :
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# # download archive
# wget "${KIWI_REPO}/archive/${KIWI_VERSION}.zip"
# unzip "${KIWI_VERSION}.zip"
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# # read archive version tag
# cd "kiwi-config-${KIWI_VERSION}" || :
# KIWI_VERSION=$(cat "./src/${KIWI_VERSION_TAG}")
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# # install archive
# mkdir -p "$(kiwi_installdir)"
# mv "src" "Pipfile" "Pipfile.lock" "$(kiwi_installdir)/"
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# # discard temp dir
# cd "${WORKDIR}" || :
# rm -rf "${tmpdir}"
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# echo "OK"
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
### pre-release version ###
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# use this directory as archive
cd "$(dirname "$(readlink -f "${0}")")" || :
2020-08-04 00:56:29 +00:00
2020-08-20 22:04:26 +00:00
# read this version tag
KIWI_VERSION=$(cat "./src/${KIWI_VERSION_TAG}")
2020-08-20 22:04:26 +00:00
if [ -x "$(kiwi_executable)" ]; then
# after version update: no need to install
echo "kiwi-config v${KIWI_VERSION} found!"
else
# install this
mkdir -p "${KIWI_BASEDIR}"
ln -s "$(readlink -f .)" "$(kiwi_installdir)"
# cd
echo "OK"
fi
2020-08-04 00:56:29 +00:00
fi
# check virtualenv
2020-08-20 22:04:26 +00:00
cd "$(kiwi_installdir)" || :
if ! pipenv --venv &>/dev/null; then
# install virtualenv
echo -n "Preparing virtualenv ... "
2020-08-20 22:04:26 +00:00
pipenv sync &>/dev/null
echo "OK"
fi
# go back to the original work directory
2020-08-20 22:04:26 +00:00
cd "${WORKDIR}" || :
# setup main environment
KIWI_ROOT="$(kiwi_root)"
export KIWI_ROOT
export KIWI_CONF_NAME
2020-08-20 22:04:26 +00:00
export PIPENV_VERBOSITY=-1
2020-08-04 14:38:51 +00:00
2020-08-04 00:56:29 +00:00
# run main script
2020-08-20 22:04:26 +00:00
exec pipenv run "$(kiwi_executable)" "${@}"