language: objective-c
osx_image: xcode9.3
env:
  global:
    - LC_CTYPE=en_US.UTF-8
    - LANG=en_US.UTF-8
    - LIB_PROJECT=XCGLogger.xcodeproj
    - IOSDEMO_PROJECT=DemoApps/iOSDemo/iOSDemo.xcodeproj
    - OSXDEMO_PROJECT=DemoApps/macOSDemo/macOSDemo.xcodeproj
    - TVOSDEMO_PROJECT=DemoApps/tvOSDemo/tvOSDemo.xcodeproj
    - IOS_FRAMEWORK_SCHEME="XCGLogger (iOS)"
    - MACOS_FRAMEWORK_SCHEME="XCGLogger (macOS)"
    - TVOS_FRAMEWORK_SCHEME="XCGLogger (tvOS)"
    - WATCHOS_FRAMEWORK_SCHEME="XCGLogger (watchOS)"
    - IOS_SDK=iphonesimulator11.0
    - MACOS_SDK=macosx10.12
    - TVOS_SDK=appletvsimulator11.0
    - WATCHOS_SDK=watchsimulator4.0
    - IOS_EXAMPLE_SCHEME="iOSDemo"
    - MACOS_EXAMPLE_SCHEME="macOSDemo"
    - TVOS_EXAMPLE_SCHEME="tvOSDemo"
  matrix:
    # Can't do a pod lint with Xcode 8 due to: https://github.com/CocoaPods/CocoaPods/issues/5661
    # Should now be fixed: https://github.com/CocoaPods/Xcodeproj/pull/407 but doesn't look like the updates are on Travis yet
    # - POD_LINT="YES"
    - PROJECT_FILE="$LIB_PROJECT"       DESTINATION="OS=11.1,name=iPhone X"             SCHEME="$IOS_FRAMEWORK_SCHEME"      SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean test build"
    - PROJECT_FILE="$LIB_PROJECT"       DESTINATION="arch=x86_64"                       SCHEME="$MACOS_FRAMEWORK_SCHEME"    SDK="$MACOS_SDK"    POD_LINT="NO"   BUILDCMD="clean test build"
    - PROJECT_FILE="$LIB_PROJECT"       DESTINATION="OS=11.1,name=Apple TV 4K"          SCHEME="$TVOS_FRAMEWORK_SCHEME"     SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean test build"
    - PROJECT_FILE="$LIB_PROJECT"       DESTINATION="OS=4.0,name=Apple Watch Series 2 - 42mm"    SCHEME="$WATCHOS_FRAMEWORK_SCHEME"  SDK="$WATCHOS_SDK"  POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=8.1,name=iPhone 5"              SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=8.2,name=iPhone 5S"             SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=8.3,name=iPhone 6"              SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=8.4,name=iPad Retina"           SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=9.0,name=iPhone 6 Plus"         SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=9.1,name=iPhone 6S"             SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=9.2,name=iPhone 6S Plus"        SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=9.3,name=iPad Retina"           SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=10.0,name=iPhone SE"            SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=10.2,name=iPad Air"             SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=11.3,name=iPad Pro (10.5-inch)" SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=10.3.1,name=iPhone 7"           SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=10.3.1,name=iPhone 7 Plus"      SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=11.2,name=iPhone 8"             SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=11.3,name=iPhone 8 Plus"        SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=11.3,name=iPhone X"             SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$IOSDEMO_PROJECT"   DESTINATION="OS=11.3,name=iPad Pro (12.9-inch) (2nd generation)" SCHEME="$IOS_EXAMPLE_SCHEME"        SDK="$IOS_SDK"      POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$OSXDEMO_PROJECT"   DESTINATION="arch=x86_64"                       SCHEME="$MACOS_EXAMPLE_SCHEME"      SDK="$MACOS_SDK"    POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=9.0,name=Apple TV 1080p"        SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=9.1,name=Apple TV 1080p"        SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=9.2,name=Apple TV 1080p"        SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=10.0,name=Apple TV 1080p"       SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=10.1,name=Apple TV 1080p"       SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=10.2,name=Apple TV 1080p"       SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=11.0,name=Apple TV 1080p"       SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
    - PROJECT_FILE="$TVOSDEMO_PROJECT"  DESTINATION="OS=11.1,name=Apple TV 4K"          SCHEME="$TVOS_EXAMPLE_SCHEME"       SDK="$TVOS_SDK"     POD_LINT="NO"   BUILDCMD="clean build"
before_install:
  - brew update
script:
  - set -o pipefail
  - xcodebuild -version
  - xcodebuild -showsdks
  - xcrun simctl list

  - if [ $POD_LINT == "YES" ]; then pod lib lint; fi
  - if [ $POD_LINT == "NO" ]; then  xcodebuild -UseSanitizedBuildSystemEnvironment=YES -project "$PROJECT_FILE" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES $BUILDCMD | xcpretty -c; fi
  - if [ $POD_LINT == "NO" ]; then  xcodebuild -UseSanitizedBuildSystemEnvironment=YES -project "$PROJECT_FILE" -scheme "$SCHEME" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES $BUILDCMD | xcpretty -c; fi

  # Can't specify the SDK or the watchOS builds will fail with: target specifies product type 'com.apple.product-type.watchkit2-extension', but there's no such product type for the 'iphonesimulator' platform
  # - xcodebuild -UseSanitizedBuildSystemEnvironment=YES -project "$PROJECT_FILE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Debug ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES $BUILDCMD;
  # - xcodebuild -UseSanitizedBuildSystemEnvironment=YES -project "$PROJECT_FILE" -scheme "$SCHEME" -sdk "$SDK" -destination "$DESTINATION" -configuration Release ONLY_ACTIVE_ARCH=NO ENABLE_TESTABILITY=YES $BUILDCMD;

