Auto-commit after successful build: improve build setup
Changed files:\nCreateUploadKey.sh app/build.gradle.kts
This commit is contained in:
99
CreateUploadKey.sh
Executable file
99
CreateUploadKey.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
KEYSTORE_PROPERTIES="$SCRIPT_DIR/keystore.properties"
|
||||
|
||||
log() {
|
||||
printf '\n[%s] %s\n' "create-upload-key" "$1"
|
||||
}
|
||||
|
||||
fail() {
|
||||
echo "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
require_tool() {
|
||||
if ! command -v "$1" >/dev/null 2>&1; then
|
||||
fail "Missing required tool: $1"
|
||||
fi
|
||||
}
|
||||
|
||||
get_property() {
|
||||
local key="$1"
|
||||
python - "$KEYSTORE_PROPERTIES" "$key" <<'PY'
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
path = Path(sys.argv[1])
|
||||
target_key = sys.argv[2]
|
||||
|
||||
for raw_line in path.read_text().splitlines():
|
||||
line = raw_line.strip()
|
||||
if not line or line.startswith('#'):
|
||||
continue
|
||||
if '=' not in line:
|
||||
continue
|
||||
key, value = line.split('=', 1)
|
||||
if key.strip() == target_key:
|
||||
print(value.strip())
|
||||
break
|
||||
PY
|
||||
}
|
||||
|
||||
ensure_required_property() {
|
||||
local key="$1"
|
||||
local value="$2"
|
||||
|
||||
if [ -z "$value" ]; then
|
||||
fail "Missing required property '$key' in $KEYSTORE_PROPERTIES"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
require_tool keytool
|
||||
require_tool python
|
||||
|
||||
if [ ! -f "$KEYSTORE_PROPERTIES" ]; then
|
||||
fail "Missing $KEYSTORE_PROPERTIES. Create it from keystore.properties.example first."
|
||||
fi
|
||||
|
||||
local store_file
|
||||
local store_password
|
||||
local key_alias
|
||||
local key_password
|
||||
|
||||
store_file="$(get_property storeFile)"
|
||||
store_password="$(get_property storePassword)"
|
||||
key_alias="$(get_property keyAlias)"
|
||||
key_password="$(get_property keyPassword)"
|
||||
|
||||
ensure_required_property storeFile "$store_file"
|
||||
ensure_required_property storePassword "$store_password"
|
||||
ensure_required_property keyAlias "$key_alias"
|
||||
ensure_required_property keyPassword "$key_password"
|
||||
|
||||
if [ -f "$store_file" ]; then
|
||||
fail "Keystore already exists at $store_file. Delete or move it first if you want to regenerate it."
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname "$store_file")"
|
||||
|
||||
log "Creating upload keystore at $store_file"
|
||||
keytool -genkeypair \
|
||||
-v \
|
||||
-keystore "$store_file" \
|
||||
-storepass "$store_password" \
|
||||
-alias "$key_alias" \
|
||||
-keypass "$key_password" \
|
||||
-keyalg RSA \
|
||||
-keysize 2048 \
|
||||
-validity 10000 \
|
||||
-dname "CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, S=Unknown, C=US"
|
||||
|
||||
log "Upload keystore created successfully"
|
||||
log "Back up both the keystore file and the matching keystore.properties secrets"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user