mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-14 22:22:40 +00:00
feat: Cleans up hpa script, adds init command to it.
This commit is contained in:
83
env/.local/scripts/hpa
vendored
83
env/.local/scripts/hpa
vendored
@@ -1,38 +1,77 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
set -o nounset
|
||||||
|
set -o pipefail
|
||||||
|
|
||||||
# A wrapper script to run swift-hpa in a docker container and
|
# A wrapper script to run swift-hpa in a docker container and
|
||||||
# mount the correct volumes, etc.
|
# mount the correct volumes, etc.
|
||||||
#
|
#
|
||||||
|
# To download templates, playbooks, setup secrets, generate shell completions, etc.
|
||||||
|
# you can call this script with 'init'.
|
||||||
|
#
|
||||||
|
# Otherwise it will run the hpa script inside of a docker container with any passed
|
||||||
|
# in arguments.
|
||||||
|
|
||||||
DOCKER_IMAGE="git.housh.dev/michael/swift-hpa:latest"
|
|
||||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
|
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
|
||||||
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
|
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
|
||||||
CONSULT_TEMPLATE_DIR="$XDG_DATA_HOME/hpa/template"
|
|
||||||
CONSULT_TEMPLATE_URL="ssh://git@git.housh.dev:2222/hhe/consult-template.git"
|
HPA_DOCKER_IMAGE="git.housh.dev/michael/swift-hpa"
|
||||||
HPA_PLAYBOOK_DIR="$XDG_DATA_HOME/hpa/playbook"
|
HPA_DOCKER_TAG=${HPA_DOCKER_TAG:-"latest"}
|
||||||
HPA_PLAYBOOK_URL="ssh://git@git.housh.dev:2222/michael/ansible-hpa-playbook.git"
|
|
||||||
|
HPA_DATA_DIR="$XDG_DATA_HOME/hpa"
|
||||||
HPA_CONFIG_DIR="$XDG_CONFIG_HOME/hpa"
|
HPA_CONFIG_DIR="$XDG_CONFIG_HOME/hpa"
|
||||||
CONSULTS_DIR=${CONSULTS_DIR:-$HOME/work/consults}
|
CONSULTS_DIR=${CONSULTS_DIR:-$HOME/work/consults}
|
||||||
|
|
||||||
|
CONSULT_TEMPLATE_URL="ssh://git@git.housh.dev:2222/hhe/consult-template.git"
|
||||||
|
HPA_PLAYBOOK_URL="ssh://git@git.housh.dev:2222/michael/ansible-hpa-playbook.git"
|
||||||
HPA_VAULT_SECRET_KEY="${HPA_VAULT_SECRET_KEY:-vault-pass}"
|
HPA_VAULT_SECRET_KEY="${HPA_VAULT_SECRET_KEY:-vault-pass}"
|
||||||
|
|
||||||
echoerr() {
|
generate-completion() {
|
||||||
echo -e "\e[31m[ERROR]:\e[0m $*"
|
local type=${1:-"zsh"}
|
||||||
|
local output=${2:-$HOME/.zsh/completions/_hpa}
|
||||||
|
local output_dir=$(dirname $output)
|
||||||
|
|
||||||
|
[[ ! -d "$output_dir" ]] && mkdir -p "$output_dir"
|
||||||
|
(
|
||||||
|
podman run --rm -it "$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG" \
|
||||||
|
--generate-completion-script "$type" |
|
||||||
|
tr -d '\r'
|
||||||
|
) >"$output"
|
||||||
|
}
|
||||||
|
|
||||||
|
gnnerate-secret() {
|
||||||
|
local secret="$(pass -c ansible/vault-pass)"
|
||||||
|
printf "$secret" | podman secret create "$HPA_VAULT_SECRET_KEY" -
|
||||||
}
|
}
|
||||||
|
|
||||||
# Ensure the dependencies are installed / setup.
|
# Ensure the dependencies are installed / setup.
|
||||||
[[ "$(podman secret exists $HPA_VAULT_SECRET_KEY)" == "1" ]] &&
|
init() {
|
||||||
echoerr "Valut secret needs to be set for key: '$HPA_VAULT_SECRET_KEY'\nUse 'podman secret create '$HPA_VAULT_SECRET_KEY'" &&
|
generate-completion "$@"
|
||||||
exit 1
|
gnnerate-secret
|
||||||
[[ ! -d $CONSULTS_DIR ]] && mkdir -p "$CONSULTS_DIR"
|
mkdir -p "$CONSULTS_DIR" &>/dev/null
|
||||||
[[ ! -d "$XDG_DATA_HOME/hpa" ]] && mkdir "$XDG_DATA_HOME/hpa"
|
mkdir "$HPA_DATA_DIR" &>/dev/null
|
||||||
[[ ! -d "$HPA_PLAYBOOK_DIR" ]] && git clone "$HPA_PLAYBOOK_URL" "$HPA_PLAYBOOK_DIR"
|
[[ ! -d "$HPA_DATA_DIR/playbook" ]] && git clone "$HPA_PLAYBOOK_URL" "$HPA_DATA_DIR/playbook"
|
||||||
[[ ! -d "$CONSULT_TEMPLATE_DIR" ]] && git clone "$CONSULT_TEMPLATE_URL" "$CONSULT_TEMPLATE_DIR"
|
[[ ! -d "$HPA_DATA_DIR/template" ]] && git clone "$CONSULT_TEMPLATE_URL" "$HPA_DATA_DIR/template"
|
||||||
|
}
|
||||||
|
|
||||||
podman run --rm -it \
|
run() {
|
||||||
-v "$CONSULT_TEMPLATE_DIR":/template \
|
podman run --rm -it \
|
||||||
-v "$HPA_PLAYBOOK_DIR":/playbook \
|
--volume "$HPA_DATA_DIR/template":/template \
|
||||||
-v "$HPA_CONFIG_DIR":/config \
|
--volume "$HPA_DATA_DIR/playbook":/playbook \
|
||||||
-v "$CONSULTS_DIR":/consults \
|
--volume "$HPA_CONFIG_DIR":/config/hpa \
|
||||||
--secret "$HPA_VAULT_SECRET_KEY" \
|
--volume "$CONSULTS_DIR":/consults \
|
||||||
"$DOCKER_IMAGE" \
|
--secret "$HPA_VAULT_SECRET_KEY" \
|
||||||
"$@"
|
"$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
############################## MAIN ##############################
|
||||||
|
|
||||||
|
first_arg=${1:-""}
|
||||||
|
|
||||||
|
if [[ $first_arg == "init" ]]; then
|
||||||
|
shift
|
||||||
|
init "$@" && exit 0
|
||||||
|
else
|
||||||
|
run "$@"
|
||||||
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user