#!/bin/bash set -euo pipefail APP_PLATFORM=$1 ENVIRONMENT=$2 APP_MODE=${3:-legacy} APP_DIR="apps/mobile_app" PUBSPEC="$APP_DIR/pubspec.yaml" case "$ENVIRONMENT" in "staging") PUBSPEC_VERSION=$(grep '^version:' "$PUBSPEC" | sed -E 's/^version:[[:space:]]+//') VERSION_NUMBER=${PUBSPEC_VERSION%+*} ENV_BUILD_NUMBER=${PUBSPEC_VERSION#*+} ;; "production") VERSION_NUMBER=$(echo "$CM_TAG" | sed -E 's/^v?([0-9]+(\.[0-9]+)+)\([0-9]+\)$/\1/') ENV_BUILD_NUMBER=$(echo "$CM_TAG" | sed -E 's/^v?[0-9]+(\.[0-9]+)+\(([0-9]+)\)$/\2/') if [ -z "$VERSION_NUMBER" ] || [ -z "$ENV_BUILD_NUMBER" ]; then echo "Tag inválido (esperado 1.0.0(N) o v1.0.0(N)): $CM_TAG"; exit 1 fi ;; *) echo "ENVIRONMENT inválido: $ENVIRONMENT (esperado staging o production)"; exit 1 ;; esac cd "$APP_DIR" COMMON_FLAGS=( --release --flavor "$ENVIRONMENT" -t "lib/main_$ENVIRONMENT.dart" --build-name="$VERSION_NUMBER" --build-number="$ENV_BUILD_NUMBER" --dart-define-from-file="config/$ENVIRONMENT.json" --dart-define=APP_MODE="$APP_MODE" ) case "$APP_PLATFORM" in "android") flutter build appbundle "${COMMON_FLAGS[@]}" ;; "ios") flutter build ipa \ "${COMMON_FLAGS[@]}" \ --export-options-plist=/Users/builder/export_options.plist ;; *) echo "APP_PLATFORM inválido: $APP_PLATFORM (esperado android o ios)"; exit 1 ;; esac echo "Build OK: $APP_PLATFORM / $ENVIRONMENT / mode=$APP_MODE (v$VERSION_NUMBER+$ENV_BUILD_NUMBER)"