this repo has no description
at main 72 lines 2.0 kB view raw
1#!/usr/bin/env node 2 3import { parseArgs } from 'node:util' 4import { installRelease } from './index.js' 5 6const { values, positionals } = parseArgs({ 7 args: process.argv.slice(2), 8 options: { 9 'bin-name': { type: 'string', short: 'b' }, 10 output: { type: 'string', short: 'o' }, 11 'platform-map': { type: 'string', short: 'p' }, 12 force: { type: 'boolean', short: 'f' }, 13 verbose: { type: 'boolean', short: 'v' }, 14 help: { type: 'boolean', short: 'h' }, 15 }, 16 allowPositionals: true, 17}) 18 19if (values.help) { 20 console.log( 21 ` 22Usage: release-installer <owner/repo> <version> [options] 23 24Options: 25 -b, --bin-name <name> Name of the binary inside the archive 26 -o, --output <dir> Output directory (default: ./bin) 27 -p, --platform-map <json> JSON string or file path for platform mappings 28 -f, --force Overwrite existing files 29 -v, --verbose Verbose logging 30 -h, --help Show this help message 31 32Examples: 33 release-installer getzola/zola v0.20.0 34 release-installer getzola/zola v0.20.0 --bin-name=zola --output=./bin 35 `.trim(), 36 ) 37 process.exit(0) 38} 39 40const [repo, version] = positionals 41const { 'bin-name': binName, output: outputDir, force, verbose } = values 42 43if (!repo || !version) { 44 console.error('Error: Both repository and version are required') 45 console.error('Usage: release-installer <owner/repo> <version>') 46 process.exit(1) 47} 48 49try { 50 let platformMap: Record<string, string> | undefined 51 52 if (values['platform-map']) { 53 try { 54 platformMap = JSON.parse(values['platform-map']) 55 } catch { 56 console.error('Error: Invalid JSON in platform-map parameter') 57 console.error('Expected format: {"platform-arch": "asset-name"}') 58 process.exit(1) 59 } 60 } 61 62 await installRelease(repo, version, { 63 binName, 64 outputDir, 65 platformMap, 66 force, 67 verbose, 68 }) 69} catch (error) { 70 console.error('Error:', error instanceof Error ? error.message : error) 71 process.exit(1) 72}