syntaxis/scripts/syntaxis-api.nu
Jesús Pérez 9cef9b8d57 refactor: consolidate configuration directories
Merge _configs/ into config/ for single configuration directory.
Update all path references.

Changes:
- Move _configs/* to config/
- Update .gitignore for new patterns
- No code references to _configs/ found

Impact: -1 root directory (layout_conventions.md compliance)
2025-12-26 18:36:23 +00:00

165 lines
4.1 KiB
Plaintext

#!/usr/bin/env nu
# Syntaxis API wrapper script
# This script provides a unified interface to manage syntaxis-api using provctl.
#
# provctl handles:
# - Multi-platform service management (systemd, launchd, pidfile)
# - Process lifecycle (start, stop, restart, status)
# - Logging and monitoring
# - Cross-platform configuration
#
# See: /Users/Akasha/Development/provctl/ for more information
# Source shared libraries - they should be in NU_LIB_DIRS
source syntaxis-lib.nu
source syntaxis-api-lib.nu
$env.SYNTAXIS_CONFIG_DIR = ($env.HOME | path join ".config/syntaxis")
# Setup environment for auto-discovery config loading
$env.SYNTAXIS_DATA_DIR = $"($env.HOME)/.local/share/syntaxis"
$env.SYNTAXIS_PUBLIC_DIR = $"($env.HOME)/.config/syntaxis/public"
# Verify provctl is available
def check_provctl [] {
if (which provctl | is-empty) {
print "❌ provctl not found. Please install it:"
print " cd /Users/Akasha/Development/provctl && ./install-provctl.nu"
exit 1
}
}
# Get the syntaxis-api configuration file
def get_config_file [] {
let config_dir = ($env.HOME | path join ".config/syntaxis")
if (($config_dir | path join "config.toml") | path exists) {
$config_dir | path join "config.toml"
} else if (($config_dir | path join "syntaxis-api.toml") | path exists) {
$config_dir | path join "syntaxis-api.toml"
} else {
print $"🛑 Config path not found in ($config_dir)"
print " Create one of these files:"
print " - $config_dir/config.toml"
print " - $config_dir/syntaxis-api.toml"
print ""
print " See /Users/Akasha/provctl/provisioning/examples/syntaxis-api.toml"
exit 1
}
}
# Start the syntaxis-api server using provctl
def start_server [] {
check_provctl
let config = (get_config_file)
print "▶️ Starting syntaxis-api..."
print " Config: $config"
try {
# provctl will handle auto-detection and use the appropriate backend
^provctl start syntaxis-api
} catch { |err|
print $"❌ Failed to start syntaxis-api: ($err)"
exit 1
}
}
# Stop the syntaxis-api server using provctl
def stop_server [] {
check_provctl
print "⏹️ Stopping syntaxis-api..."
try {
^provctl stop syntaxis-api
} catch { |err|
print $"❌ Failed to stop syntaxis-api: ($err)"
exit 1
}
}
# Check syntaxis-api status using provctl
def check_status [] {
check_provctl
try {
^provctl status syntaxis-api
} catch { |err|
print $"❌ Failed to check status: ($err)"
exit 1
}
}
# View syntaxis-api logs using provctl
def view_logs [lines: int = 50] {
check_provctl
try {
print $"📋 Last ($lines) log lines:"
print ""
^provctl logs syntaxis-api --lines $lines
} catch { |err|
print $"❌ Failed to view logs: ($err)"
exit 1
}
}
# Restart the syntaxis-api server using provctl
def restart_server [] {
check_provctl
print "🔄 Restarting syntaxis-api..."
try {
^provctl restart syntaxis-api
} catch { |err|
print $"❌ Failed to restart syntaxis-api: ($err)"
exit 1
}
}
def main [...args] {
# Handle no arguments
if ($args | length) == 0 {
api_usage
return
}
let command = $args | first
let remaining = ($args | skip 1)
match $command {
"start" => {
start_server
}
"stop" => {
stop_server
}
"restart" => {
restart_server
}
"status" => {
check_status
}
"logs" => {
# Parse optional --lines argument
let lines = if ($remaining | length) > 0 and (($remaining | first) == "--lines") {
($remaining | get 1 | into int)
} else {
50
}
view_logs $lines
}
"help" | "--help" | "-h" => {
api_usage
}
_ => {
print $"❌ Unknown command: ($command)"
print ""
api_usage
exit 1
}
}
}