mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-05 05:52:05 +00:00
86 lines
1.7 KiB
Bash
Executable File
86 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
usage() {
|
|
echo "Usage: $0 ENVIRONMENT" >&2
|
|
echo "Valid values for ENVIRONMENT: staging, production" >&2
|
|
exit 1
|
|
}
|
|
|
|
case "$1" in
|
|
staging|production)
|
|
ENVIRONMENT="$1" ;;
|
|
--help)
|
|
usage ;;
|
|
*)
|
|
echo "Invalid argument" >&2
|
|
usage ;;
|
|
esac
|
|
|
|
cd "$(dirname "$0")" || exit 1
|
|
SOURCE_SCRIPT='init_runner.sh'
|
|
|
|
check_response() {
|
|
# Are we even in the interactive shell?
|
|
[ -t 1 ] || return 1
|
|
local request
|
|
request="$1"
|
|
read -rp "$request (y/N): " response
|
|
case "$response" in
|
|
[Yy])
|
|
return 0
|
|
# Your code to continue goes here
|
|
;;
|
|
*)
|
|
return 1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
check_dirty() {
|
|
if [ -n "$(git status --porcelain=v2 "$SOURCE_SCRIPT")" ]; then
|
|
echo "The $SOURCE_SCRIPT has uncommited changes, won't deploy it" >&2
|
|
exit 1
|
|
fi
|
|
}
|
|
GIT_HASH=$(git log -1 --format=format:%H)
|
|
|
|
header() {
|
|
cat << EOF
|
|
#!/usr/bin/env bash
|
|
|
|
echo 'The $ENVIRONMENT script is generated from $SOURCE_SCRIPT, commit $GIT_HASH'
|
|
|
|
EOF
|
|
}
|
|
|
|
body() {
|
|
local first_line
|
|
first_line=$(sed -n '/^# THE SCRIPT START$/{=;q}' "$SOURCE_SCRIPT")
|
|
if [ -z "$first_line" ]; then
|
|
echo "The pattern '# THE SCRIPT START' is not found in $SOURCE_SCRIPT" >&2
|
|
exit 1
|
|
fi
|
|
tail "+$first_line" "$SOURCE_SCRIPT"
|
|
}
|
|
|
|
GENERATED_FILE="generated_${ENVIRONMENT}_${SOURCE_SCRIPT}"
|
|
|
|
{ header && body; } > "$GENERATED_FILE"
|
|
|
|
echo "The file $GENERATED_FILE is generated"
|
|
|
|
if check_response "Display the content of $GENERATED_FILE?"; then
|
|
if [ -z "$PAGER" ]; then
|
|
less "$GENERATED_FILE"
|
|
else
|
|
$PAGER "$GENERATED_FILE"
|
|
fi
|
|
fi
|
|
|
|
check_dirty
|
|
|
|
S3_OBJECT=${S3_OBJECT:-s3://github-runners-data/cloud-init/${ENVIRONMENT}.sh}
|
|
if check_response "Deploy the generated script to $S3_OBJECT?"; then
|
|
aws s3 mv "$GENERATED_FILE" "$S3_OBJECT"
|
|
fi
|