feat(scripts): common.sh helpers (log_*, require_cmd, make_backup_dir)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
# Shared helpers for brain scripts
|
||||
# Source guard
|
||||
[ -n "${__BRAIN_COMMON_LOADED:-}" ] && return 0
|
||||
__BRAIN_COMMON_LOADED=1
|
||||
|
||||
log_info() { printf "[INFO] %s\n" "$*" >&2; }
|
||||
log_warn() { printf "[WARN] %s\n" "$*" >&2; }
|
||||
log_error() { printf "[ERROR] %s\n" "$*" >&2; }
|
||||
|
||||
require_cmd() {
|
||||
local cmd="$1"
|
||||
if ! command -v "$cmd" >/dev/null 2>&1; then
|
||||
log_error "Required command not found: $cmd"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
make_backup_dir() {
|
||||
local target="$1"
|
||||
local ts
|
||||
ts=$(date +%Y%m%d-%H%M%S)
|
||||
local backup="${target%/}/.brain-backup-${ts}"
|
||||
mkdir -p "$backup"
|
||||
printf "%s" "$backup"
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env bash
|
||||
# Tests for scripts/lib/common.sh
|
||||
set -u
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
source "$SCRIPT_DIR/lib/common.sh"
|
||||
|
||||
FAILURES=0
|
||||
assert_eq() {
|
||||
local expected="$1" actual="$2" name="$3"
|
||||
if [ "$expected" = "$actual" ]; then
|
||||
echo "PASS: $name"
|
||||
else
|
||||
echo "FAIL: $name (expected '$expected', got '$actual')"
|
||||
FAILURES=$((FAILURES + 1))
|
||||
fi
|
||||
}
|
||||
|
||||
# Test 1: log_info writes to stderr
|
||||
output=$(log_info "test message" 2>&1 1>/dev/null)
|
||||
case "$output" in
|
||||
*"test message"*) assert_eq "ok" "ok" "log_info goes to stderr" ;;
|
||||
*) assert_eq "ok" "fail" "log_info goes to stderr" ;;
|
||||
esac
|
||||
|
||||
# Test 2: require_cmd succeeds for existing command
|
||||
require_cmd ls >/dev/null 2>&1
|
||||
assert_eq "0" "$?" "require_cmd ls returns 0"
|
||||
|
||||
# Test 3: require_cmd fails for missing command
|
||||
require_cmd this_command_definitely_does_not_exist_12345 >/dev/null 2>&1
|
||||
result=$?
|
||||
[ "$result" -ne 0 ] && assert_eq "0" "0" "require_cmd missing returns non-zero" || assert_eq "0" "1" "require_cmd missing returns non-zero"
|
||||
|
||||
# Test 4: make_backup_dir creates dir
|
||||
tmpdir=$(mktemp -d)
|
||||
backup=$(make_backup_dir "$tmpdir")
|
||||
[ -d "$backup" ] && assert_eq "yes" "yes" "make_backup_dir creates directory" || assert_eq "yes" "no" "make_backup_dir creates directory"
|
||||
rm -rf "$tmpdir"
|
||||
|
||||
echo "---"
|
||||
echo "Failures: $FAILURES"
|
||||
exit $FAILURES
|
||||
Reference in New Issue
Block a user