#!/bin/bash -e
#
# script/build
# mas
#
# Builds the Xcode project. Uses xcpretty gem to format output.
#
# If the TRAVIS_TAG env variable is present, it generates an archive.
# https://docs.travis-ci.com/user/environment-variables/#default-environment-variables
#

BUILD_DIR="$PWD/build"
WORKSPACE="mas.xcworkspace"
SCHEME="mas-cli Release"
CONFIG="Release"
VERSION=$(script/version)

main() {
  xcodebuild -version
  script/clean

  carthage build \
    --platform macOS \
    --cache-builds \
    --configuration "$CONFIG"

  archive
}

# OBJROOT - Intermediate Build Files Path
# The path where intermediate files will be placed during a build. Intermediate files include generated sources, object
# files, etc. Shell script build phases can place and access files here, as well. Typically this path is not set per
# target, but is set per project or per user. By default, this is set to `$(PROJECT_DIR)/build`.

# SHARED_PRECOMPS_DIR - Precompiled Headers Cache Path
# The path where precompiled prefix header files are placed during a build. Defaults to `$(OBJROOT)/SharedPrecompiledHeaders`.
# Using a common location allows precompiled headers to be shared between multiple projects.

# SYMROOT - Build Procucts Path
# The path at which all products will be placed when performing a build. Typically this path is not set per target,
# but is set per-project or per-user. By default, this is set to `$(PROJECT_DIR)/build`.

build() {
  echo "==> 🏗️ Building mas ($VERSION)"
  set -o pipefail && \
      xcodebuild \
          -workspace "$WORKSPACE" \
          -scheme "$SCHEME" \
          -configuration "$CONFIG" \
          OBJROOT="$BUILD_DIR" \
          SYMROOT="$BUILD_DIR" \
          build \
      | bundle exec xcpretty --color
}

archive() {
  echo "==> 📦 Archiving mas ($VERSION)"
  set -o pipefail && \
      xcodebuild \
          -workspace "$WORKSPACE" \
          -scheme "$SCHEME" \
          -configuration "$CONFIG" \
          -archivePath "$BUILD_DIR/mas.xcarchive" \
          OBJROOT="$BUILD_DIR" \
          SYMROOT="$BUILD_DIR" \
          archive \
      | bundle exec xcpretty --color
}

main
