From b36f78355475ed625d597039c9d72601d026a8e5 Mon Sep 17 00:00:00 2001 From: Christer Waren Date: Thu, 17 Sep 2026 14:29:36 +0300 Subject: [PATCH] Init: Update --- init.sh | 230 +++++++++++++++++++++++++++++++++++++------------- maintainer.sh | 4 + 2 files changed, 177 insertions(+), 57 deletions(-) create mode 100755 maintainer.sh diff --git a/init.sh b/init.sh index 6a50ab3..41a7e92 100755 --- a/init.sh +++ b/init.sh @@ -1,16 +1,156 @@ #!/bin/bash +if [ ! "$BASH_VERSION" ] ; then + echo "Warén Group - Init" + echo "This command requires using BASH shell." + exit 1 +fi -#if [ ! "$BASH_VERSION" ] ; then -# bash $0 $1 $2 $3 $4 $5 $6 $7 $8 $9 -# exit 1 -#fi +if [[ -L "$0" ]] +then + PWD=$(dirname -- "$(readlink -f -- "$0")") +fi -declare -Ax args -declare -Ax config -declare -Ax messages +wxi-args(){ + declare -gAx args + args=() + + while [[ $# -gt 0 ]]; do + case "$1" in + --*=*) + key="${1%%=*}" + value="${1#*=}" + args["${key#--}"]="$value" + shift + ;; + + --*) + key="$1" + opt="${key#--}" + shift + if [[ $# -gt 0 && "${1}" != -* ]]; then + args["$opt"]="$1" + shift + else + args["$opt"]=true + fi + ;; + + -*=*) + key="${1%%=*}" + value="${1#*=}" + args["${key#-}"]="$value" + shift + ;; + + -*) + key="$1" + opt="${key#-}" + shift + if [[ $# -gt 0 && "${1}" != -* ]]; then + args["$opt"]="$1" + shift + else + args["$opt"]=true + fi + ;; + + *) + args["$((++pos))"]="${1%%=*}" + shift + ;; + esac + done +} wxi-config(){ - echo -n "" + declare -gAx config + case $1 in + create) + if [[ ! -f $HOME/.warengroup/config.json ]] + then + echo '{}' > $HOME/.warengroup/config.json + fi + ;; + deploy) + if [[ ! $(jq -e . $HOME/.warengroup/config.json.tmp >/dev/null 2>&1) ]] + then + mv $HOME/.warengroup/config.json.tmp $HOME/.warengroup/config.json &> /dev/null + fi + ;; + write) + jq '.'"$2"' = "'$3'"' $HOME/.warengroup/config.json &> $HOME/.warengroup/config.json.tmp + wxi-config deploy + ;; + load) + while IFS=$'\t' read -r k v; do config["$k"]="$v"; done < <( + jq -r ' + paths(scalars) as $p + | "\( $p|map(tostring)|join(".") )\t\( getpath($p) )" + ' $HOME/.warengroup/config.json + ) + ;; + reload) + wxi-config load + ;; + *) + WX_HOME=$HOME/.warengroup + export WX_HOME + + mkdir -p $WX_HOME + chmod 700 -R "$WX_HOME" + + mkdir -p "$WX_HOME/credentials" \ + "$WX_HOME/credentials/ssh" \ + "$WX_HOME/credentials/ssh/eas" \ + "$WX_HOME/credentials/ansible-vault/eas" \ + "$PWD/eas/credentials/ssh" + + find "$WX_HOME" -type d -exec chmod 700 {} + + find "$WX_HOME" -type f -exec chmod 600 {} + + + wxi-config create + if [[ -n ${args['proxy']} ]] + then + wxi-config write proxy "${args['proxy']}" + fi + + wxi-config load + + PROXY_ARGS=() + if [[ -n "${config['proxy']}" ]]; then + PROXY_ARGS=(--proxy "${config['proxy']}") + fi + ;; + esac +} + +wxi-config-legacy(){ + case $1 in + login) + case $2 in + write) + jq '.login.'$ORG'.token = "'$TOKEN'"' $HOME/.warengroup/config.json &> $HOME/.warengroup/config.json.tmp + ;; + read) + if [[ -f "$HOME/.warengroup/config.json" && $(cat $HOME/.warengroup/config.json | jq -r .login.$ORG.token) != 'null' && $(cat $HOME/.warengroup/config.json | jq -r .login.$ORG.token) != '' ]] + then + cat $HOME/.warengroup/config.json | jq -r .login.$ORG.token + else + return 1 + fi + ;; + erase) + TOKEN="" + wxi-config login write + ;; + esac + ;; + *) + echo -n "" + ;; + esac + + mv $HOME/.warengroup/config.json.tmp $HOME/.warengroup/config.json &> /dev/null } wx-init(){ @@ -103,7 +243,7 @@ wx-login(){ elif [[ ! -z ${args['token']} ]] then AUTH_METHOD=token - elif [[ $(wxi-config login read) ]] + elif [[ $(wxi-config-legacy login read) ]] then AUTH_METHOD=token elif [[ ! -z ${args['username']} ]] @@ -157,7 +297,7 @@ wx-login(){ fi TOKEN=$VAULT_LOGIN - wxi-config login write + wxi-config-legacy login write ;; token) echo -n "Token: " @@ -167,9 +307,9 @@ wx-login(){ then TOKEN=${args['token']} fi - elif [[ $(wxi-config login read) ]] + elif [[ $(wxi-config-legacy login read) ]] then - TOKEN=$(wxi-config login read) + TOKEN=$(wxi-config-legacy login read) else read -s TOKEN fi @@ -199,7 +339,7 @@ wx-login(){ wxi-content status "Login" "Failed" wxi-footer - if [[ $(wxi-config login read) ]] + if [[ $(wxi-config-legacy login read) ]] then wx-logout &> /dev/null wx-login @@ -209,7 +349,7 @@ wx-login(){ fi TOKEN=$VAULT_LOGIN - wxi-config login write + wxi-config-legacy login write ;; *) wxi-content status "Login Type" "Unsupported" @@ -432,52 +572,28 @@ wxi-repeat() { fi } +#{{ COMMANDS }} -i=1 -while [[ "$1" != "" ]] -do - case $1 in - --*) - key="${1%%=*}" - value="${1#*=}" +wxi-args "$@" +wxi-config - if [[ "$value" == "$key" ]] - then - shift - value="$1" - fi +echo -n $wxiBold$wxiRed +cat <<'EOF' - if [[ -z $value ]] - then - value=true - fi + (`\ .-') /` ('-. _ .-') ('-. .-') _ + `.( OO ),' ( OO ).-.( \( -O ) _( OO) ( OO ) ) +,--./ .--. / . --. / ,------. (,------.,--./ ,--,' +| | | | \-. \ | /`. ' | .---'| \ | |\ +| | | |,.-'-' | | | / | | | | | \| | ) +| |.'.| |_)\| |_.' | | |_.' |(| '--. | . |/ +| | | .-. | | . '.' | .--' | |\ | +| ,'. | | | | | | |\ \ | `---.| | \ | +'--' '--' `--' `--' `--' '--' `------'`--' `--' - args["${key#--}"]="$value" - ;; - -*) - key="${1%=*}" - value="${1#*=}" +EOF +echo -n $wxiNormal - if [[ "$value" == "$key" ]] - then - shift - value="$1" - fi - - if [[ -z $value ]] - then - value=true - fi - - args["${key#-}"]="$value" - ;; - *) - args["$i"]="${1%%=*}" - i=$((i + 1)) - ;; - esac - shift -done - -wx-init +wxi-start +wxi-init wxi-stop + diff --git a/maintainer.sh b/maintainer.sh new file mode 100755 index 0000000..f65cc6d --- /dev/null +++ b/maintainer.sh @@ -0,0 +1,4 @@ +rm init.ps1 +cp ../infra/init.ps1 init.ps1 +rm init.sh +cp ../infra/init.sh init.sh