this repo has no description
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}