Something went wrong. Try again.
Something went wrong. Try again.
2.0 kB · 72 lines
TypeScript
at main
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#!/usr/bin/env node
import { parseArgs } from 'node:util'import { installRelease } from './index.js'
const { values, positionals } = parseArgs({ args: process.argv.slice(2), options: { 'bin-name': { type: 'string', short: 'b' }, output: { type: 'string', short: 'o' }, 'platform-map': { type: 'string', short: 'p' }, force: { type: 'boolean', short: 'f' }, verbose: { type: 'boolean', short: 'v' }, help: { type: 'boolean', short: 'h' }, }, allowPositionals: true,})
if (values.help) { console.log( `Usage: release-installer <owner/repo> <version> [options]
Options: -b, --bin-name <name> Name of the binary inside the archive -o, --output <dir> Output directory (default: ./bin) -p, --platform-map <json> JSON string or file path for platform mappings -f, --force Overwrite existing files -v, --verbose Verbose logging -h, --help Show this help message
Examples: release-installer getzola/zola v0.20.0 release-installer getzola/zola v0.20.0 --bin-name=zola --output=./bin `.trim(), ) process.exit(0)}
const [repo, version] = positionalsconst { 'bin-name': binName, output: outputDir, force, verbose } = values
if (!repo || !version) { console.error('Error: Both repository and version are required') console.error('Usage: release-installer <owner/repo> <version>') process.exit(1)}
try { let platformMap: Record<string, string> | undefined
if (values['platform-map']) { try { platformMap = JSON.parse(values['platform-map']) } catch { console.error('Error: Invalid JSON in platform-map parameter') console.error('Expected format: {"platform-arch": "asset-name"}') process.exit(1) } }
await installRelease(repo, version, { binName, outputDir, platformMap, force, verbose, })} catch (error) { console.error('Error:', error instanceof Error ? error.message : error) process.exit(1)}