diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d3884f0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Jörn-Michael Miehe + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/kiwi b/kiwi index d7c927d..6f09e4a 100755 --- a/kiwi +++ b/kiwi @@ -2,7 +2,7 @@ ############# # CONSTANTS # -############# +############# # base config filename KIWI_CONF_NAME="kiwi.yml" @@ -11,7 +11,7 @@ KIWI_VERSION_TAG="etc/version_tag" # dependencies to run kiwi-config KIWI_DEPS=(python3 pipenv less docker docker-compose) -# base install dir +# base install dir KIWI_BASEDIR="${HOME}/.cache/kiwi-config" # per-user env setup script KIWI_ENVFILE="${HOME}/.kiwienv" @@ -49,8 +49,8 @@ WORKDIR="$(pwd)" # add in environment setup if [ -f "${KIWI_ENVFILE}" ]; then - # shellcheck source=$HOME/.kiwienv - source "${KIWI_ENVFILE}" + # shellcheck source=$HOME/.kiwienv + source "${KIWI_ENVFILE}" fi ########## @@ -58,7 +58,7 @@ fi ########## for dep in "${KIWI_DEPS[@]}"; do - if ! command -v "${dep}" &> /dev/null; then + if ! command -v "${dep}" &>/dev/null; then echo "Dependency '${dep}' not found, please install!" exit 1 fi @@ -70,77 +70,77 @@ done # check if pwd is a kiwi folder if [ -f "./${KIWI_CONF_NAME}" ]; then - # determine needed kiwi-config version - re_version_line='version\s*:\s*' - eval "$(grep -E "${re_version_line}" "./${KIWI_CONF_NAME}" | sed -r 's/'"${re_version_line}"'/KIWI_VERSION=/')" + # determine needed kiwi-config version + re_version_line='version\s*:\s*' + eval "$(grep -E "${re_version_line}" "./${KIWI_CONF_NAME}" | sed -r 's/'"${re_version_line}"'/KIWI_VERSION=/')" fi # install if kiwi-config not found if [ ! -x "$(kiwi_executable)" ]; then - echo -n "Installing kiwi-config v${KIWI_VERSION} into ${KIWI_BASEDIR} ... " + echo -n "Installing kiwi-config v${KIWI_VERSION} into ${KIWI_BASEDIR} ... " - ### TODO: post-release version ### + ### TODO: post-release version ### - # # switch to temp dir - # workdir=$(pwd) - # tmpdir=$(mktemp -d) - # cd "${tmpdir}" + # # switch to temp dir + # tmpdir=$(mktemp -d) + # cd "${tmpdir}" || : - # # download archive - # wget "${KIWI_REPO}/archive/${KIWI_VERSION}.zip" - # unzip "${KIWI_VERSION}.zip" + # # download archive + # wget "${KIWI_REPO}/archive/${KIWI_VERSION}.zip" + # unzip "${KIWI_VERSION}.zip" - # # read archive version tag - # cd "kiwi-config-${KIWI_VERSION}" - # export KIWI_VERSION=$(cat ./version-tag) + # # read archive version tag + # cd "kiwi-config-${KIWI_VERSION}" || : + # KIWI_VERSION=$(cat "./src/${KIWI_VERSION_TAG}") - # # install archive - # mkdir -p "${KIWI_BASEDIR}" - # mv ./src "${KIWI_BASEDIR}/${KIWI_VERSION}" + # # install archive + # mkdir -p "$(kiwi_installdir)" + # mv "src" "Pipfile" "Pipfile.lock" "$(kiwi_installdir)/" - # # discard temp dir - # cd "${workdir}" - # rm -rf "${tmpdir}" + # # discard temp dir + # cd "${WORKDIR}" || : + # rm -rf "${tmpdir}" - # echo "OK" + # echo "OK" - ### pre-release version ### + ### pre-release version ### - # use this directory as archive - cd "$(dirname "$(readlink -f "${0}")")" ||: + # use this directory as archive + cd "$(dirname "$(readlink -f "${0}")")" || : - # read this version tag - KIWI_VERSION=$(cat "./src/${KIWI_VERSION_TAG}") + # read this version tag + KIWI_VERSION=$(cat "./src/${KIWI_VERSION_TAG}") - 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 + 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 fi # check virtualenv -cd "$(kiwi_installdir)" ||: -if ! pipenv --venv &> /dev/null; then +cd "$(kiwi_installdir)" || : +if ! pipenv --venv &>/dev/null; then # install virtualenv echo -n "Preparing virtualenv ... " - pipenv sync &> /dev/null + pipenv sync &>/dev/null echo "OK" fi # go back to the original work directory -cd "${WORKDIR}" ||: +cd "${WORKDIR}" || : # setup main environment KIWI_ROOT="$(kiwi_root)" export KIWI_ROOT export KIWI_CONF_NAME +export PIPENV_VERBOSITY=-1 # run main script -exec pipenv run "$(kiwi_executable)" "${@}" \ No newline at end of file +exec pipenv run "$(kiwi_executable)" "${@}" diff --git a/src/etc/kiwi_help.txt b/src/etc/kiwi_help.txt index e08f116..60f6ba2 100644 --- a/src/etc/kiwi_help.txt +++ b/src/etc/kiwi_help.txt @@ -1,8 +1,8 @@ kiwi-config is the tool for container server management. Features: - - Group your services into projects using their own docker-compose.yml - - Bind to file system by using ${TARGETDIR} as volume in docker-compose.yml + - Group services into projects using their own docker-compose.yml + - Bind to the local file system by using ${TARGETDIR} as volume in docker-compose.yml - Add instance-global config files by using ${CONFDIR} as volume in docker-compose.yml - Add instance-global custom values inside docker-compose.yml using config:runtime:env - Build service-specific, private docker images from Dockerfiles