stages:
  - .pre
  - build
  - test
  - post
  - security

.default:
  before_script:
    - set -e
    - |
      if [ "$CI_COMMIT_REF_PROTECTED" = true ] && [ -n "$CI_COMMIT_TAG" ]; then
        export APP_VERSION=$CI_COMMIT_TAG
      elif [ "$CI_COMMIT_REF_NAME" = "develop" ]; then
        export APP_VERSION="develop"
      else
        # Replace '/' with '-' and check for any invalid characters
        APP_VERSION=$(echo "$CI_COMMIT_REF_NAME" | sed 's|/|-|g')
        
        # Check for invalid characters (only allow lowercase letters, digits, '_', '.', '-')
        if echo "$APP_VERSION" | grep -q '[^a-zA-Z0-9._-]'; then
          echo "Error: Branch name contains invalid characters for Docker tags. Only a-z, 0-9, '_', '.', and '-' are allowed."
          exit 1
        fi

        # Convert to lowercase
        export APP_VERSION=$(echo "$APP_VERSION" | tr 'A-Z' 'a-z')
      fi
    - echo "APP_VERSION set to $APP_VERSION"
