resolve-release-packages.bash

 1#!/usr/bin/env bash
 2
 3# SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
 4#
 5# SPDX-License-Identifier: CC0-1.0
 6
 7set -euo pipefail
 8
 9valid_packages="answer, handoff, personas"
10
11resolve_package_dir() {
12	case "$1" in
13		answer|pi-answer|@amolith/pi-answer) printf '%s\n' packages/answer ;;
14		handoff|pi-handoff|@amolith/pi-handoff) printf '%s\n' packages/handoff ;;
15		personas|pi-personas|@amolith/pi-personas) printf '%s\n' packages/personas ;;
16		*)
17			echo "Error: unknown package '$1'" >&2
18			echo "Valid packages: $valid_packages" >&2
19			exit 1
20			;;
21	esac
22}
23
24if [[ $# -eq 0 ]]; then
25	echo "Error: at least one package is required" >&2
26	echo "Valid packages: $valid_packages" >&2
27	exit 1
28fi
29
30results=()
31for package in "$@"; do
32	dir=$(resolve_package_dir "$package")
33	if [[ ${#results[@]} -gt 0 ]]; then
34		for existing in "${results[@]}"; do
35			if [[ "$existing" == "$dir" ]]; then
36				echo "Error: multiple selectors resolved to '$dir' (duplicate triggered by '$package')" >&2
37				exit 1
38			fi
39		done
40	fi
41	results+=("$dir")
42done
43
44printf '%s\n' "${results[@]}"