From dc879e2c4a0dac5478a1d98058f515aff39ec3b6 Mon Sep 17 00:00:00 2001 From: Edgars Beigarts Date: Fri, 23 Sep 2016 13:33:37 +0300 Subject: [PATCH] Improve posinstall scripts with spellcheck --- rpm/dokku.postinst | 99 ++++++++++++++++++++++-------------------- rpm/herokuish.postinst | 24 +++++----- tests.mk | 2 +- 3 files changed, 66 insertions(+), 59 deletions(-) diff --git a/rpm/dokku.postinst b/rpm/dokku.postinst index 3ae122595..8638a9065 100644 --- a/rpm/dokku.postinst +++ b/rpm/dokku.postinst @@ -1,60 +1,63 @@ -#!/bin/bash +#!/usr/bin/env bash set +o posix # rpm uses /bin/sh that forces bash in posix mode set -eo pipefail; [[ $TRACE ]] && set -x -readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}" -readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}" - -call-sshcommand() { - if [[ -x /usr/local/bin/sshcommand ]]; then - /usr/local/bin/sshcommand "$@" - elif [[ -x /usr/bin/sshcommand ]]; then - /usr/bin/sshcommand "$@" - else - echo "Unable to find sshcommand binary" 1>&2 - exit 1 - fi +setup-user() { + echo "Setting up dokku user" + getent passwd dokku >/dev/null || useradd -m -s /bin/bash dokku + mkdir -p "$DOKKU_ROOT/.ssh" + touch "$DOKKU_ROOT/.ssh/authorized_keys" + chown -R dokku:dokku "$DOKKU_ROOT/.ssh" + usermod -aG docker dokku } -echo "Setting up dokku user" -getent passwd dokku >/dev/null || useradd -m -s /bin/bash dokku -mkdir -p $DOKKU_ROOT/.ssh -touch $DOKKU_ROOT/.ssh/authorized_keys -chown -R dokku:dokku $DOKKU_ROOT/.ssh -usermod -aG docker dokku +setup-storage() { + echo "Setting up storage directories" + mkdir -p "${DOKKU_LIB_ROOT}/data" "${DOKKU_LIB_ROOT}/data/storage" + chown dokku:dokku -R "${DOKKU_LIB_ROOT}/data" +} -echo "Setting up storage directories" -mkdir -p ${DOKKU_LIB_ROOT}/data ${DOKKU_LIB_ROOT}/data/storage -chown dokku:dokku -R ${DOKKU_LIB_ROOT}/data +setup-plugins() { + echo "Setting up plugin directories" + # should be replaced by `plugn init` + mkdir -p "${DOKKU_LIB_ROOT}/core-plugins/available" "${DOKKU_LIB_ROOT}/plugins/available" + mkdir -p "${DOKKU_LIB_ROOT}/core-plugins/enabled" "${DOKKU_LIB_ROOT}/plugins/enabled" + touch "${DOKKU_LIB_ROOT}/core-plugins/config.toml" "${DOKKU_LIB_ROOT}/plugins/config.toml" -echo "Setting up plugin directories" -# should be replaced by `plugn init` -mkdir -p ${DOKKU_LIB_ROOT}/core-plugins/available ${DOKKU_LIB_ROOT}/plugins/available -mkdir -p ${DOKKU_LIB_ROOT}/core-plugins/enabled ${DOKKU_LIB_ROOT}/plugins/enabled -touch ${DOKKU_LIB_ROOT}/core-plugins/config.toml ${DOKKU_LIB_ROOT}/plugins/config.toml + echo "Enabling all core plugins" + find "${DOKKU_LIB_ROOT}/core-plugins/available" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do + if [ ! -d "${DOKKU_LIB_ROOT}/plugins/available/$plugin" ]; then + ln -s "${DOKKU_LIB_ROOT}/core-plugins/available/$plugin" "${DOKKU_LIB_ROOT}/plugins/available/$plugin" + PLUGIN_PATH="${DOKKU_LIB_ROOT}/core-plugins" plugn enable "$plugin" + PLUGIN_PATH="${DOKKU_LIB_ROOT}/plugins" plugn enable "$plugin" + fi + done + find -L "${DOKKU_LIB_ROOT}" -type l -delete + chown dokku:dokku -R "${DOKKU_LIB_ROOT}/plugins" "${DOKKU_LIB_ROOT}/core-plugins" -echo "Enabling all core plugins" -find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do - if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then - ln -s ${DOKKU_LIB_ROOT}/core-plugins/available/$plugin ${DOKKU_LIB_ROOT}/plugins/available/$plugin; - PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn enable $plugin - PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn enable $plugin - fi -done -find -L ${DOKKU_LIB_ROOT} -type l -delete -chown dokku:dokku -R ${DOKKU_LIB_ROOT}/plugins ${DOKKU_LIB_ROOT}/core-plugins + echo "Install all core plugins" + dokku plugin:install --core +} -echo "Ensure proper sshcommand path" -echo '/usr/bin/dokku' > "${DOKKU_ROOT}/.sshcommand" -if [[ -f .ssh/authorized_keys ]]; then - sed -i.bak 's#/usr/local/bin/dokku#/usr/bin/dokku#' "${DOKKU_ROOT}/.ssh/authorized_keys" - rm "${DOKKU_ROOT}/.ssh/authorized_keys" -fi +setup-sshcommand() { + echo "Ensure proper sshcommand path" + echo '/usr/bin/dokku' > "${DOKKU_ROOT}/.sshcommand" +} -echo "Install all core plugins" -dokku plugin:install --core +setup-version() { + rm -f "${DOKKU_ROOT}/VERSION" + cp "${DOKKU_LIB_ROOT}/STABLE_VERSION" "${DOKKU_ROOT}/VERSION" +} -rm -f ${DOKKU_ROOT}/VERSION -cp ${DOKKU_LIB_ROOT}/STABLE_VERSION ${DOKKU_ROOT}/VERSION +main() { + readonly DOKKU_ROOT="${DOKKU_ROOT:-/home/dokku}" + readonly DOKKU_LIB_ROOT="${DOKKU_LIB_PATH:-/var/lib/dokku}" -exit 0 + setup-user + setup-storage + setup-plugins + setup-sshcommand + setup-version +} + +main diff --git a/rpm/herokuish.postinst b/rpm/herokuish.postinst index ca21c098b..e9c5db778 100644 --- a/rpm/herokuish.postinst +++ b/rpm/herokuish.postinst @@ -1,16 +1,20 @@ #!/usr/bin/env bash set +o posix # rpm uses /bin/sh that forces bash in posix mode -echo 'Starting docker' -systemctl start docker +main() { + echo 'Starting docker' + systemctl start docker -sleep 5 + sleep 5 -count=`sudo docker images | grep gliderlabs/herokuish | wc -l` -if [ "$count" -ne 0 ]; then - echo 'Removing old herokuish image' - sudo docker rmi gliderlabs/herokuish -fi + count=$(sudo docker images | grep -c gliderlabs/herokuish) + if [ "$count" -ne 0 ]; then + echo 'Removing old herokuish image' + sudo docker rmi gliderlabs/herokuish + fi -echo 'Importing herokuish into docker (around 5 minutes)' -sudo docker build -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null + echo 'Importing herokuish into docker (around 5 minutes)' + sudo docker build -t gliderlabs/herokuish /var/lib/herokuish 1> /dev/null +} + +main diff --git a/tests.mk b/tests.mk index 343cc8804..8549d8259 100644 --- a/tests.mk +++ b/tests.mk @@ -71,7 +71,7 @@ lint: # these are disabled due to their expansive existence in the codebase. we should clean it up though # SC2034: VAR appears unused - https://github.com/koalaman/shellcheck/wiki/SC2034 @echo linting... - @$(QUIET) find . -not -path '*/\.*' -not -path './debian/*' -not -path './rpm/*' -type f | xargs file | grep text | awk -F ':' '{ print $$1 }' | xargs head -n1 | egrep -B1 "bash" | grep "==>" | awk '{ print $$2 }' | xargs shellcheck -e SC2034 + @$(QUIET) find . -not -path '*/\.*' -not -path './debian/*' -type f | xargs file | grep text | awk -F ':' '{ print $$1 }' | xargs head -n1 | egrep -B1 "bash" | grep "==>" | awk '{ print $$2 }' | xargs shellcheck -e SC2034 unit-tests: @echo running unit tests...