Files
gastown/npm-package/bin/gt.js
jack 03ffefc962 feat: Add GitHub deployment artifacts (homebrew, npm) (gt-ufep6)
- Add .goreleaser.yml for multi-platform binary releases
- Add npm-package/ with postinstall binary download
- Add release.yml workflow for GoReleaser + npm publish + Homebrew tap

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 00:19:26 -08:00

55 lines
1.3 KiB
JavaScript

#!/usr/bin/env node
const { spawn } = require('child_process');
const path = require('path');
const os = require('os');
const fs = require('fs');
// Determine the platform-specific binary name
function getBinaryPath() {
const platform = os.platform();
const arch = os.arch();
let binaryName = 'gt';
if (platform === 'win32') {
binaryName = 'gt.exe';
}
// Binary is stored in the package's bin directory
const binaryPath = path.join(__dirname, binaryName);
if (!fs.existsSync(binaryPath)) {
console.error(`Error: gt binary not found at ${binaryPath}`);
console.error('This may indicate that the postinstall script failed to download the binary.');
console.error(`Platform: ${platform}, Architecture: ${arch}`);
process.exit(1);
}
return binaryPath;
}
// Execute the native binary with all arguments passed through
function main() {
const binaryPath = getBinaryPath();
// Spawn the native gt binary with all command-line arguments
const child = spawn(binaryPath, process.argv.slice(2), {
stdio: 'inherit',
env: process.env
});
child.on('error', (err) => {
console.error(`Error executing gt binary: ${err.message}`);
process.exit(1);
});
child.on('exit', (code, signal) => {
if (signal) {
process.exit(1);
}
process.exit(code || 0);
});
}
main();