chore(scripts): remove deprecated agent and release scripts
- Deleted the `agent.sh` script, which provided background agent functionality for YAZE, as it is no longer needed. - Removed the `create_release.sh` script used for creating release tags, streamlining the release process. - Eliminated the `test_apu_boot.sh` script for APU/SPC700 boot sequence testing, as it is outdated. Benefits: - Cleans up the scripts directory by removing unused and deprecated scripts, improving project maintainability.
This commit is contained in:
369
scripts/agent.sh
369
scripts/agent.sh
@@ -1,369 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Unified background agent script for YAZE (macOS launchd, Linux systemd)
|
||||
# Subcommands:
|
||||
# install [--build-type X] [--use-inotify] [--ubuntu-bootstrap] [--enable-linger]
|
||||
# uninstall
|
||||
# run-once # one-shot build & test
|
||||
# watch # linux: inotify-based watch loop
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
||||
|
||||
BUILD_DIR_DEFAULT="${PROJECT_ROOT}/build"
|
||||
BUILD_TYPE_DEFAULT="Debug"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Usage: $0 <subcommand> [options]
|
||||
|
||||
Subcommands:
|
||||
install Install background agent
|
||||
--build-type X CMake build type (default: ${BUILD_TYPE_DEFAULT})
|
||||
--use-inotify Linux: use long-lived inotify watcher
|
||||
--ubuntu-bootstrap Install Ubuntu deps via apt (sudo)
|
||||
--enable-linger Enable user lingering (Linux)
|
||||
|
||||
uninstall Remove installed background agent
|
||||
|
||||
run-once One-shot build and test
|
||||
env: BUILD_DIR, BUILD_TYPE
|
||||
|
||||
watch Linux: inotify-based watch loop
|
||||
env: BUILD_DIR, BUILD_TYPE, INTERVAL_SECONDS (fallback)
|
||||
|
||||
Environment:
|
||||
BUILD_DIR Build directory (default: ${BUILD_DIR_DEFAULT})
|
||||
BUILD_TYPE CMake build type (default: ${BUILD_TYPE_DEFAULT})
|
||||
EOF
|
||||
}
|
||||
|
||||
build_and_test() {
|
||||
local build_dir="${BUILD_DIR:-${BUILD_DIR_DEFAULT}}"
|
||||
local build_type="${BUILD_TYPE:-${BUILD_TYPE_DEFAULT}}"
|
||||
local log_file="${LOG_FILE:-"${build_dir}/yaze_agent.log"}"
|
||||
|
||||
mkdir -p "${build_dir}"
|
||||
{
|
||||
echo "==== $(date '+%Y-%m-%d %H:%M:%S') | yaze agent run (type=${build_type}) ===="
|
||||
echo "Project: ${PROJECT_ROOT}"
|
||||
|
||||
cmake -S "${PROJECT_ROOT}" -B "${build_dir}" -DCMAKE_BUILD_TYPE="${build_type}"
|
||||
cmake --build "${build_dir}" --config "${build_type}" -j
|
||||
|
||||
if [[ -x "${build_dir}/bin/yaze_test" ]]; then
|
||||
"${build_dir}/bin/yaze_test"
|
||||
else
|
||||
if command -v ctest >/dev/null 2>&1; then
|
||||
ctest --test-dir "${build_dir}" --output-on-failure
|
||||
else
|
||||
echo "ctest not found and test binary missing. Skipping tests." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
} >>"${log_file}" 2>&1
|
||||
}
|
||||
|
||||
sub_run_once() {
|
||||
build_and_test
|
||||
}
|
||||
|
||||
sub_watch() {
|
||||
local build_dir="${BUILD_DIR:-${BUILD_DIR_DEFAULT}}"
|
||||
local build_type="${BUILD_TYPE:-${BUILD_TYPE_DEFAULT}}"
|
||||
local interval="${INTERVAL_SECONDS:-5}"
|
||||
mkdir -p "${build_dir}"
|
||||
if command -v inotifywait >/dev/null 2>&1; then
|
||||
echo "[agent] using inotifywait watcher"
|
||||
while true; do
|
||||
BUILD_DIR="${build_dir}" BUILD_TYPE="${build_type}" build_and_test || true
|
||||
inotifywait -r -e modify,create,delete,move \
|
||||
"${PROJECT_ROOT}/src" \
|
||||
"${PROJECT_ROOT}/test" \
|
||||
"${PROJECT_ROOT}/CMakeLists.txt" \
|
||||
"${PROJECT_ROOT}/src/CMakeLists.txt" >/dev/null 2>&1 || true
|
||||
done
|
||||
else
|
||||
echo "[agent] inotifywait not found; running periodic loop (${interval}s)"
|
||||
while true; do
|
||||
BUILD_DIR="${build_dir}" BUILD_TYPE="${build_type}" build_and_test || true
|
||||
sleep "${interval}"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_exec() {
|
||||
if [[ ! -x "$1" ]]; then
|
||||
chmod +x "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
ubuntu_bootstrap() {
|
||||
if command -v apt-get >/dev/null 2>&1; then
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y inotify-tools build-essential cmake ninja-build pkg-config \
|
||||
libsdl2-dev libglew-dev libwavpack-dev libabsl-dev \
|
||||
libboost-all-dev libboost-python-dev python3-dev libpython3-dev
|
||||
else
|
||||
echo "apt-get not found; skipping Ubuntu bootstrap" >&2
|
||||
fi
|
||||
}
|
||||
|
||||
enable_linger_linux() {
|
||||
if command -v loginctl >/dev/null 2>&1; then
|
||||
if sudo -n true 2>/dev/null; then
|
||||
sudo loginctl enable-linger "$USER" || true
|
||||
else
|
||||
echo "Note: enabling linger may require sudo: sudo loginctl enable-linger $USER" >&2
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Wrapper to run systemctl --user with a session bus in headless shells
|
||||
systemctl_user() {
|
||||
# Only apply on Linux
|
||||
if [[ "$(uname -s)" != "Linux" ]]; then
|
||||
systemctl "$@"
|
||||
return
|
||||
fi
|
||||
local uid
|
||||
uid="$(id -u)"
|
||||
export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/run/user/${uid}}"
|
||||
export DBUS_SESSION_BUS_ADDRESS="${DBUS_SESSION_BUS_ADDRESS:-unix:path=${XDG_RUNTIME_DIR}/bus}"
|
||||
if [[ ! -S "${XDG_RUNTIME_DIR}/bus" ]]; then
|
||||
echo "[agent] Warning: user bus not found at ${XDG_RUNTIME_DIR}/bus. If this fails, run: sudo loginctl enable-linger $USER" >&2
|
||||
fi
|
||||
systemctl --user "$@"
|
||||
}
|
||||
|
||||
is_systemd_available() {
|
||||
# True if systemd is PID 1 and systemctl exists and a user bus likely available
|
||||
if [[ ! -d /run/systemd/system ]]; then
|
||||
return 1
|
||||
fi
|
||||
if ! command -v systemctl >/dev/null 2>&1; then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
start_userland_agent() {
|
||||
local build_type="${1}"
|
||||
local build_dir="${2}"
|
||||
local agent_home="$HOME/.local/share/yaze-agent"
|
||||
mkdir -p "${agent_home}"
|
||||
local log_file="${agent_home}/agent.log"
|
||||
nohup env BUILD_TYPE="${build_type}" BUILD_DIR="${build_dir}" "${SCRIPT_DIR}/agent.sh" watch >>"${log_file}" 2>&1 & echo $! > "${agent_home}/agent.pid"
|
||||
echo "Userland agent started (PID $(cat "${agent_home}/agent.pid")) - logs: ${log_file}"
|
||||
}
|
||||
|
||||
stop_userland_agent() {
|
||||
local agent_home="$HOME/.local/share/yaze-agent"
|
||||
local pid_file="${agent_home}/agent.pid"
|
||||
if [[ -f "${pid_file}" ]]; then
|
||||
local pid
|
||||
pid="$(cat "${pid_file}")"
|
||||
if kill -0 "${pid}" >/dev/null 2>&1; then
|
||||
kill "${pid}" || true
|
||||
fi
|
||||
rm -f "${pid_file}"
|
||||
echo "Stopped userland agent"
|
||||
fi
|
||||
}
|
||||
|
||||
install_macos() {
|
||||
local build_type="${1}"
|
||||
local build_dir="${2}"
|
||||
local label="com.yaze.watchtest"
|
||||
local plist_path="$HOME/Library/LaunchAgents/${label}.plist"
|
||||
|
||||
mkdir -p "${build_dir}"
|
||||
|
||||
cat >"$plist_path" <<PLIST
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Label</key>
|
||||
<string>${label}</string>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>/bin/zsh</string>
|
||||
<string>-lc</string>
|
||||
<string>"${SCRIPT_DIR}/agent.sh" run-once</string>
|
||||
</array>
|
||||
<key>WorkingDirectory</key>
|
||||
<string>${PROJECT_ROOT}</string>
|
||||
<key>WatchPaths</key>
|
||||
<array>
|
||||
<string>${PROJECT_ROOT}/src</string>
|
||||
<string>${PROJECT_ROOT}/test</string>
|
||||
<string>${PROJECT_ROOT}/CMakeLists.txt</string>
|
||||
<string>${PROJECT_ROOT}/src/CMakeLists.txt</string>
|
||||
</array>
|
||||
<key>StandardOutPath</key>
|
||||
<string>${build_dir}/yaze_agent.out.log</string>
|
||||
<key>StandardErrorPath</key>
|
||||
<string>${build_dir}/yaze_agent.err.log</string>
|
||||
<key>EnvironmentVariables</key>
|
||||
<dict>
|
||||
<key>BUILD_TYPE</key><string>${build_type}</string>
|
||||
<key>BUILD_DIR</key><string>${build_dir}</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
PLIST
|
||||
|
||||
launchctl unload -w "$plist_path" 2>/dev/null || true
|
||||
launchctl load -w "$plist_path"
|
||||
echo "LaunchAgent installed and loaded: ${plist_path}"
|
||||
}
|
||||
|
||||
install_linux() {
|
||||
local build_type="${1}"
|
||||
local build_dir="${2}"
|
||||
local use_inotify="${3}"
|
||||
local systemd_dir="$HOME/.config/systemd/user"
|
||||
local service_name="yaze-watchtest.service"
|
||||
local path_name="yaze-watchtest.path"
|
||||
|
||||
mkdir -p "${systemd_dir}" "${build_dir}"
|
||||
|
||||
if ! is_systemd_available; then
|
||||
echo "[agent] systemd not available; installing userland background agent"
|
||||
start_userland_agent "${build_type}" "${build_dir}"
|
||||
return
|
||||
fi
|
||||
|
||||
if [[ "${use_inotify}" == "1" ]]; then
|
||||
cat >"${systemd_dir}/yaze-watchtest-inotify.service" <<UNIT
|
||||
[Unit]
|
||||
Description=Yaze inotify watcher build-and-test
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
Environment=BUILD_TYPE=${build_type}
|
||||
Environment=BUILD_DIR=${build_dir}
|
||||
WorkingDirectory=${PROJECT_ROOT}
|
||||
ExecStart=/bin/bash -lc '"${SCRIPT_DIR}/agent.sh" watch'
|
||||
Restart=always
|
||||
RestartSec=2
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
UNIT
|
||||
|
||||
systemctl_user daemon-reload
|
||||
systemctl_user enable --now yaze-watchtest-inotify.service
|
||||
echo "systemd user service enabled: yaze-watchtest-inotify.service"
|
||||
return
|
||||
fi
|
||||
|
||||
cat >"${systemd_dir}/${service_name}" <<UNIT
|
||||
[Unit]
|
||||
Description=Yaze build-and-test (one-shot)
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
Environment=BUILD_TYPE=${build_type}
|
||||
Environment=BUILD_DIR=${build_dir}
|
||||
WorkingDirectory=${PROJECT_ROOT}
|
||||
ExecStart=/bin/bash -lc '"${SCRIPT_DIR}/agent.sh" run-once'
|
||||
UNIT
|
||||
|
||||
cat >"${systemd_dir}/${path_name}" <<UNIT
|
||||
[Unit]
|
||||
Description=Watch Yaze src/test for changes
|
||||
|
||||
[Path]
|
||||
PathModified=${PROJECT_ROOT}/src
|
||||
PathModified=${PROJECT_ROOT}/test
|
||||
PathModified=${PROJECT_ROOT}/CMakeLists.txt
|
||||
PathModified=${PROJECT_ROOT}/src/CMakeLists.txt
|
||||
Unit=${service_name}
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
UNIT
|
||||
|
||||
systemctl_user daemon-reload
|
||||
systemctl_user enable --now "$path_name"
|
||||
echo "systemd user path unit enabled: ${path_name}"
|
||||
systemctl_user start "$service_name" || true
|
||||
}
|
||||
|
||||
sub_install() {
|
||||
local build_type="${BUILD_TYPE:-${BUILD_TYPE_DEFAULT}}"
|
||||
local build_dir="${BUILD_DIR:-${BUILD_DIR_DEFAULT}}"
|
||||
local use_inotify=0
|
||||
local do_bootstrap=0
|
||||
local do_linger=0
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--build-type) build_type="$2"; shift 2 ;;
|
||||
--use-inotify) use_inotify=1; shift ;;
|
||||
--ubuntu-bootstrap) do_bootstrap=1; shift ;;
|
||||
--enable-linger) do_linger=1; shift ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) echo "Unknown option for install: $1" >&2; usage; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
case "$(uname -s)" in
|
||||
Darwin)
|
||||
install_macos "${build_type}" "${build_dir}" ;;
|
||||
Linux)
|
||||
if (( do_bootstrap == 1 )); then ubuntu_bootstrap; fi
|
||||
if (( do_linger == 1 )); then enable_linger_linux; fi
|
||||
install_linux "${build_type}" "${build_dir}" "${use_inotify}" ;;
|
||||
*)
|
||||
echo "Unsupported platform" >&2; exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
sub_uninstall() {
|
||||
case "$(uname -s)" in
|
||||
Darwin)
|
||||
local label="com.yaze.watchtest"
|
||||
local plist_path="$HOME/Library/LaunchAgents/${label}.plist"
|
||||
launchctl unload -w "$plist_path" 2>/dev/null || true
|
||||
rm -f "$plist_path"
|
||||
echo "Removed LaunchAgent ${label}"
|
||||
;;
|
||||
Linux)
|
||||
local systemd_dir="$HOME/.config/systemd/user"
|
||||
if is_systemd_available; then
|
||||
systemctl_user stop yaze-watchtest.path 2>/dev/null || true
|
||||
systemctl_user disable yaze-watchtest.path 2>/dev/null || true
|
||||
systemctl_user stop yaze-watchtest.service 2>/dev/null || true
|
||||
systemctl_user stop yaze-watchtest-inotify.service 2>/dev/null || true
|
||||
systemctl_user disable yaze-watchtest-inotify.service 2>/dev/null || true
|
||||
rm -f "${systemd_dir}/yaze-watchtest.service" "${systemd_dir}/yaze-watchtest.path" "${systemd_dir}/yaze-watchtest-inotify.service"
|
||||
systemctl_user daemon-reload || true
|
||||
echo "Removed systemd user units"
|
||||
fi
|
||||
stop_userland_agent
|
||||
;;
|
||||
*) echo "Unsupported platform" >&2; exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
main() {
|
||||
ensure_exec "$0"
|
||||
local subcmd="${1:-}"; shift || true
|
||||
case "${subcmd}" in
|
||||
install) sub_install "$@" ;;
|
||||
uninstall) sub_uninstall ;;
|
||||
run-once) sub_run_once ;;
|
||||
watch) sub_watch ;;
|
||||
-h|--help|help|"") usage ;;
|
||||
*) echo "Unknown subcommand: ${subcmd}" >&2; usage; exit 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
main "$@"
|
||||
|
||||
|
||||
@@ -1,138 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Script to create a proper release tag for YAZE
|
||||
# Usage: ./scripts/create_release.sh [version]
|
||||
# Example: ./scripts/create_release.sh 0.3.0
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Function to print colored output
|
||||
print_info() {
|
||||
echo -e "${BLUE}ℹ️ $1${NC}"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✅ $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
# Check if we're in a git repository
|
||||
if ! git rev-parse --git-dir > /dev/null 2>&1; then
|
||||
print_error "Not in a git repository!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if we're on master branch
|
||||
current_branch=$(git branch --show-current)
|
||||
if [ "$current_branch" != "master" ]; then
|
||||
print_warning "You're on branch '$current_branch', not 'master'"
|
||||
read -p "Continue anyway? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
print_info "Switching to master branch..."
|
||||
git checkout master
|
||||
fi
|
||||
fi
|
||||
|
||||
# Get version argument or prompt for it
|
||||
if [ $# -eq 0 ]; then
|
||||
echo
|
||||
print_info "Enter the version number (e.g., 0.3.0, 1.0.0-beta, 2.1.0-rc1):"
|
||||
read -p "Version: " version
|
||||
else
|
||||
version=$1
|
||||
fi
|
||||
|
||||
# Validate version format
|
||||
if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-.*)?$ ]]; then
|
||||
print_error "Invalid version format: '$version'"
|
||||
print_info "Version must follow semantic versioning (e.g., 1.2.3 or 1.2.3-beta)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Create tag with v prefix
|
||||
tag="v$version"
|
||||
|
||||
# Check if tag already exists
|
||||
if git tag -l | grep -q "^$tag$"; then
|
||||
print_error "Tag '$tag' already exists!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Show current status
|
||||
echo
|
||||
print_info "Current repository status:"
|
||||
git status --short
|
||||
|
||||
# Check for uncommitted changes
|
||||
if ! git diff-index --quiet HEAD --; then
|
||||
print_warning "You have uncommitted changes!"
|
||||
read -p "Continue with creating release? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
print_info "Please commit your changes first, then run this script again."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# Show what will happen
|
||||
echo
|
||||
print_info "Creating release for YAZE:"
|
||||
echo " 📦 Version: $version"
|
||||
echo " 🏷️ Tag: $tag"
|
||||
echo " 🌿 Branch: $current_branch"
|
||||
echo " 📝 Changelog: docs/C1-changelog.md"
|
||||
echo
|
||||
|
||||
# Confirm
|
||||
read -p "Create this release? (y/N): " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
print_info "Release creation cancelled."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Create and push tag
|
||||
print_info "Creating tag '$tag'..."
|
||||
if git tag -a "$tag" -m "Release $tag"; then
|
||||
print_success "Tag '$tag' created successfully!"
|
||||
else
|
||||
print_error "Failed to create tag!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
print_info "Pushing tag to origin..."
|
||||
if git push origin "$tag"; then
|
||||
print_success "Tag pushed successfully!"
|
||||
else
|
||||
print_error "Failed to push tag!"
|
||||
print_info "You can manually push with: git push origin $tag"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo
|
||||
print_success "🎉 Release $tag created successfully!"
|
||||
print_info "The GitHub Actions release workflow will now:"
|
||||
echo " • Build packages for Windows, macOS, and Linux"
|
||||
echo " • Extract changelog from docs/C1-changelog.md"
|
||||
echo " • Create GitHub release with all assets"
|
||||
echo " • Include themes, fonts, layouts, and documentation"
|
||||
echo
|
||||
print_info "Check the release progress at:"
|
||||
echo " https://github.com/scawful/yaze/actions"
|
||||
echo
|
||||
print_info "The release will be available at:"
|
||||
echo " https://github.com/scawful/yaze/releases/tag/$tag"
|
||||
@@ -1,25 +0,0 @@
|
||||
#!/bin/bash
|
||||
# Test script for APU/SPC700 boot sequence debugging
|
||||
# Runs yaze with specific filters to show only critical APU events
|
||||
|
||||
cd /Users/scawful/Code/yaze
|
||||
|
||||
echo "========================================="
|
||||
echo "Testing ALTTP APU Boot Sequence"
|
||||
echo "========================================="
|
||||
echo ""
|
||||
|
||||
# Run yaze and filter for key events
|
||||
./build/bin/yaze.app/Contents/MacOS/yaze 2>&1 | \
|
||||
grep -E "(Frame [0-9]+: CPU|SPC wrote port.*F4|MOVSY writing|CPU read.*2140.*=.*(AA|BB|CC|01|02)|CPU wrote.*214[012]|TRANSFER LOOP.*FFDF)" | \
|
||||
head -100
|
||||
|
||||
echo ""
|
||||
echo "========================================="
|
||||
echo "Test complete - check output above for:"
|
||||
echo "1. Initial handshake ($AA/$BB)"
|
||||
echo "2. Command echo ($CC)"
|
||||
echo "3. Counter acknowledgments ($00, $01, $02...)"
|
||||
echo "4. CPU progress beyond $88xx range"
|
||||
echo "========================================="
|
||||
|
||||
Reference in New Issue
Block a user