# iOS CircleCI 2.1 configuration file
version: 2.1

orbs:
  node: circleci/node@4.2.0

jobs:
  build:
    macos:
      xcode: "10.1.0"

    steps:
      - checkout
      - node/install:
          install-yarn: true

      - run:
          name: Update BREW and print configs
          command: |
            brew update
            brew analytics off
            brew --env
            brew --config

      - run:
          name: Set timezone and check current datetime
          command: |
            sudo systemsetup -settimezone Europe/Warsaw
            echo "Today is $(date +"%Y-%m-%d %T")"

      - run:
          name: Set ENV variables
          command: |
            echo 'export HOMEBREW_NO_AUTO_UPDATE=1' >> ~/.envs

      - run:
          name: Install Python version 3.6.5 & readline 7.0.5
          command: |
            source ~/.envs
            curl -o /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/python.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/f2a764ef944b1080be64bd88dca9a1d80130c558/Formula/python.rb
            curl -o /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/readline.rb https://raw.githubusercontent.com/Homebrew/homebrew-core/b1bd1c4a62e1336422de3614d1fc49ffbce589a8/Formula/readline.rb
            # remove check for old compilers which creates the error described in https://github.com/sashkab/homebrew-python/issues/36
            sed -i.bak -e '58,61d' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/python.rb
            # remove 'do devel' block to avoid error: Calling 'devel' blocks in formulae is disabled!
            sed -i.bak -e '14,17d' /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula/python.rb
            brew unlink python
            brew uninstall --ignore-dependencies readline
            brew install readline
            brew info readline
            brew pin readline
            # --ignore-dependencies is used to prevent this issue: https://github.com/tensorflow/tensorflow/issues/25093
            brew install --ignore-dependencies python
            #brew link python 3.6.5_1
            brew info python
            brew pin python

      - run:
          name: Installed python and pip version
          command: |
            python3 -V
            pip3 -V

      - restore_cache:
          name: Restore Yarn Package Cache
          keys:
            - yarn-packages-{{ checksum "yarn.lock" }}

      - run:
          name: Install project
          # increased timeout is for material-design-icons
          command: |
            yarn install --network-timeout 1000000

      - save_cache:
          name: Save Yarn Package Cache
          key: yarn-packages-{{ checksum "yarn.lock" }}
          paths:
            - ~/.cache/yarn

      - run:
          name: Building WebUI for distribution
          command: |
            yarn buildforelectron

      - run:
          name: Building gns3server
          command: |
            python3 -V
            python3 -m pip install -U pip
            python3 -m pip install -r scripts/requirements.txt
            python3 scripts/build.py download -a
            # necessary because of https://github.com/GNS3/gns3-gui/issues/2849
            python3 -m pip install jsonschema==2.6.0
            python3 scripts/build.py build_exe -b dist/exe.gns3server -s
            python3 scripts/build.py validate -b dist

      - run:
          name: Dist project
          command: |
            yarn electron-builder --mac --x64 --publish always

      - run:
          name: Gather artifacts
          command: |
            mkdir artifacts
            cp build/*.dmg artifacts/

      - store_artifacts:
          path: artifacts
          destination: artifacts

workflows:
  version: 2
  build_and_deploy:
    jobs:
      - build:
          filters:
            tags:
              only: /v.*/
