#!/usr/bin/env bash

port=4000
registry="http://localhost:$port"
output="output.out"
touch $output

set -e

echo "Building docs with verdaccio"

# Wait for verdaccio to start
grep -q 'http address' <(tail -f $output)

if curl -sI http://localhost:4000/ >/dev/null; then
    echo "Verdaccio is running on port 4000."
else
    echo "Verdaccio is NOT running on port 4000."
fi

yarn config set npmPublishRegistry --home $registry
yarn config set npmRegistryServer --home $registry
yarn config set npmAlwaysAuth --home false
yarn config set npmAuthToken --home abc
yarn config set unsafeHttpWhitelist --home localhost
npm set registry $registry

# Rename the dist folder from dist/production/docs to verdaccio_dist/COMMIT_HASH_BEFORE_PUBLISH/verdaccio/docs
# This is so we can have verdaccio build in a separate stream from deploy and deploy_prod
verdaccio_path=verdaccio_dist/`git rev-parse HEAD~0`/verdaccio
mkdir -p $verdaccio_path

echo 'build rsp-cra-18'
# install packages in CRA test app
cd examples/rsp-cra-18
yarn config set npmRegistryServer $registry

echo "Available versions of react-aria-components:" && curl -s "$registry/react-aria-components" | jq -r '.versions | keys[]' 2>/dev/null || curl -s "$registry/react-aria-components" | grep -o '"version":"[^"]*"' | sed 's/"version":"//g' | sed 's/"//g' | sort -V

yarn install --no-immutable
yarn up @adobe/react-spectrum
yarn up @react-aria/dnd
yarn up @react-spectrum/provider
yarn up @spectrum-icons/illustrations
yarn up @spectrum-icons/workflow
yarn up react-aria-components
yarn why react-aria-components

# Build CRA test app and move to dist folder. Store the size of the build in a text file.
yarn build | tee build-stats.txt
du -ka build/ | tee -a build-stats.txt
mkdir -p ../../$verdaccio_path/rsp-cra-18/publish-stats
mv build-stats.txt ../../$verdaccio_path/rsp-cra-18/publish-stats
mv build/* ../../$verdaccio_path/rsp-cra-18

netstat -tpln | awk -F'[[:space:]/:]+' '$5 == 4000 {print $(NF-2)}' | xargs kill
