@tamagui/cli 2.7.6 → 3.0.0-beta.637.1

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/cli.cjs CHANGED
@@ -1,3 +1,4 @@
1
+
1
2
  var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -5,370 +6,362 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
5
6
  var __getProtoOf = Object.getPrototypeOf;
6
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
8
  var __copyProps = (to, from, except, desc) => {
8
- if (from && typeof from === "object" || typeof from === "function") {
9
- for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
10
- get: () => from[key],
11
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
12
- });
13
- }
14
- return to;
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
11
+ get: () => from[key],
12
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
13
+ });
14
+ }
15
+ return to;
15
16
  };
16
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
17
- // If the importer is in node compatibility mode or this is not an ESM
18
- // file that has been converted to a CommonJS file using a Babel-
19
- // compatible transform (i.e. "__esModule" has not been set), then set
20
- // "default" to the CommonJS "module.exports" for node compatibility.
21
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
22
- value: mod,
23
- enumerable: true
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
18
+ value: mod,
19
+ enumerable: true
24
20
  }) : target, mod));
25
21
  var import_arg = __toESM(require("arg"));
26
22
  var import_chalk = __toESM(require("chalk"));
27
23
  var import_utils = require("./utils.cjs");
28
- ["exit", "SIGINT"].forEach(_ => {
29
- process.on(_, () => {
30
- (0, import_utils.disposeAll)();
31
- process.exit();
32
- });
33
- });
24
+ process.on("exit", import_utils.disposeAll);
34
25
  const COMMAND_MAP = {
35
- check: {
36
- description: `Checks for inconsistent versions, duplicate installs, lockfile issues, and missing config.`,
37
- shorthands: [],
38
- flags: {
39
- "--help": Boolean,
40
- "--debug": Boolean,
41
- "--verbose": Boolean
42
- },
43
- async run() {
44
- const {
45
- _,
46
- ...flags2
47
- } = (0, import_arg.default)(this.flags);
48
- const options = await (0, import_utils.getOptions)({
49
- debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false
50
- });
51
- const {
52
- checkDeps
53
- } = require("@tamagui/static/checkDeps");
54
- await checkDeps(options.paths.root);
55
- }
56
- },
57
- generate: {
58
- description: `Builds your entire tamagui configuration and outputs any CSS.`,
59
- shorthands: [],
60
- flags: {
61
- "--help": Boolean,
62
- "--debug": Boolean,
63
- "--verbose": Boolean
64
- },
65
- async run() {
66
- const {
67
- _,
68
- ...flags2
69
- } = (0, import_arg.default)(this.flags);
70
- const options = await (0, import_utils.getOptions)({
71
- debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false,
72
- loadTamaguiOptions: true
73
- });
74
- const {
75
- loadTamagui
76
- } = require("@tamagui/static/loadTamagui");
77
- process.env.TAMAGUI_KEEP_THEMES = "1";
78
- await loadTamagui({
79
- ...options.tamaguiOptions,
80
- platform: "web"
81
- });
82
- const {
83
- generatePrompt
84
- } = require("./generate-prompt.cjs");
85
- const {
86
- join
87
- } = require("node:path");
88
- await generatePrompt({
89
- ...options,
90
- output: join(options.paths.dotDir, "prompt.md")
91
- });
92
- }
93
- },
94
- "generate-css": {
95
- shorthands: [],
96
- description: `Generate the tamagui.generated.css file from your config`,
97
- flags: {
98
- "--help": Boolean,
99
- "--debug": Boolean,
100
- "--verbose": Boolean,
101
- "--output": String
102
- },
103
- async run() {
104
- const {
105
- _,
106
- ...flags2
107
- } = (0, import_arg.default)(this.flags);
108
- const options = await (0, import_utils.getOptions)({
109
- debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false,
110
- loadTamaguiOptions: true
111
- });
112
- const outputPath = flags2["--output"] || options.tamaguiOptions.outputCSS || "./tamagui.generated.css";
113
- const {
114
- loadTamagui
115
- } = require("@tamagui/static/loadTamagui");
116
- process.env.TAMAGUI_KEEP_THEMES = "1";
117
- await loadTamagui({
118
- ...options.tamaguiOptions,
119
- outputCSS: outputPath,
120
- platform: "web"
121
- });
122
- console.info(`Generated CSS to ${outputPath}`);
123
- }
124
- },
125
- "generate-themes": {
126
- shorthands: [],
127
- description: `Use to pre-build your themes`,
128
- flags: {
129
- "--help": Boolean,
130
- "--debug": Boolean,
131
- "--verbose": Boolean
132
- },
133
- async run() {
134
- const {
135
- _,
136
- ...flags2
137
- } = (0, import_arg.default)(this.flags);
138
- const options = await (0, import_utils.getOptions)({
139
- debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false
140
- });
141
- const [_cmd, inPath, outPath] = _;
142
- if (!inPath || !outPath) {
143
- throw new Error(`Must supply both input and output paths, missing one (inPath: ${inPath}, outPath: ${outPath})`);
144
- }
145
- const {
146
- generateThemes,
147
- writeGeneratedThemes
148
- } = require("@tamagui/generate-themes");
149
- try {
150
- const generated = await generateThemes(inPath);
151
- if (generated) {
152
- await writeGeneratedThemes(options.paths.dotDir, outPath, generated);
153
- console.info(`Successfully generated themes to ${outPath}`);
154
- } else {
155
- process.exit(1);
156
- }
157
- } catch (err) {
158
- console.error(`Error generating themes: ${err}`);
159
- return;
160
- }
161
- }
162
- },
163
- add: {
164
- shorthands: [],
165
- description: `Use to add fonts and icons to your monorepo.`,
166
- flags: {
167
- "--help": Boolean,
168
- "--debug": Boolean,
169
- "--verbose": Boolean
170
- },
171
- async run() {
172
- const {
173
- _,
174
- ...flags2
175
- } = (0, import_arg.default)(this.flags);
176
- const {
177
- installGeneratedPackage
178
- } = require("./add.cjs");
179
- const [cmd, type, path] = _;
180
- await installGeneratedPackage(type, path);
181
- }
182
- },
183
- build: {
184
- shorthands: ["b"],
185
- description: `Use to pre-build a Tamagui component directory. Use -- to run a command after optimization, then auto-restore files.`,
186
- flags: {
187
- "--help": Boolean,
188
- "--debug": Boolean,
189
- "--verbose": Boolean,
190
- "--dry-run": Boolean,
191
- "--target": String,
192
- "--include": String,
193
- "--exclude": String,
194
- "--output": String,
195
- "--output-around": Boolean,
196
- "--expect-optimizations": Number
197
- },
198
- async run() {
199
- const argvSeparatorIdx = process.argv.indexOf("--");
200
- let runCommand;
201
- if (argvSeparatorIdx !== -1) {
202
- runCommand = process.argv.slice(argvSeparatorIdx + 1);
203
- const argsBeforeSeparator = process.argv.slice(0, argvSeparatorIdx);
204
- process.argv = argsBeforeSeparator;
205
- }
206
- const {
207
- _,
208
- ...flags2
209
- } = (0, import_arg.default)(this.flags);
210
- const [_command, dir] = _;
211
- const dryRun = flags2["--dry-run"] || false;
212
- const debug = flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false;
213
- const {
214
- build
215
- } = require("./build.cjs");
216
- const options = await (0, import_utils.getOptions)({
217
- debug
218
- });
219
- await build({
220
- ...options,
221
- dir,
222
- include: flags2["--include"],
223
- target: flags2["--target"] || "both",
224
- exclude: flags2["--exclude"],
225
- output: flags2["--output"],
226
- outputAround: flags2["--output-around"],
227
- expectOptimizations: flags2["--expect-optimizations"],
228
- runCommand,
229
- dryRun
230
- });
231
- }
232
- },
233
- upgrade: {
234
- shorthands: ["up"],
235
- description: `Upgrade all tamagui packages in your workspace to the latest version`,
236
- flags: {
237
- "--help": Boolean,
238
- "--debug": Boolean,
239
- "--from": String,
240
- "--to": String,
241
- "--changelog-only": Boolean,
242
- "--dry-run": Boolean
243
- },
244
- async run() {
245
- const {
246
- _,
247
- ...flags2
248
- } = (0, import_arg.default)(this.flags);
249
- const {
250
- upgrade
251
- } = require("./upgrade.cjs");
252
- await upgrade({
253
- from: flags2["--from"],
254
- to: flags2["--to"],
255
- changelogOnly: flags2["--changelog-only"],
256
- dryRun: flags2["--dry-run"],
257
- debug: flags2["--debug"]
258
- });
259
- }
260
- },
261
- "update-template": {
262
- shorthands: ["ut"],
263
- description: `Used to update your git repo with the source template. (e.g. Takeout)`,
264
- flags: {
265
- "--help": Boolean,
266
- "--template-repo": String,
267
- "--ignored-patterns": String
268
- },
269
- async run() {
270
- const {
271
- _,
272
- ...flags2
273
- } = (0, import_arg.default)(this.flags);
274
- const {
275
- updateTemplate
276
- } = require("./update-template.cjs");
277
- if (!flags2["--template-repo"]) {
278
- throw new Error("--template-repo is required");
279
- }
280
- await updateTemplate(flags2["--template-repo"], flags2["--ignored-patterns"]?.split(" "));
281
- }
282
- },
283
- "generate-prompt": {
284
- shorthands: [],
285
- description: `Generate an LLM-friendly markdown file from your Tamagui config`,
286
- flags: {
287
- "--help": Boolean,
288
- "--debug": Boolean,
289
- "--output": String
290
- },
291
- async run() {
292
- const {
293
- _,
294
- ...flags2
295
- } = (0, import_arg.default)(this.flags);
296
- const {
297
- generatePrompt
298
- } = require("./generate-prompt.cjs");
299
- const options = await (0, import_utils.getOptions)({
300
- debug: flags2["--debug"] ? true : false,
301
- loadTamaguiOptions: true
302
- });
303
- await generatePrompt({
304
- ...options,
305
- output: flags2["--output"]
306
- });
307
- }
308
- }
26
+ check: {
27
+ description: `Checks flat style values, inconsistent versions, duplicate installs, lockfile issues, and missing config.`,
28
+ shorthands: [],
29
+ flags: {
30
+ "--help": Boolean,
31
+ "--debug": Boolean,
32
+ "--verbose": Boolean,
33
+ "--styles-only": Boolean,
34
+ "--deps-only": Boolean
35
+ },
36
+ async run() {
37
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
38
+ const options = await (0, import_utils.getOptions)({ debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false });
39
+ if (!flags2["--styles-only"]) {
40
+ const { checkDeps } = require("@tamagui/static/checkDeps");
41
+ await checkDeps(options.paths.root);
42
+ }
43
+ if (flags2["--deps-only"]) return;
44
+ const { checkStyleFiles, formatCheckResults, MissingConfigArtifactError } = require("@tamagui/language-service/check");
45
+ try {
46
+ const result = checkStyleFiles({
47
+ root: options.paths.root,
48
+ configPath: options.paths.conf
49
+ });
50
+ console.info(formatCheckResults(result));
51
+ if (result.diagnosticCount > 0) process.exitCode = 1;
52
+ } catch (error) {
53
+ if (error instanceof MissingConfigArtifactError) {
54
+ console.warn(import_chalk.default.yellow(`skipping flat value check: ${error.message}`));
55
+ return;
56
+ }
57
+ throw error;
58
+ }
59
+ }
60
+ },
61
+ generate: {
62
+ description: `Builds your entire tamagui configuration and outputs any CSS.`,
63
+ shorthands: [],
64
+ flags: {
65
+ "--help": Boolean,
66
+ "--debug": Boolean,
67
+ "--verbose": Boolean
68
+ },
69
+ async run() {
70
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
71
+ const options = await (0, import_utils.getOptions)({
72
+ debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false,
73
+ loadTamaguiOptions: true
74
+ });
75
+ const { loadTamagui } = require("@tamagui/static/loadTamagui");
76
+ process.env.TAMAGUI_KEEP_THEMES = "1";
77
+ await loadTamagui({
78
+ ...options.tamaguiOptions,
79
+ platform: "web"
80
+ });
81
+ const { generatePrompt } = require("./generate-prompt.cjs");
82
+ const { join } = require("node:path");
83
+ await generatePrompt({
84
+ ...options,
85
+ output: join(options.paths.dotDir, "prompt.md")
86
+ });
87
+ }
88
+ },
89
+ "generate-css": {
90
+ shorthands: [],
91
+ description: `Generate the tamagui.generated.css file from your config`,
92
+ flags: {
93
+ "--help": Boolean,
94
+ "--debug": Boolean,
95
+ "--verbose": Boolean,
96
+ "--output": String
97
+ },
98
+ async run() {
99
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
100
+ const options = await (0, import_utils.getOptions)({
101
+ debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false,
102
+ loadTamaguiOptions: true
103
+ });
104
+ const outputPath = flags2["--output"] || options.tamaguiOptions.outputCSS || "./tamagui.generated.css";
105
+ const { loadTamagui } = require("@tamagui/static/loadTamagui");
106
+ process.env.TAMAGUI_KEEP_THEMES = "1";
107
+ await loadTamagui({
108
+ ...options.tamaguiOptions,
109
+ outputCSS: outputPath,
110
+ platform: "web"
111
+ });
112
+ console.info(`Generated CSS to ${outputPath}`);
113
+ }
114
+ },
115
+ "generate-themes": {
116
+ shorthands: [],
117
+ description: `Use to pre-build your themes`,
118
+ flags: {
119
+ "--help": Boolean,
120
+ "--debug": Boolean,
121
+ "--verbose": Boolean
122
+ },
123
+ async run() {
124
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
125
+ const options = await (0, import_utils.getOptions)({ debug: flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false });
126
+ const [_cmd, inPath, outPath] = _;
127
+ if (!inPath || !outPath) {
128
+ throw new Error(`Must supply both input and output paths, missing one (inPath: ${inPath}, outPath: ${outPath})`);
129
+ }
130
+ const { generateThemes, writeGeneratedThemes } = require("@tamagui/generate-themes");
131
+ try {
132
+ const generated = await generateThemes(inPath);
133
+ if (generated) {
134
+ await writeGeneratedThemes(options.paths.dotDir, outPath, generated);
135
+ console.info(`Successfully generated themes to ${outPath}`);
136
+ } else {
137
+ process.exit(1);
138
+ }
139
+ } catch (err) {
140
+ console.error(`Error generating themes: ${err}`);
141
+ return;
142
+ }
143
+ }
144
+ },
145
+ add: {
146
+ shorthands: [],
147
+ description: `Use to add fonts and icons to your monorepo.`,
148
+ flags: {
149
+ "--help": Boolean,
150
+ "--debug": Boolean,
151
+ "--verbose": Boolean
152
+ },
153
+ async run() {
154
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
155
+ const { installGeneratedPackage } = require("./add.cjs");
156
+ const [cmd, type, path] = _;
157
+ await installGeneratedPackage(type, path);
158
+ }
159
+ },
160
+ build: {
161
+ shorthands: ["b"],
162
+ description: `Use to pre-build a Tamagui component directory. Use -- to run a command after optimization, then auto-restore files.`,
163
+ flags: {
164
+ "--help": Boolean,
165
+ "--debug": Boolean,
166
+ "--verbose": Boolean,
167
+ "--dry-run": Boolean,
168
+ "--target": String,
169
+ "--include": String,
170
+ "--exclude": String,
171
+ "--output": String,
172
+ "--output-around": Boolean,
173
+ "--expect-optimizations": Number
174
+ },
175
+ async run() {
176
+ const argvSeparatorIdx = process.argv.indexOf("--");
177
+ let runCommand;
178
+ if (argvSeparatorIdx !== -1) {
179
+ runCommand = process.argv.slice(argvSeparatorIdx + 1);
180
+ const argsBeforeSeparator = process.argv.slice(0, argvSeparatorIdx);
181
+ process.argv = argsBeforeSeparator;
182
+ }
183
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
184
+ const [_command, dir] = _;
185
+ const dryRun = flags2["--dry-run"] || false;
186
+ const debug = flags2["--debug"] ? flags2["--verbose"] ? "verbose" : true : false;
187
+ const { build } = require("./build.cjs");
188
+ const options = await (0, import_utils.getOptions)({ debug });
189
+ await build({
190
+ ...options,
191
+ dir,
192
+ include: flags2["--include"],
193
+ target: flags2["--target"] || "both",
194
+ exclude: flags2["--exclude"],
195
+ output: flags2["--output"],
196
+ outputAround: flags2["--output-around"],
197
+ expectOptimizations: flags2["--expect-optimizations"],
198
+ runCommand,
199
+ dryRun
200
+ });
201
+ }
202
+ },
203
+ upgrade: {
204
+ shorthands: ["up"],
205
+ description: `Upgrade all tamagui packages in your workspace to the latest version`,
206
+ flags: {
207
+ "--help": Boolean,
208
+ "--debug": Boolean,
209
+ "--from": String,
210
+ "--to": String,
211
+ "--changelog-only": Boolean,
212
+ "--dry-run": Boolean
213
+ },
214
+ async run() {
215
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
216
+ const { upgrade } = require("./upgrade.cjs");
217
+ await upgrade({
218
+ from: flags2["--from"],
219
+ to: flags2["--to"],
220
+ changelogOnly: flags2["--changelog-only"],
221
+ dryRun: flags2["--dry-run"],
222
+ debug: flags2["--debug"]
223
+ });
224
+ }
225
+ },
226
+ migrate: {
227
+ shorthands: [],
228
+ description: `Print an AI-agent prompt for migrating a Tamagui app to v3`,
229
+ usage: `$ tamagui migrate --from v2
230
+ $ tamagui migrate --from v1`,
231
+ flags: {
232
+ "--help": Boolean,
233
+ "--from": String
234
+ },
235
+ async run() {
236
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
237
+ const [_cmd, fromArg] = _;
238
+ const { printMigrationPrompt } = require("./migrate.cjs");
239
+ printMigrationPrompt({ from: flags2["--from"] || fromArg });
240
+ }
241
+ },
242
+ "to-tailwind": {
243
+ shorthands: [],
244
+ description: `Convert Tamagui JSX props in files or globs to Tailwind className syntax`,
245
+ flags: {
246
+ "--help": Boolean,
247
+ "--write": Boolean,
248
+ "--config": String,
249
+ "--use-default-config": Boolean,
250
+ "--rename-dom": Boolean
251
+ },
252
+ async run() {
253
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
254
+ const { toTailwind } = require("./to-tailwind.cjs");
255
+ const [_cmd, ...patterns] = _;
256
+ await toTailwind({
257
+ patterns,
258
+ write: flags2["--write"],
259
+ configPath: flags2["--config"],
260
+ useDefaultConfig: flags2["--use-default-config"],
261
+ renameDom: flags2["--rename-dom"]
262
+ });
263
+ }
264
+ },
265
+ "update-template": {
266
+ shorthands: ["ut"],
267
+ description: `Used to update your git repo with the source template. (e.g. Takeout)`,
268
+ flags: {
269
+ "--help": Boolean,
270
+ "--template-repo": String,
271
+ "--ignored-patterns": String
272
+ },
273
+ async run() {
274
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
275
+ const { updateTemplate } = require("./update-template.cjs");
276
+ if (!flags2["--template-repo"]) {
277
+ throw new Error("--template-repo is required");
278
+ }
279
+ await updateTemplate(flags2["--template-repo"], flags2["--ignored-patterns"]?.split(" "));
280
+ }
281
+ },
282
+ "generate-prompt": {
283
+ shorthands: [],
284
+ description: `Generate an LLM-friendly markdown file from your Tamagui config`,
285
+ flags: {
286
+ "--help": Boolean,
287
+ "--debug": Boolean,
288
+ "--output": String
289
+ },
290
+ async run() {
291
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
292
+ const { generatePrompt } = require("./generate-prompt.cjs");
293
+ const options = await (0, import_utils.getOptions)({
294
+ debug: flags2["--debug"] ? true : false,
295
+ loadTamaguiOptions: true
296
+ });
297
+ await generatePrompt({
298
+ ...options,
299
+ output: flags2["--output"]
300
+ });
301
+ }
302
+ }
309
303
  };
