#!/bin/bash -ex

shopt -s extglob # Extended globs have to be enabled

LATEST_COMPONENT_TAG=$1
LATEST_COMPONENT_VERSION=$2
PUBLIC_OR_PRIVATE=$3

NPM_ACCESS="restricted"
if [ "$PUBLIC_OR_PRIVATE" = "public" ]; then
  NPM_ACCESS="public"
fi

COMPONENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

echo "//registry.npmjs.org/:_authToken=${NPM_TOKEN}" > ./.npmrc

# Check if package has already been published
PUBLISHED_VERSION="$(npm view @infomaker/$LATEST_COMPONENT_TAG _id)"
if [ "$PUBLISHED_VERSION" = "" ]; then
    echo 'Publishing'
    # Set up build dir
    BUILD_DIR=__build__
    BUILD_PATH=$COMPONENT_DIR/$BUILD_DIR
    rm -rf $BUILD_PATH
    mkdir -p $BUILD_PATH
    echo "Preparing build dir at: $BUILD_PATH"

    # Copy all files to build dir
    cp -r $COMPONENT_DIR/!($BUILD_DIR) $BUILD_PATH

    # Add version to package.json
    echo "Replacing version in package.json: $LATEST_COMPONENT_VERSION"

    # jq --arg ver $LATEST_COMPONENT_VERSION '.version = $ver' $COMPONENT_DIR/package.json >| $BUILD_PATH/package.json

    cat $COMPONENT_DIR/package.json | sed -r 's/("version": ")(0.0.0)(")/\1'"$LATEST_COMPONENT_VERSION"'\3/g' >| $BUILD_PATH/package.json
    echo "Publish npm package: $LATEST_COMPONENT_TAG"
    npm publish $BUILD_PATH --access=$NPM_ACCESS
    rm -rf $BUILD_PATH
else
    echo "Skipping publish, package $LATEST_COMPONENT_TAG already published"
fi

rm -f ./.npmrc
