@tamagui/cli 2.7.7 → 3.0.0-beta.643.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,372 @@ 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
+ setup: {
227
+ shorthands: [],
228
+ description: `Print an AI-agent prompt for adding Tamagui to a project for the first time`,
229
+ usage: `$ tamagui setup`,
230
+ flags: { "--help": Boolean },
231
+ async run() {
232
+ const { printSetupPrompt } = require("./setup-prompt.cjs");
233
+ printSetupPrompt();
234
+ }
235
+ },
236
+ migrate: {
237
+ shorthands: [],
238
+ description: `Print an AI-agent prompt for migrating a Tamagui app to v3`,
239
+ usage: `$ tamagui migrate --from v2
240
+ $ tamagui migrate --from v1`,
241
+ flags: {
242
+ "--help": Boolean,
243
+ "--from": String
244
+ },
245
+ async run() {
246
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
247
+ const [_cmd, fromArg] = _;
248
+ const { printMigrationPrompt } = require("./migrate.cjs");
249
+ printMigrationPrompt({ from: flags2["--from"] || fromArg });
250
+ }
251
+ },
252
+ "to-tailwind": {
253
+ shorthands: [],
254
+ description: `Convert Tamagui JSX props in files or globs to Tailwind className syntax`,
255
+ flags: {
256
+ "--help": Boolean,
257
+ "--write": Boolean,
258
+ "--config": String,
259
+ "--use-default-config": Boolean,
260
+ "--rename-dom": Boolean
261
+ },
262
+ async run() {
263
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
264
+ const { toTailwind } = require("./to-tailwind.cjs");
265
+ const [_cmd, ...patterns] = _;
266
+ await toTailwind({
267
+ patterns,
268
+ write: flags2["--write"],
269
+ configPath: flags2["--config"],
270
+ useDefaultConfig: flags2["--use-default-config"],
271
+ renameDom: flags2["--rename-dom"]
272
+ });
273
+ }
274
+ },
275
+ "update-template": {
276
+ shorthands: ["ut"],
277
+ description: `Used to update your git repo with the source template. (e.g. Takeout)`,
278
+ flags: {
279
+ "--help": Boolean,
280
+ "--template-repo": String,
281
+ "--ignored-patterns": String
282
+ },
283
+ async run() {
284
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
285
+ const { updateTemplate } = require("./update-template.cjs");
286
+ if (!flags2["--template-repo"]) {
287
+ throw new Error("--template-repo is required");
288
+ }
289
+ await updateTemplate(flags2["--template-repo"], flags2["--ignored-patterns"]?.split(" "));
290
+ }
291
+ },
292
+ "generate-prompt": {
293
+ shorthands: [],
294
+ description: `Generate an LLM-friendly markdown file from your Tamagui config`,
295
+ flags: {
296
+ "--help": Boolean,
297
+ "--debug": Boolean,
298
+ "--output": String
299
+ },
300
+ async run() {
301
+ const { _, ...flags2 } = (0, import_arg.default)(this.flags);
302
+ const { generatePrompt } = require("./generate-prompt.cjs");
303
+ const options = await (0, import_utils.getOptions)({
304
+ debug: flags2["--debug"] ? true : false,
305
+ loadTamaguiOptions: true
306
+ });
307
+ await generatePrompt({
308
+ ...options,
309
+ output: flags2["--output"]
310
+ });
311
+ }
312
+ }
309
313
  };
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;
314
+ const commandEntries = Object.keys(COMMAND_MAP).flatMap((command2) => {
315
+ const definition2 = COMMAND_MAP[command2];
316
+ const entries = [command2, ...definition2.shorthands].map((cmd) => {
317
+ return [cmd, definition2];
318
+ });
319
+ return entries;
316
320
  });
317
321
  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
- });
322
+ const { _: [command], ...flags } = (0, import_arg.default)({
323
+ "--help": Boolean,
324
+ "--version": Boolean
325
+ }, { permissive: true });
327
326
  if (flags["--version"]) {
328
- console.info(require("../package.json").version);
329
- process.exit(0);
327
+ console.info(require("../package.json").version);
328
+ process.exit(0);
330
329
  }
331
330
  if (!command && flags["--help"]) {
332
- console.info(`$ tamagui
331
+ console.info(`$ tamagui
333
332
 
334
333
  commands:
335
334
 
336
- ${Object.keys(COMMAND_MAP).map(key => {
337
- return ` ${key}`;
338
- }).join("\n")}`);
339
- process.exit(0);
335
+ ${Object.keys(COMMAND_MAP).map((key) => {
336
+ return ` ${key}`;
337
+ }).join("\n")}`);
338
+ process.exit(0);
340
339
  }
341
340
  if (!(command in commands)) {
342
- console.error();
343
- console.warn(import_chalk.default.yellow(`Not a valid command: ${command}`));
344
- process.exit(1);
341
+ console.error();
342
+ console.warn(import_chalk.default.yellow(`Not a valid command: ${command}`));
343
+ process.exit(1);
345
344
  }
346
345
  const definition = commands[command];
347
346
  main();
348
347
  async function main() {
349
- if (flags["--help"]) {
350
- console.info(`
348
+ if (flags["--help"]) {
349
+ console.info(`
351
350
  $ tamagui ${command}: ${definition.description}
352
351
  `);
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 ${_}
352
+ if ("usage" in definition && definition.usage) {
353
+ console.info(`Usage:
354
+ ${definition.usage}
355
+ `);
356
+ }
357
+ console.info(`Flags:
358
+ ${Object.entries(definition.flags).map(([k, v]) => ` ${k} (${v.name})`).join("\n")}`);
359
+ process.exit(0);
360
+ }
361
+ const { _, ...cmdFlags } = (0, import_arg.default)(definition.flags);
362
+ if (cmdFlags["--help"]) {
363
+ console.info(`$ tamagui ${_}
362
364
 
363
365
  Flags: ${JSON.stringify(cmdFlags, null, 2)}
364
366
 
365
367
  `);
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
- }
368
+ process.exit(0);
369
+ }
370
+ try {
371
+ await definition.run();
372
+ } catch (err) {
373
+ console.error(`Error running command: ${err.message}`);
374
+ process.exit(1);
375
+ }
376
+ process.exit(process.exitCode ?? 0);
377
+ }