prometheus/scripts/ui_release.sh
Julius Volz e8bbe191d4 Build both old & new UI into Prometheus, allow choosing via feature flag
This keeps the old "react-app" directory in its existing location (to make
it easier to merge changes from the main branch), but separates it from the
npm workspaces setup. Thus it now needs to be npm-installed/built/linted
separately. This is a bit hacky, but should only be needed temporarily,
until the old UI can be removed.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-04-18 15:08:40 +02:00

110 lines
2.6 KiB
Bash
Executable file

#!/usr/bin/env bash
## /!\ This file must be used at the root of the prometheus project
## This script provides utils method to help to release and verify the readiness of each libs under the folder ui/
set -e
current=$(pwd)
root_ui_folder=${current}/web/ui
cd "${root_ui_folder}"
files=("../../LICENSE" "../../CHANGELOG.md")
workspaces=$(jq -r '.workspaces[]' < package.json)
function copy() {
for file in "${files[@]}"; do
for workspace in ${workspaces}; do
if [ -f "${file}" ]; then
cp "${file}" "${workspace}"/"$(basename "${file}")"
fi
done
done
}
function publish() {
dry_run="${1}"
cmd="npm publish --access public"
if [[ "${dry_run}" == "dry-run" ]]; then
cmd+=" --dry-run"
fi
for workspace in ${workspaces}; do
# package "mantine-ui" is private so we shouldn't try to publish it.
if [[ "${workspace}" != "mantine-ui" ]]; then
cd "${workspace}"
eval "${cmd}"
cd "${root_ui_folder}"
fi
done
}
function checkPackage() {
version=${1}
if [[ "${version}" == v* ]]; then
version="${version:1}"
fi
for workspace in ${workspaces}; do
cd "${workspace}"
package_version=$(npm run env | grep npm_package_version | cut -d= -f2-)
if [ "${version}" != "${package_version}" ]; then
echo "version of ${workspace} is not the correct one"
echo "expected one: ${version}"
echo "current one: ${package_version}"
echo "please use ./ui_release --bump-version ${version}"
exit 1
fi
cd "${root_ui_folder}"
done
}
function clean() {
for file in "${files[@]}"; do
for workspace in ${workspaces}; do
f="${workspace}"/"$(basename "${file}")"
if [ -f "${f}" ]; then
rm "${f}"
fi
done
done
}
function bumpVersion() {
version="${1}"
if [[ "${version}" == v* ]]; then
version="${version:1}"
fi
# upgrade the @prometheus-io/* dependencies on all packages
for workspace in ${workspaces}; do
# sed -i syntax is different on mac and linux
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -E -i "" "s|(\"@prometheus-io/.+\": )\".+\"|\1\"${version}\"|" "${workspace}"/package.json
else
sed -E -i "s|(\"@prometheus-io/.+\": )\".+\"|\1\"${version}\"|" "${workspace}"/package.json
fi
done
# increase the version on all packages
npm version "${version}" --workspaces --include-workspace-root
}
if [[ "$1" == "--copy" ]]; then
copy
fi
if [[ $1 == "--publish" ]]; then
publish "${@:2}"
fi
if [[ $1 == "--check-package" ]]; then
checkPackage "${@:2}"
fi
if [[ $1 == "--bump-version" ]]; then
bumpVersion "${@:2}"
fi
if [[ $1 == "--clean" ]]; then
clean
fi