#!/usr/bin/env bash
set -euo pipefail

main() {
  cd "$(dirname "$0")/../.."
  source ./ci/lib.sh

  pushd test
  echo "Installing dependencies for $PWD"
  yarn install
  popd

  local args=(install)
  if [[ ${CI-} ]]; then
    args+=(--frozen-lockfile)
  fi

  pushd test
  echo "Installing dependencies for $PWD"
  yarn "${args[@]}"
  popd

  pushd test/e2e/extensions/test-extension
  echo "Installing dependencies for $PWD"
  yarn "${args[@]}"
  popd

  pushd vendor
  echo "Installing dependencies for $PWD"

  # We install in 'modules' instead of 'node_modules' because VS Code's
  # extensions use a webpack config which cannot differentiate between its own
  # node_modules and itself being in a directory with the same name.
  args+=(--modules-folder modules)

  # We ignore scripts because NPM/Yarn's default behavior is to assume that
  # devDependencies are not needed, and that even git repo based packages are
  # assumed to be compiled. Because the default behavior for VS Code's
  # `postinstall` assumes we're also compiled, this needs to be ignored.
  args+=(--ignore-scripts)

  yarn "${args[@]}"

  # Finally, run the vendor `postinstall`
  yarn run postinstall

  popd
}

main "$@"