diff --git a/.github/request-model-versions.sh b/.github/request-model-versions.sh new file mode 100755 index 000000000..cfd8c164c --- /dev/null +++ b/.github/request-model-versions.sh @@ -0,0 +1,198 @@ +#! /usr/bin/env bash + +set -e + +# Google Cloud Workflow execution script +# Usage: ./wait_for_country_versions.sh -b -us -uk [-t timeout] [-i interval] + +usage() { + echo "Usage: $0 -b -us -uk [-t timeout] [-i interval]" + echo "" + echo "Required flags:" + echo " -b bucket_name - GCS bucket name" + echo " -us us_version - US package version" + echo " -uk uk_version - UK package version" + echo "" + echo "Optional flags:" + echo " -t timeout_seconds - Maximum wait time in seconds (default: 300)" + echo " -i check_interval - Check interval in seconds (default: 10)" + echo " -h help - Show this help message" + echo "" + echo "Example:" + echo " $0 -b my-bucket -us v1.2.3 -uk v1.2.4" + echo " $0 -b my-bucket -us v1.2.3 -uk v1.2.4 -t 600 -i 15" + exit 1 +} + +# Initialize variables +BUCKET_NAME="" +US_VERSION="" +UK_VERSION="" +TIMEOUT_SECONDS="300" +CHECK_INTERVAL="10" + +# Parse command line arguments +while [ $# -gt 0 ]; do + case "$1" in + -b) + if [ -z "$2" ]; then + echo "Error: -b requires a bucket name" + exit 1 + fi + BUCKET_NAME="$2" + shift 2 + ;; + -us) + if [ -z "$2" ]; then + echo "Error: -us requires a US version" + exit 1 + fi + US_VERSION="$2" + shift 2 + ;; + -uk) + if [ -z "$2" ]; then + echo "Error: -uk requires a UK version" + exit 1 + fi + UK_VERSION="$2" + shift 2 + ;; + -t) + if [ -z "$2" ]; then + echo "Error: -t requires a timeout value" + exit 1 + fi + TIMEOUT_SECONDS="$2" + shift 2 + ;; + -i) + if [ -z "$2" ]; then + echo "Error: -i requires an interval value" + exit 1 + fi + CHECK_INTERVAL="$2" + shift 2 + ;; + -h) + usage + ;; + *) + echo "Error: Unknown option $1" + usage + ;; + esac +done + +# Validate required arguments +if [ -z "$BUCKET_NAME" ] || [ -z "$US_VERSION" ] || [ -z "$UK_VERSION" ]; then + echo "Error: Missing required arguments" + echo "bucket_name (-b), us_version (-us), and uk_version (-uk) are required" + usage +fi + +# Validate numeric arguments +if ! [[ "$TIMEOUT_SECONDS" =~ ^[0-9]+$ ]] || ! [[ "$CHECK_INTERVAL" =~ ^[0-9]+$ ]]; then + echo "Error: timeout_seconds and check_interval must be positive integers" + exit 1 +fi + +# Configuration +PROJECT_ID="${GOOGLE_CLOUD_PROJECT:-$(gcloud config get-value project 2>/dev/null)}" +WORKFLOW_LOCATION="${WORKFLOW_LOCATION:-us-central1}" +WORKFLOW_NAME="wait-for-country-packages" + +if [ -z "$PROJECT_ID" ]; then + echo "Error: Could not determine project ID. Set GOOGLE_CLOUD_PROJECT environment variable." + exit 1 +fi + +echo "Starting workflow execution..." +echo "Project: $PROJECT_ID" +echo "Location: $WORKFLOW_LOCATION" +echo "Workflow: $WORKFLOW_NAME" +echo "Bucket: $BUCKET_NAME" +echo "US Version: $US_VERSION" +echo "UK Version: $UK_VERSION" +echo "Timeout: ${TIMEOUT_SECONDS}s" +echo "Check Interval: ${CHECK_INTERVAL}s" + +# Build input JSON +INPUT_JSON=$(cat <