#!/bin/zsh
set -e

branch=${PLUGIN_BRANCH:-"pages"}
token_env=${PLUGIN_TOKEN_ENV}
output=${PLUGIN_OUTPUT}
name=${PLUGIN_NAME}
email=${PLUGIN_EMAIL}

# Allow passing a different push SSH URL
clone_url=$CI_REPO_CLONE_SSH_URL
if [[ -n "$PLUGIN_SSH_URL" ]]; then
    clone_url=${PLUGIN_SSH_URL}
fi

if [[ -z "$token_env" || -z "$branch" || -z "$name" || -z "$email" || -z "$clone_url" ]]; then
    echo "Invalid configuration: Token environment variable name, branch name empty, name, clone URL, or email"
    echo "Token env: $token_env"
    echo "branch:    $branch"
    echo "Name:      $name"
    echo "Email:     $email"
    echo "Clone URL: $clone_url"
    exit 1
fi

# Setup the SSH directory
mkdir -p ~/.ssh
chown root:root ~/.ssh
chmod 700 ~/.ssh

# Setup the SSH key
print -rl -- ${(P)token_env} > ~/.ssh/id_rsa
chown root:root ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa

# Setup git
git config --global user.email "$email"
git config --global user.name "$name"
git config --global --add safe.directory "$CI_WORKSPACE/$CI_REPO_OWNER/$CI_REPO_NAME/$output"

# Init a new repository in the output directory and add all files
git init -b "$branch" "$output"
cd "$output"
git add --all
git commit -m "Deploy new version $CI_COMMIT_SHA"

# Push the repository
git push -u "$clone_url" -f "$branch"