You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
buffer_platform/.trae/skills/comet/scripts/comet-env.sh

111 lines
3.3 KiB

#!/bin/bash
# Comet script locator — source this file to export paths to bundled scripts.
#
# Usage:
# . /path/to/comet/scripts/comet-env.sh
#
# This file is sourced by workflow snippets. Do not set global shell options here.
_comet_env_source="${BASH_SOURCE[0]:-$0}"
_comet_script_dir="$(cd "$(dirname "$_comet_env_source")" && pwd -P)"
_comet_env_sourced=0
(return 0 2>/dev/null) && _comet_env_sourced=1
export COMET_GUARD="${COMET_GUARD:-${_comet_script_dir}/comet-guard.sh}"
export COMET_STATE="${COMET_STATE:-${_comet_script_dir}/comet-state.sh}"
export COMET_HANDOFF="${COMET_HANDOFF:-${_comet_script_dir}/comet-handoff.sh}"
export COMET_ARCHIVE="${COMET_ARCHIVE:-${_comet_script_dir}/comet-archive.sh}"
export COMET_YAML_VALIDATE="${COMET_YAML_VALIDATE:-${_comet_script_dir}/comet-yaml-validate.sh}"
_comet_bash_is_usable() {
local _comet_bash_candidate="$1"
if [ -z "$_comet_bash_candidate" ]; then
return 1
fi
case "$_comet_bash_candidate" in
*/Windows/System32/bash.exe|*/windows/system32/bash.exe|*\\Windows\\System32\\bash.exe|*\\windows\\system32\\bash.exe)
return 1
;;
esac
"$_comet_bash_candidate" -lc 'printf comet-bash-ok' >/dev/null 2>&1
}
_comet_resolve_bash() {
local _comet_bash_candidate
if _comet_bash_is_usable "${COMET_BASH:-}"; then
printf '%s\n' "$COMET_BASH"
return 0
fi
if _comet_bash_is_usable "${BASH:-}"; then
printf '%s\n' "$BASH"
return 0
fi
_comet_bash_candidate="$(command -v sh 2>/dev/null | awk '{ sub(/\/sh(\.exe)?$/, "/bash.exe"); print }')"
if _comet_bash_is_usable "$_comet_bash_candidate"; then
printf '%s\n' "$_comet_bash_candidate"
return 0
fi
_comet_bash_candidate="$(command -v bash 2>/dev/null || true)"
if _comet_bash_is_usable "$_comet_bash_candidate"; then
printf '%s\n' "$_comet_bash_candidate"
return 0
fi
return 1
}
COMET_BASH="$(_comet_resolve_bash || true)"
export COMET_BASH
_comet_env_fail() {
echo "ERROR: Comet scripts not found. Ensure the comet skill is installed completely." >&2
echo "Expected path pattern: */comet/scripts/comet-*.sh under project or platform skill directories" >&2
}
_comet_bash_fail() {
echo "ERROR: usable bash not found. Install Git Bash or set COMET_BASH to a working bash executable." >&2
echo "Windows WSL launcher bash.exe is not supported for Comet scripts." >&2
}
_comet_env_abort() {
local _comet_env_was_sourced="$_comet_env_sourced"
unset _comet_env_source _comet_script_dir _comet_script _comet_env_missing _comet_env_sourced
unset _comet_bash_candidate
unset -f _comet_env_fail _comet_bash_fail _comet_bash_is_usable _comet_resolve_bash
if [ "$_comet_env_was_sourced" -eq 1 ]; then
unset -f _comet_env_abort
return 1
fi
exit 1
}
_comet_env_missing=0
if [ -z "$COMET_BASH" ]; then
_comet_bash_fail
_comet_env_missing=1
fi
for _comet_script in \
"$COMET_GUARD" \
"$COMET_STATE" \
"$COMET_HANDOFF" \
"$COMET_ARCHIVE" \
"$COMET_YAML_VALIDATE"; do
if [ ! -f "$_comet_script" ]; then
_comet_env_fail
_comet_env_missing=1
break
fi
done
if [ "$_comet_env_missing" -ne 0 ]; then
_comet_env_abort
else
unset _comet_env_source _comet_script_dir _comet_script _comet_env_missing _comet_env_sourced
unset _comet_bash_candidate
unset -f _comet_env_fail _comet_bash_fail _comet_bash_is_usable _comet_resolve_bash _comet_env_abort
fi