310
- const commandEntries = Object.keys(COMMAND_MAP).flatMap(command2 => {
311
- const definition2 = COMMAND_MAP[command2];
312
- const entries = [command2, ...definition2.shorthands].map(cmd => {
313
- return [cmd, definition2];
314
- });
315
- return entries;
304
+ const commandEntries = Object.keys(COMMAND_MAP).flatMap((command2) => {
305
+ const definition2 = COMMAND_MAP[command2];
306
+ const entries = [command2, ...definition2.shorthands].map((cmd) => {
307
+ return [cmd, definition2];
308
+ });
309
+ return entries;
316
310
  });
317
311
  const commands = Object.fromEntries(commandEntries);
318
- const {
319
- _: [command],
320
- ...flags
321
- } = (0, import_arg.default)({
322
- "--help": Boolean,
323
- "--version": Boolean
324
- }, {
325
- permissive: true
326
- });
312
+ const { _: [command], ...flags } = (0, import_arg.default)({
313
+ "--help": Boolean,
314
+ "--version": Boolean
315
+ }, { permissive: true });
327
316
  if (flags["--version"]) {
328
- console.info(require("../package.json").version);
329
- process.exit(0);
317
+ console.info(require("../package.json").version);
318
+ process.exit(0);
330
319
  }
331
320
  if (!command && flags["--help"]) {
332
- console.info(`$ tamagui
321
+ console.info(`$ tamagui
333
322
 
334
323
  commands:
335
324
 
336
- ${Object.keys(COMMAND_MAP).map(key => {
337
- return ` ${key}`;
338
- }).join("\n")}`);
339
- process.exit(0);
325
+ ${Object.keys(COMMAND_MAP).map((key) => {
326
+ return ` ${key}`;
327
+ }).join("\n")}`);
328
+ process.exit(0);
340
329
  }
341
330
  if (!(command in commands)) {
342
- console.error();
343
- console.warn(import_chalk.default.yellow(`Not a valid command: ${command}`));
344
- process.exit(1);
331
+ console.error();
332
+ console.warn(import_chalk.default.yellow(`Not a valid command: ${command}`));
333
+ process.exit(1);
345
334
  }
346
335
  const definition = commands[command];
347
336
  main();
348
337
  async function main() {
349
- if (flags["--help"]) {
350
- console.info(`
338
+ if (flags["--help"]) {
339
+ console.info(`
351
340
  $ tamagui ${command}: ${definition.description}
352
341
  `);
353
- console.info(`Flags: ${Object.entries(definition.flags).map(([k, v]) => `${k} (${v.name})`)}`);
354
- process.exit(0);
355
- }
356
- const {
357
- _,
358
- ...cmdFlags
359
- } = (0, import_arg.default)(definition.flags);
360
- if (cmdFlags["--help"]) {
361
- console.info(`$ tamagui ${_}
342
+ if ("usage" in definition && definition.usage) {
343
+ console.info(`Usage:
344
+ ${definition.usage}
345
+ `);
346
+ }
347
+ console.info(`Flags:
348
+ ${Object.entries(definition.flags).map(([k, v]) => ` ${k} (${v.name})`).join("\n")}`);
349
+ process.exit(0);
350
+ }
351
+ const { _, ...cmdFlags } = (0, import_arg.default)(definition.flags);
352
+ if (cmdFlags["--help"]) {
353
+ console.info(`$ tamagui ${_}
362
354
 
363
355
  Flags: ${JSON.stringify(cmdFlags, null, 2)}
364
356
 
365
357
  `);
366
- process.exit(0);
367
- }
368
- try {
369
- await definition.run();
370
- } catch (err) {
371
- console.error(`Error running command: ${err.message}`);
372
- }
373
- process.exit(0);
374
- }
358
+ process.exit(0);
359
+ }
360
+ try {
361
+ await definition.run();
362
+ } catch (err) {
363
+ console.error(`Error running command: ${err.message}`);
364
+ process.exit(1);
365
+ }
366
+ process.exit(process.exitCode ?? 0);
367
+ }