gpg-build/build.sh

125 lines
3.9 KiB
Bash
Executable File

#!/bin/bash -e
#
# Build GPG files.
#
# @package Bash
# @author Kai Kimera <mail@kai.kim>
# @copyright 2023 Kai Kimera
# @license MIT
# @version 0.0.1
# @link https://github.com/ghastore
# -------------------------------------------------------------------------------------------------------------------- #
# -------------------------------------------------------------------------------------------------------------------- #
# CONFIGURATION.
# -------------------------------------------------------------------------------------------------------------------- #
# Vars.
GIT_REPO="${1}"
GIT_USER="${2}"
GIT_EMAIL="${3}"
GIT_TOKEN="${4}"
GPG_URL="${5}"
GPG_NAME="${6}"
GPG_CMD="${7}"
USER_AGENT="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36"
# Apps.
date="$( command -v date )"
git="$( command -v git )"
curl="$( command -v curl )"
gpg="$( command -v gpg )"
# Dirs.
d_src="/root/git/repo"
# Git.
${git} config --global user.name "${GIT_USER}"
${git} config --global user.email "${GIT_EMAIL}"
${git} config --global init.defaultBranch 'main'
# -------------------------------------------------------------------------------------------------------------------- #
# INITIALIZATION.
# -------------------------------------------------------------------------------------------------------------------- #
init() {
ts="$( _timestamp )"
clone \
&& build \
&& push
}
# -------------------------------------------------------------------------------------------------------------------- #
# GIT: CLONE REPOSITORY.
# -------------------------------------------------------------------------------------------------------------------- #
clone() {
echo "--- [GIT] CLONE: ${GIT_REPO#https://}"
local src="https://${GIT_USER}:${GIT_TOKEN}@${GIT_REPO#https://}"
${git} clone "${src}" "${d_src}"
echo "--- [GIT] LIST: '${d_src}'"
ls -1 "${d_src}"
}
# -------------------------------------------------------------------------------------------------------------------- #
# GPG: BUILD FILES.
# -------------------------------------------------------------------------------------------------------------------- #
build() {
echo "--- [GPG] BUILD"
_pushd "${d_src}" || exit 1
if [[ "${GPG_CMD}" == "dearmor" ]]; then
${curl} -X GET -A "${USER_AGENT}" -fsSL "${GPG_URL}" | ${gpg} --batch --yes --dearmor -o "${GPG_NAME}"
else
${curl} -X GET -A "${USER_AGENT}" -fsSL -o "${GPG_NAME}" "${GPG_URL}"
fi
_popd || exit 1
}
# -------------------------------------------------------------------------------------------------------------------- #
# GIT: PUSH GPG TO GPG STORE REPOSITORY.
# -------------------------------------------------------------------------------------------------------------------- #
push() {
echo "--- [GIT] PUSH: '${d_src}' -> '${GIT_REPO#https://}'"
_pushd "${d_src}" || exit 1
# Commit build files & push.
echo "Commit build files & push..."
${git} add . \
&& ${git} commit -a -m "BUILD: ${ts}" \
&& ${git} push
_popd || exit 1
}
# -------------------------------------------------------------------------------------------------------------------- #
# ------------------------------------------------< COMMON FUNCTIONS >------------------------------------------------ #
# -------------------------------------------------------------------------------------------------------------------- #
# Pushd.
_pushd() {
command pushd "$@" > /dev/null || exit 1
}
# Popd.
_popd() {
command popd > /dev/null || exit 1
}
# Timestamp.
_timestamp() {
${date} -u '+%Y-%m-%d %T'
}
# -------------------------------------------------------------------------------------------------------------------- #
# -------------------------------------------------< RUNNING SCRIPT >------------------------------------------------- #
# -------------------------------------------------------------------------------------------------------------------- #
init "$@"; exit 0