From 46162ed6e29f6fcd5abb06b8f9b193a4f8ef6202 Mon Sep 17 00:00:00 2001 From: Joe Tretter Date: Fri, 24 Apr 2026 20:20:39 -0500 Subject: [PATCH] Auto-commit after successful build: improve build setup Changed files:\nCreateUploadKey.sh app/build.gradle.kts --- CreateUploadKey.sh | 99 ++++++++++++++++++++++++++++++++++++++++++++ app/build.gradle.kts | 4 +- 2 files changed, 101 insertions(+), 2 deletions(-) create mode 100755 CreateUploadKey.sh diff --git a/CreateUploadKey.sh b/CreateUploadKey.sh new file mode 100755 index 0000000..aff5bb8 --- /dev/null +++ b/CreateUploadKey.sh @@ -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 "$@" \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 06aedd7..25b49dc 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -19,8 +19,8 @@ android { applicationId = "solutions.tretter.githugandroid" minSdk = 26 targetSdk = 34 - versionCode = 83 - versionName = "0.1.82" + versionCode = 87 + versionName = "0.1.86" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true