#!/bin/bash # Extract version from version file for products # Usage: ./extract-version.sh # app: worker-mobile-app or client-mobile-app set -e APP=$1 if [ -z "$APP" ]; then echo "❌ Error: App parameter required (worker-mobile-app or client-mobile-app)" >&2 exit 1 fi # Determine pubspec path if [ "$APP" = "worker-mobile-app" ]; then PUBSPEC_PATH="apps/mobile/apps/staff/pubspec.yaml" APP_NAME="Staff Product (Worker)" else PUBSPEC_PATH="apps/mobile/apps/client/pubspec.yaml" APP_NAME="Client Product" fi # Check if pubspec exists if [ ! -f "$PUBSPEC_PATH" ]; then echo "❌ Error: pubspec.yaml not found at $PUBSPEC_PATH" >&2 exit 1 fi # Extract version (format: X.Y.Z+buildNumber or X.Y.Z-suffix) VERSION_LINE=$(grep "^version:" "$PUBSPEC_PATH") if [ -z "$VERSION_LINE" ]; then echo "❌ Error: Could not find version in $PUBSPEC_PATH" >&2 exit 1 fi # Extract full version including suffix/build number VERSION=$(echo "$VERSION_LINE" | sed 's/version: *//' | tr -d ' ') # Validate version format (X.Y.Z with optional +build or -suffix) if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-+][a-zA-Z0-9]+)?$ ]]; then echo "❌ Error: Invalid version format in pubspec.yaml: $VERSION" >&2 echo "Expected format: X.Y.Z, X.Y.Z+build, or X.Y.Z-suffix (e.g., 0.1.0, 0.1.0+12, 0.1.0-m3)" >&2 exit 1 fi echo "✅ Extracted version from $PUBSPEC_PATH: $VERSION" >&2 echo "$VERSION"