@vforsh/rmatic 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +25 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +43 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +287 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +10 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +25 -0
- package/dist/output.js.map +1 -0
- package/package.json +5 -4
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type CliFlags = {
|
|
2
|
+
baseUrl?: string;
|
|
3
|
+
token?: string;
|
|
4
|
+
timeout?: string | number;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
plain?: boolean;
|
|
7
|
+
quiet?: boolean;
|
|
8
|
+
verbose?: boolean;
|
|
9
|
+
debug?: boolean;
|
|
10
|
+
noColor?: boolean;
|
|
11
|
+
noInput?: boolean;
|
|
12
|
+
force?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export type ResolvedConfig = {
|
|
15
|
+
baseUrl?: string;
|
|
16
|
+
token?: string;
|
|
17
|
+
timeoutMs: number;
|
|
18
|
+
};
|
|
19
|
+
export declare function getConfigPath(env?: NodeJS.ProcessEnv): string;
|
|
20
|
+
export declare function readConfigFile(configPath: string): Promise<{
|
|
21
|
+
baseUrl?: string;
|
|
22
|
+
token?: string;
|
|
23
|
+
} | null>;
|
|
24
|
+
export declare function resolveConfig(flags: CliFlags, env?: NodeJS.ProcessEnv, configPath?: string): Promise<ResolvedConfig>;
|
|
25
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,QAAQ,GAAG;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;CACjB,CAAA;AAID,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAI1E;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAY7G;AAeD,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CASvI"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import fs from 'node:fs/promises';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { RmaticConfigError } from '@vforsh/rmatic-client';
|
|
5
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
6
|
+
export function getConfigPath(env = process.env) {
|
|
7
|
+
const xdgConfig = env.XDG_CONFIG_HOME;
|
|
8
|
+
const baseDir = xdgConfig ? xdgConfig : path.join(os.homedir(), '.config');
|
|
9
|
+
return path.join(baseDir, 'rmatic', 'config.json');
|
|
10
|
+
}
|
|
11
|
+
export async function readConfigFile(configPath) {
|
|
12
|
+
try {
|
|
13
|
+
const raw = await fs.readFile(configPath, 'utf8');
|
|
14
|
+
const parsed = JSON.parse(raw);
|
|
15
|
+
return parsed;
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
if (error.code === 'ENOENT') {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
throw new RmaticConfigError(`Failed to read config file at ${configPath}.`, { cause: error });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function parseTimeout(timeout) {
|
|
25
|
+
if (timeout === undefined) {
|
|
26
|
+
return DEFAULT_TIMEOUT_MS;
|
|
27
|
+
}
|
|
28
|
+
const value = typeof timeout === 'string' ? Number(timeout) : timeout;
|
|
29
|
+
if (!Number.isFinite(value) || value <= 0) {
|
|
30
|
+
throw new RmaticConfigError(`Invalid timeout value: ${timeout}`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
export async function resolveConfig(flags, env = process.env, configPath) {
|
|
35
|
+
const configFilePath = configPath ?? getConfigPath(env);
|
|
36
|
+
const fileConfig = await readConfigFile(configFilePath);
|
|
37
|
+
return {
|
|
38
|
+
baseUrl: flags.baseUrl ?? env.RMATIC_BASE_URL ?? fileConfig?.baseUrl,
|
|
39
|
+
token: flags.token ?? env.RMATIC_TOKEN ?? fileConfig?.token,
|
|
40
|
+
timeoutMs: parseTimeout(flags.timeout),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAsBzD,MAAM,kBAAkB,GAAG,MAAM,CAAA;AAEjC,MAAM,UAAU,aAAa,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAA;IACrC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;IAC1E,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAAkB;IACtD,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyC,CAAA;QACtE,OAAO,MAAM,CAAA;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,MAAM,IAAI,iBAAiB,CAAC,iCAAiC,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC9F,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,OAAyB;IAC9C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAA;IAC1B,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,iBAAiB,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;IACjE,CAAC;IAED,OAAO,KAAK,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAe,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAE,UAAmB;IAC7G,MAAM,cAAc,GAAG,UAAU,IAAI,aAAa,CAAC,GAAG,CAAC,CAAA;IACvD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,CAAA;IAEvD,OAAO;QACN,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,eAAe,IAAI,UAAU,EAAE,OAAO;QACpE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC,YAAY,IAAI,UAAU,EAAE,KAAK;QAC3D,SAAS,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC;KACtC,CAAA;AACF,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { cac } from 'cac';
|
|
3
|
+
import prompts from 'prompts';
|
|
4
|
+
import { createClient, RmaticConfigError, RmaticError, RmaticHttpError, RmaticNetworkError, } from '@vforsh/rmatic-client';
|
|
5
|
+
import { resolveConfig } from './config.js';
|
|
6
|
+
import { resolveOutputMode, writeError, writeJson, writeLines, writeText } from './output.js';
|
|
7
|
+
const cli = cac('rmatic');
|
|
8
|
+
cli
|
|
9
|
+
.option('--base-url <url>', 'Release-o-matic base URL (overrides RMATIC_BASE_URL)')
|
|
10
|
+
.option('--token <token>', 'Bearer token (prefer RMATIC_TOKEN or config file)')
|
|
11
|
+
.option('--json', 'Output JSON to stdout')
|
|
12
|
+
.option('--plain', 'Plain, line-oriented output')
|
|
13
|
+
.option('-q, --quiet', 'Reduce non-essential output')
|
|
14
|
+
.option('-v, --verbose', 'Verbose logging (stderr)')
|
|
15
|
+
.option('--debug', 'Include stack traces in errors')
|
|
16
|
+
.option('--no-color', 'Disable color output')
|
|
17
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds', { default: undefined })
|
|
18
|
+
.option('--no-input', 'Disable prompts')
|
|
19
|
+
.option('-f, --force', 'Skip confirmations for risky actions')
|
|
20
|
+
.help();
|
|
21
|
+
cli
|
|
22
|
+
.command('health', 'Check service health')
|
|
23
|
+
.example('rmatic --base-url https://… --token $RMATIC_TOKEN health')
|
|
24
|
+
.action(async (_, flags) => {
|
|
25
|
+
await withClient(flags, async (client, outputMode) => {
|
|
26
|
+
const data = await client.health();
|
|
27
|
+
if (outputMode === 'json') {
|
|
28
|
+
writeJson(data);
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
if (outputMode === 'plain') {
|
|
32
|
+
writeText(data.status ?? 'ok');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const lines = [`Status: ${data.status}`];
|
|
36
|
+
if (data.buildVersion) {
|
|
37
|
+
lines.push(`Build: ${data.buildVersion}`);
|
|
38
|
+
}
|
|
39
|
+
if (data.deployedAt) {
|
|
40
|
+
lines.push(`Deployed: ${data.deployedAt}`);
|
|
41
|
+
}
|
|
42
|
+
writeLines(lines);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
cli
|
|
46
|
+
.command('publish <game> <platform> [buildKey]', 'Publish a build')
|
|
47
|
+
.example('rmatic publish papa-cherry-2 vk master-21')
|
|
48
|
+
.action(async (game, platform, buildKey, flags) => {
|
|
49
|
+
await withClient(flags, async (client, outputMode) => {
|
|
50
|
+
const data = await client.publish({ game, platform, buildKey });
|
|
51
|
+
if (outputMode === 'json') {
|
|
52
|
+
writeJson(data);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (outputMode === 'plain') {
|
|
56
|
+
writeText(data.release.key);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
writeLines([
|
|
60
|
+
`Published ${data.release.key} for ${game}/${platform}.`,
|
|
61
|
+
`Path: ${data.path}`,
|
|
62
|
+
]);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
cli
|
|
66
|
+
.command('rollback <game> <platform> [buildKey]', 'Rollback to a previous build')
|
|
67
|
+
.example('rmatic rollback papa-cherry-2 vk --force')
|
|
68
|
+
.action(async (game, platform, buildKey, flags) => {
|
|
69
|
+
await withClient(flags, async (client, outputMode, cliFlags) => {
|
|
70
|
+
const target = await resolveRollbackTarget(client, game, platform, buildKey);
|
|
71
|
+
const isInteractive = Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
72
|
+
const shouldConfirm = !cliFlags.force && !cliFlags.noInput && isInteractive;
|
|
73
|
+
if (shouldConfirm) {
|
|
74
|
+
const confirmed = await promptRollbackConfirmation(target);
|
|
75
|
+
if (!confirmed) {
|
|
76
|
+
writeError('Rollback cancelled.');
|
|
77
|
+
process.exitCode = 1;
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else if (!cliFlags.force) {
|
|
82
|
+
throw new RmaticConfigError('Rollback requires confirmation. Pass --force to proceed non-interactively.');
|
|
83
|
+
}
|
|
84
|
+
const data = await client.rollback({ game, platform, buildKey: target.key });
|
|
85
|
+
if (outputMode === 'json') {
|
|
86
|
+
writeJson(data);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (outputMode === 'plain') {
|
|
90
|
+
writeText(data.release.key);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
writeLines([
|
|
94
|
+
`Rolled back to ${data.release.key} for ${game}/${platform}.`,
|
|
95
|
+
`Path: ${data.path}`,
|
|
96
|
+
]);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
cli
|
|
100
|
+
.command('releases list <game> <platform>', 'List releases')
|
|
101
|
+
.example('rmatic releases list papa-cherry-2 vk --plain')
|
|
102
|
+
.action(async (game, platform, flags) => {
|
|
103
|
+
await withClient(flags, async (client, outputMode) => {
|
|
104
|
+
const data = await client.releases.list({ game, platform });
|
|
105
|
+
if (outputMode === 'json') {
|
|
106
|
+
writeJson(data);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
if (outputMode === 'plain') {
|
|
110
|
+
writeLines(data.builds.map((item) => item.key));
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const lines = [`Current: ${data.current ?? 'none'}`];
|
|
114
|
+
for (const release of data.builds) {
|
|
115
|
+
lines.push(`- ${release.key} (${release.releasedAt})`);
|
|
116
|
+
}
|
|
117
|
+
writeLines(lines);
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
cli
|
|
121
|
+
.command('releases current <game> <platform>', 'Show the current release')
|
|
122
|
+
.action(async (game, platform, flags) => {
|
|
123
|
+
await withClient(flags, async (client, outputMode) => {
|
|
124
|
+
const data = await client.releases.current({ game, platform });
|
|
125
|
+
if (outputMode === 'json') {
|
|
126
|
+
writeJson(data);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
if (outputMode === 'plain') {
|
|
130
|
+
writeText(data.key);
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
writeLines([
|
|
134
|
+
`Current: ${data.key}`,
|
|
135
|
+
`Released: ${data.releasedAt}`,
|
|
136
|
+
`Built: ${data.builtAt}`,
|
|
137
|
+
]);
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
cli
|
|
141
|
+
.command('releases get <game> <platform> <buildKey>', 'Show a release by build key')
|
|
142
|
+
.action(async (game, platform, buildKey, flags) => {
|
|
143
|
+
await withClient(flags, async (client, outputMode) => {
|
|
144
|
+
const data = await client.releases.get({ game, platform, buildKey });
|
|
145
|
+
if (outputMode === 'json') {
|
|
146
|
+
writeJson(data);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (outputMode === 'plain') {
|
|
150
|
+
writeText(data.key);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
writeLines([
|
|
154
|
+
`Release: ${data.key}`,
|
|
155
|
+
`Current: ${data.isCurrent ? 'yes' : 'no'}`,
|
|
156
|
+
`Released: ${data.releasedAt}`,
|
|
157
|
+
`Files: ${data.filesList.length}`,
|
|
158
|
+
]);
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
cli
|
|
162
|
+
.command('help [command]', 'Show help for a command')
|
|
163
|
+
.action((command) => {
|
|
164
|
+
if (command) {
|
|
165
|
+
const target = cli.commands.find((cmd) => cmd.name === command);
|
|
166
|
+
if (target && typeof target.outputHelp === 'function') {
|
|
167
|
+
;
|
|
168
|
+
target.outputHelp();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
cli.outputHelp();
|
|
173
|
+
});
|
|
174
|
+
cli.on('command:*', () => {
|
|
175
|
+
writeError('Unknown command. Use --help to see available commands.');
|
|
176
|
+
process.exitCode = 2;
|
|
177
|
+
});
|
|
178
|
+
cli.parse();
|
|
179
|
+
async function withClient(flags, handler) {
|
|
180
|
+
let outputMode;
|
|
181
|
+
try {
|
|
182
|
+
outputMode = resolveOutputMode(flags);
|
|
183
|
+
}
|
|
184
|
+
catch (error) {
|
|
185
|
+
handleError(new RmaticConfigError(error.message, { cause: error }), flags);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
let config;
|
|
189
|
+
try {
|
|
190
|
+
config = await resolveConfig(flags);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
handleError(error, flags);
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (!config.baseUrl) {
|
|
197
|
+
throw new RmaticConfigError('Base URL is required. Use --base-url, RMATIC_BASE_URL, or a config file to set it.');
|
|
198
|
+
}
|
|
199
|
+
const client = createClient({
|
|
200
|
+
baseUrl: config.baseUrl,
|
|
201
|
+
token: config.token,
|
|
202
|
+
timeoutMs: config.timeoutMs,
|
|
203
|
+
});
|
|
204
|
+
try {
|
|
205
|
+
await handler(client, outputMode, flags);
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
handleError(error, flags);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function handleError(error, flags) {
|
|
212
|
+
if (error instanceof RmaticConfigError) {
|
|
213
|
+
writeError(error.message);
|
|
214
|
+
if (flags.debug && error.cause) {
|
|
215
|
+
writeError(String(error.cause));
|
|
216
|
+
}
|
|
217
|
+
process.exitCode = 2;
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
if (error instanceof RmaticHttpError) {
|
|
221
|
+
writeError(error.message);
|
|
222
|
+
if (flags.debug && error.cause) {
|
|
223
|
+
writeError(String(error.cause));
|
|
224
|
+
}
|
|
225
|
+
switch (error.status) {
|
|
226
|
+
case 401:
|
|
227
|
+
case 403:
|
|
228
|
+
process.exitCode = 3;
|
|
229
|
+
return;
|
|
230
|
+
case 404:
|
|
231
|
+
process.exitCode = 4;
|
|
232
|
+
return;
|
|
233
|
+
case 400:
|
|
234
|
+
case 409:
|
|
235
|
+
process.exitCode = 5;
|
|
236
|
+
return;
|
|
237
|
+
default:
|
|
238
|
+
process.exitCode = 1;
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (error instanceof RmaticNetworkError) {
|
|
243
|
+
writeError(error.message);
|
|
244
|
+
if (flags.debug && error.cause) {
|
|
245
|
+
writeError(String(error.cause));
|
|
246
|
+
}
|
|
247
|
+
process.exitCode = 6;
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
if (error instanceof RmaticError) {
|
|
251
|
+
writeError(error.message);
|
|
252
|
+
if (flags.debug && error.cause) {
|
|
253
|
+
writeError(String(error.cause));
|
|
254
|
+
}
|
|
255
|
+
process.exitCode = 1;
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
writeError('Unexpected error occurred.');
|
|
259
|
+
if (flags.debug) {
|
|
260
|
+
writeError(String(error));
|
|
261
|
+
}
|
|
262
|
+
process.exitCode = 1;
|
|
263
|
+
}
|
|
264
|
+
async function resolveRollbackTarget(client, game, platform, buildKey) {
|
|
265
|
+
const current = await client.releases.current({ game, platform });
|
|
266
|
+
if (buildKey) {
|
|
267
|
+
return { key: buildKey, current };
|
|
268
|
+
}
|
|
269
|
+
const list = await client.releases.list({ game, platform });
|
|
270
|
+
const currentIndex = list.builds.findIndex((item) => item.key === list.current);
|
|
271
|
+
const previous = currentIndex >= 0 ? list.builds[currentIndex + 1] : undefined;
|
|
272
|
+
if (!previous) {
|
|
273
|
+
throw new RmaticError('No previous release found to rollback to.');
|
|
274
|
+
}
|
|
275
|
+
return { key: previous.key, current };
|
|
276
|
+
}
|
|
277
|
+
async function promptRollbackConfirmation(target) {
|
|
278
|
+
const currentLabel = target.current?.key ?? 'unknown';
|
|
279
|
+
const result = await prompts({
|
|
280
|
+
type: 'confirm',
|
|
281
|
+
name: 'confirm',
|
|
282
|
+
message: `Rollback release?\nCurrent: ${currentLabel}\nTarget: ${target.key}`,
|
|
283
|
+
initial: false,
|
|
284
|
+
});
|
|
285
|
+
return Boolean(result.confirm);
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type OutputMode = 'human' | 'plain' | 'json';
|
|
2
|
+
export declare function resolveOutputMode(flags: {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
plain?: boolean;
|
|
5
|
+
}): OutputMode;
|
|
6
|
+
export declare function writeJson(value: unknown): void;
|
|
7
|
+
export declare function writeLines(lines: string[]): void;
|
|
8
|
+
export declare function writeText(text: string): void;
|
|
9
|
+
export declare function writeError(message: string): void;
|
|
10
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AAEnD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAcxF;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAEhD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEhD"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export function resolveOutputMode(flags) {
|
|
2
|
+
if (flags.json && flags.plain) {
|
|
3
|
+
throw new Error('Cannot use --json and --plain together.');
|
|
4
|
+
}
|
|
5
|
+
if (flags.json) {
|
|
6
|
+
return 'json';
|
|
7
|
+
}
|
|
8
|
+
if (flags.plain) {
|
|
9
|
+
return 'plain';
|
|
10
|
+
}
|
|
11
|
+
return 'human';
|
|
12
|
+
}
|
|
13
|
+
export function writeJson(value) {
|
|
14
|
+
process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
15
|
+
}
|
|
16
|
+
export function writeLines(lines) {
|
|
17
|
+
process.stdout.write(`${lines.join('\n')}\n`);
|
|
18
|
+
}
|
|
19
|
+
export function writeText(text) {
|
|
20
|
+
process.stdout.write(`${text}\n`);
|
|
21
|
+
}
|
|
22
|
+
export function writeError(message) {
|
|
23
|
+
process.stderr.write(`${message}\n`);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,KAA0C;IAC3E,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,MAAM,CAAA;IACd,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,OAAO,CAAA;IACf,CAAC;IAED,OAAO,OAAO,CAAA;AACf,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAe;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAY;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACrC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vforsh/rmatic",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
|
-
"rmatic": "
|
|
6
|
+
"rmatic": "dist/index.js"
|
|
7
7
|
},
|
|
8
8
|
"exports": {
|
|
9
9
|
".": "./dist/index.js"
|
|
10
10
|
},
|
|
11
11
|
"files": ["dist"],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"build": "tsc -
|
|
13
|
+
"build": "tsc -b tsconfig.json",
|
|
14
|
+
"prepublishOnly": "npm run build"
|
|
14
15
|
},
|
|
15
16
|
"dependencies": {
|
|
16
|
-
"@vforsh/rmatic-client": "0.1.
|
|
17
|
+
"@vforsh/rmatic-client": "0.1.1",
|
|
17
18
|
"cac": "^6.7.14",
|
|
18
19
|
"prompts": "^2.4.2"
|
|
19
20
|
},
|