110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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
 |