#!/usr/bin/env bash set -o errexit set -o nounset set -o pipefail registryUrl="http://localhost:4873" # registryUrl="https://registry-node.techniker.me" packageVersionToDeploy="" isBeta="false" while [[ "${#}" -gt 0 ]]; do case "${1}" in --beta) isBeta="${2}" shift 2 ;; --version) packageVersionToDeploy="${2}" shift 2 ;; *) echo "Unknown option [${1}]" exit "${LINENO}" ;; esac done function cleanDirectory { local directory="${1}" if [ -d "${directory}" ]; then echo "Deleting [${directory}]..." rm -rf "${directory}" fi } function removePackageJsonMember { local packageJsonPath="dist/package.json" local memberToRemove="${1}" if [ -f "${packageJsonPath}" ]; then echo "Removing [${memberToRemove}] from the dist/package.json" jq "del(.${memberToRemove})" "${packageJsonPath}" >tmp.$$.json && mv tmp.$$.json "$packageJsonPath" else echo "Error: [${packageJsonPath}] not found." fi } function updatePackageJsonVersion { local versionToUpdate="${1}" if [ isBeta == "true" ]; then echo "Version to update [${versionToUpdate}] Contains beta" echo "Updating package.json version to [${versionToUpdate}]" local packageJsonVersion=$(jq -r '.version' package.json) sed -i "s/\"version\": \"${packageJsonVersion}\"/\"version\": \"${versionToUpdate}\"/" dist/package.json fi } echo "Deploying [${packageVersionToDeploy}]" echo "isBeta [${isBeta}]" cleanDirectory "dist" bun run ci-build removePackageJsonMember "devDependencies" removePackageJsonMember "scripts" echo "publishing to ${registryUrl}" if [ "${isBeta}" == "true" ]; then updatePackageJsonVersion "${packageVersionToDeploy}" npm publish --registry "${registryUrl}" --tag beta else npm publish --registry "${registryUrl}" fi