Skip to content

Instantly share code, notes, and snippets.

@cablehead
Last active July 28, 2025 01:06
Show Gist options
  • Save cablehead/a6c3d87d8f99a872153c7d43adf630a1 to your computer and use it in GitHub Desktop.
Save cablehead/a6c3d87d8f99a872153c7d43adf630a1 to your computer and use it in GitHub Desktop.
Nushell experiment for cross.stream
# Spawn xs serve in a temporary directory, run a closure, then cleanup
export def spawn-xs-test [closure: closure] {
# Create a temporary directory
let tmp_dir = (mktemp -d)
print $"Created temp directory: ($tmp_dir)"
let store_path = ($tmp_dir | path join "store")
try {
# Create store directory
mkdir $store_path
# Spawn xs serve in the background
let job_id = job spawn --tag "xs-test-server" {
xs serve $store_path
}
print $"Started xs serve with job ID: ($job_id)"
$env.XS_ADDR = $store_path
hide-env XS_CONTEXT
# Give the server a moment to start up
sleep 50ms
try {
# Run the provided closure
do $closure
} catch { |err|
print $"Error in closure: ($err.msg)"
}
# Kill the background job
job kill $job_id
print $"Killed xs serve job ($job_id)"
# Give a moment for the job to shut down
sleep 50ms
} catch { |err|
print $"Error during setup: ($err.msg)"
}
# Clean up the temporary directory
try {
rm -rf $tmp_dir
print $"Cleaned up temp directory: ($tmp_dir)"
} catch { |err|
print $"Warning: Could not clean up temp directory: ($err.msg)"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment