#!/bin/bash

source scripts/hash-utils.sh

function MAIN {
  if ! $CI; then
    REBUILD_ELECTRON_NATIVE_DEPS
  fi
  INSTALL_FLOW_TYPED
}

function INSTALL_FLOW_TYPED {
  LATEST_FLOW_TYPED_COMMIT_HASH=`curl --silent --header "Accept: application/vnd.github.VERSION.sha" https://api.github.com/repos/flowtype/flow-typed/commits/master`
  CURRENT_FLOW_TYPED_HASH=`GET_HASH 'flow-typed'`
  if [ "$LATEST_FLOW_TYPED_COMMIT_HASH" == "$CURRENT_FLOW_TYPED_HASH" ]; then
    echo "> Flow-typed definitions are up to date. Skipping"
  else
    echo "> Installing flow-typed defs"
    flow-typed install -s --overwrite
    echo "> Removing broken flow definitions"
    rm flow-typed/npm/{react-i18next_v7.x.x.js,styled-components_v3.x.x.js,redux_*,winston*}
    SET_HASH 'flow-typed' $LATEST_FLOW_TYPED_COMMIT_HASH
  fi
}

function REBUILD_ELECTRON_NATIVE_DEPS {
  # for strange/fancy os-es
  if [[ `uname` == 'Darwin' ]]; then
    PACKAGE_JSON_HASH=`md5 package.json | cut -d ' ' -f 1`
  else
    # for normal os-es
    PACKAGE_JSON_HASH=`md5sum package.json | cut -d ' ' -f 1`
  fi
  CACHED_PACKAGE_JSON_HASH=`GET_HASH 'package.json'`
  if [ "$CACHED_PACKAGE_JSON_HASH" == "$PACKAGE_JSON_HASH" ]; then
    echo "> Electron native deps are up to date. Skipping"
  else
    echo "> Installing electron native deps"
    DEBUG=electron-builder electron-builder install-app-deps
    SET_HASH 'package.json' $PACKAGE_JSON_HASH
  fi
}

MAIN