The previous dumb stub just execd the applescript. Now the bin (still used as the bundle executable and for double-click) supports CLI features/subcommands while preserving default tray UI behavior: - no arg / tray / menu: launch tray UI (status item + menu) - launch / open / app: start services (delegates to launch.sh, matches menu "Open Prospector") - stop: stop services (matches menu "Stop services") - help: list features Updated post-build messaging, tray.applescript header comment, scripts/README.md table, and ./run usage. Tested via TRAY_DEST=/tmp/... build + direct bin help invocation (and full make-tray success).
96 lines
4.4 KiB
Bash
Executable file
96 lines
4.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# prospector — Task Runner
|
|
# Usage: ./run <command> [args...]
|
|
#
|
|
# ./run install One-shot local setup: deps, env, DB + migrations, build.
|
|
# Add --launch to open the app after. See scripts/install.sh.
|
|
# ./run app Launch API + panel and open it as a Chrome app window.
|
|
# ./run db:migrate Apply pending SQL migrations (ledger-tracked).
|
|
#
|
|
# ./run install:mcp Installs the prospector MCP (new backend adapter) into
|
|
# Claude Desktop + global claude (~/.claude/mcp-config.json).
|
|
# See mcp/install-mcp.sh for details + safety notes.
|
|
#
|
|
# Follows the convention used across @applications and @projects (e.g. cocottetech/run).
|
|
|
|
set -uo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# Colors (best effort)
|
|
RED=$'\e[31m' YELLOW=$'\e[33m' BLUE=$'\e[34m' GREEN=$'\e[32m' NC=$'\e[0m' || true
|
|
|
|
usage() {
|
|
echo -e "${BLUE}prospector${NC} — Task Runner"
|
|
echo ""
|
|
echo "Usage: ./run <command> [args...]"
|
|
echo ""
|
|
echo -e "${YELLOW}Local install / run${NC}"
|
|
echo " install Setup deps, env, DB + migrations, build."
|
|
echo " install --launch …then open the app (Chrome PWA window)."
|
|
echo " app Launch API + panel, open as Chrome app window."
|
|
echo " app --build Rebuild first, then launch."
|
|
echo " stop Stop the detached app (API + panel)."
|
|
echo " tray Build the menu-bar tray app (~/Applications). The bundle's"
|
|
echo " MacOS/Prospector bin now has built-in features (launch/stop/help)"
|
|
echo " in addition to starting the ❖ tray UI on double-click/open."
|
|
echo " db:migrate Apply pending SQL migrations (ledger-tracked)."
|
|
echo ""
|
|
echo -e "${YELLOW}MCP (agent / Claude Desktop + global claude)${NC}"
|
|
echo " install:mcp Build + register 'prospector' MCP in both"
|
|
echo " Claude Desktop and ~/.claude/mcp-config.json"
|
|
echo " (quits Desktop safely first when possible)."
|
|
echo " install:mcp --help See full options (NO_RELAUNCH, VENV, etc.)"
|
|
echo ""
|
|
echo -e "${YELLOW}Local dev (delegated to npm in this tree)${NC}"
|
|
echo " build npm run build"
|
|
echo " typecheck npm run typecheck"
|
|
echo " test npm test"
|
|
echo " start:dev npm run start:dev"
|
|
echo ""
|
|
echo "All other commands are passed through if a cmd_* exists or fall back to npm."
|
|
}
|
|
|
|
cmd_build() { (cd "$REPO_ROOT" && npm run build "$@"); }
|
|
cmd_typecheck() { (cd "$REPO_ROOT" && npm run typecheck "$@"); }
|
|
cmd_test() { (cd "$REPO_ROOT" && npm test "$@"); }
|
|
cmd_start_dev() { (cd "$REPO_ROOT" && npm run start:dev "$@"); }
|
|
cmd_install() { exec "$REPO_ROOT/scripts/install.sh" "$@"; }
|
|
cmd_app() { exec "$REPO_ROOT/scripts/app.sh" "$@"; }
|
|
cmd_stop() { exec "$REPO_ROOT/scripts/stop.sh" "$@"; }
|
|
cmd_tray() { exec "$REPO_ROOT/scripts/make-tray.sh" "$@"; }
|
|
cmd_db_migrate() { exec "$REPO_ROOT/scripts/migrate.sh" "$@"; }
|
|
|
|
# The real work lives in the dedicated installer (easy to run directly too).
|
|
cmd_install_mcp() {
|
|
shift || true
|
|
exec "$REPO_ROOT/mcp/install-mcp.sh" "$@"
|
|
}
|
|
|
|
# Dispatch
|
|
COMMAND="${1:-}"
|
|
shift 2>/dev/null || true
|
|
|
|
case "$COMMAND" in
|
|
help|--help|-h|"") usage; exit 0 ;;
|
|
install:mcp|install-mcp) cmd_install_mcp install:mcp "$@"; exit $? ;;
|
|
install) cmd_install "$@"; exit $? ;;
|
|
app) cmd_app "$@"; exit $? ;;
|
|
stop) cmd_stop "$@"; exit $? ;;
|
|
tray) cmd_tray "$@"; exit $? ;;
|
|
db:migrate|db-migrate) cmd_db_migrate "$@"; exit $? ;;
|
|
build) cmd_build "$@"; exit $? ;;
|
|
typecheck) cmd_typecheck "$@"; exit $? ;;
|
|
test) cmd_test "$@"; exit $? ;;
|
|
start:dev) cmd_start_dev "$@"; exit $? ;;
|
|
*)
|
|
# Unknown: try npm script if it exists, otherwise usage
|
|
if (cd "$REPO_ROOT" && npm run | grep -q "^ $COMMAND\$"); then
|
|
(cd "$REPO_ROOT" && npm run "$COMMAND" -- "$@")
|
|
exit $?
|
|
fi
|
|
echo -e "${RED}Unknown command: $COMMAND${NC}" >&2
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|