@react-grab/cli 0.0.73 → 0.0.75
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 +48 -23
- package/dist/cli.js +48 -23
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -987,11 +987,11 @@ var AGENT_PREFIXES = {
|
|
|
987
987
|
opencode: "npx @react-grab/opencode@latest &&"
|
|
988
988
|
};
|
|
989
989
|
var previewPackageJsonTransform = (projectRoot, agent, installedAgents) => {
|
|
990
|
-
if (agent === "none") {
|
|
990
|
+
if (agent === "none" || agent === "ami") {
|
|
991
991
|
return {
|
|
992
992
|
success: true,
|
|
993
993
|
filePath: "",
|
|
994
|
-
message: "No agent selected, skipping package.json modification",
|
|
994
|
+
message: agent === "ami" ? "Ami does not require package.json modification" : "No agent selected, skipping package.json modification",
|
|
995
995
|
noChanges: true
|
|
996
996
|
};
|
|
997
997
|
}
|
|
@@ -1083,9 +1083,10 @@ var applyPackageJsonTransform = (result) => {
|
|
|
1083
1083
|
var AGENT_NAMES = {
|
|
1084
1084
|
"claude-code": "Claude Code",
|
|
1085
1085
|
cursor: "Cursor",
|
|
1086
|
-
opencode: "Opencode"
|
|
1086
|
+
opencode: "Opencode",
|
|
1087
|
+
ami: "Ami"
|
|
1087
1088
|
};
|
|
1088
|
-
var add = new commander.Command().name("add").description("add an agent integration").argument("[agent]", "agent to add (claude-code, cursor, opencode)").option("-y, --yes", "skip confirmation prompts", false).option(
|
|
1089
|
+
var add = new commander.Command().name("add").description("add an agent integration").argument("[agent]", "agent to add (claude-code, cursor, opencode, ami)").option("-y, --yes", "skip confirmation prompts", false).option(
|
|
1089
1090
|
"-c, --cwd <cwd>",
|
|
1090
1091
|
"working directory (defaults to current directory)",
|
|
1091
1092
|
process.cwd()
|
|
@@ -1107,7 +1108,7 @@ var add = new commander.Command().name("add").description("add an agent integrat
|
|
|
1107
1108
|
process.exit(1);
|
|
1108
1109
|
}
|
|
1109
1110
|
preflightSpinner.succeed();
|
|
1110
|
-
const availableAgents = ["claude-code", "cursor", "opencode"].filter((agent) => !projectInfo.installedAgents.includes(agent));
|
|
1111
|
+
const availableAgents = ["claude-code", "cursor", "opencode", "ami"].filter((agent) => !projectInfo.installedAgents.includes(agent));
|
|
1111
1112
|
if (availableAgents.length === 0) {
|
|
1112
1113
|
logger.break();
|
|
1113
1114
|
logger.success("All agent integrations are already installed.");
|
|
@@ -1116,10 +1117,10 @@ var add = new commander.Command().name("add").description("add an agent integrat
|
|
|
1116
1117
|
}
|
|
1117
1118
|
let agentIntegration;
|
|
1118
1119
|
if (agentArg) {
|
|
1119
|
-
if (!["claude-code", "cursor", "opencode"].includes(agentArg)) {
|
|
1120
|
+
if (!["claude-code", "cursor", "opencode", "ami"].includes(agentArg)) {
|
|
1120
1121
|
logger.break();
|
|
1121
1122
|
logger.error(`Invalid agent: ${agentArg}`);
|
|
1122
|
-
logger.error("Available agents: claude-code, cursor, opencode");
|
|
1123
|
+
logger.error("Available agents: claude-code, cursor, opencode, ami");
|
|
1123
1124
|
logger.break();
|
|
1124
1125
|
process.exit(1);
|
|
1125
1126
|
}
|
|
@@ -1257,7 +1258,7 @@ var add = new commander.Command().name("add").description("add an agent integrat
|
|
|
1257
1258
|
handleError(error);
|
|
1258
1259
|
}
|
|
1259
1260
|
});
|
|
1260
|
-
var VERSION = "0.0.
|
|
1261
|
+
var VERSION = "0.0.75";
|
|
1261
1262
|
var REPORT_URL = "https://react-grab.com/api/report-cli";
|
|
1262
1263
|
var DOCS_URL = "https://github.com/aidenybai/react-grab";
|
|
1263
1264
|
var reportToCli = async (type, config, error) => {
|
|
@@ -1297,7 +1298,7 @@ var UNSUPPORTED_FRAMEWORK_NAMES = {
|
|
|
1297
1298
|
};
|
|
1298
1299
|
var init = new commander.Command().name("init").description("initialize React Grab in your project").option("-y, --yes", "skip confirmation prompts", false).option("-f, --force", "force overwrite existing config", false).option(
|
|
1299
1300
|
"-a, --agent <agent>",
|
|
1300
|
-
"agent integration (claude-code, cursor, opencode)"
|
|
1301
|
+
"agent integration (claude-code, cursor, opencode, ami)"
|
|
1301
1302
|
).option("--skip-install", "skip package installation", false).option(
|
|
1302
1303
|
"-c, --cwd <cwd>",
|
|
1303
1304
|
"working directory (defaults to current directory)",
|
|
@@ -1334,17 +1335,23 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1334
1335
|
if (projectInfo.framework === "unknown") {
|
|
1335
1336
|
if (projectInfo.isMonorepo && !isNonInteractive) {
|
|
1336
1337
|
frameworkSpinner.info("Verifying framework. Found monorepo.");
|
|
1337
|
-
const workspaceProjects = findWorkspaceProjects(
|
|
1338
|
+
const workspaceProjects = findWorkspaceProjects(
|
|
1339
|
+
projectInfo.projectRoot
|
|
1340
|
+
);
|
|
1338
1341
|
const reactProjects = workspaceProjects.filter(
|
|
1339
1342
|
(project) => project.hasReact || project.framework !== "unknown"
|
|
1340
1343
|
);
|
|
1341
1344
|
if (reactProjects.length > 0) {
|
|
1342
1345
|
logger.break();
|
|
1343
|
-
const sortedProjects = [...reactProjects].sort(
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1346
|
+
const sortedProjects = [...reactProjects].sort(
|
|
1347
|
+
(projectA, projectB) => {
|
|
1348
|
+
if (projectA.framework === "unknown" && projectB.framework !== "unknown")
|
|
1349
|
+
return 1;
|
|
1350
|
+
if (projectA.framework !== "unknown" && projectB.framework === "unknown")
|
|
1351
|
+
return -1;
|
|
1352
|
+
return 0;
|
|
1353
|
+
}
|
|
1354
|
+
);
|
|
1348
1355
|
const { selectedProject } = await prompts2__default.default({
|
|
1349
1356
|
type: "select",
|
|
1350
1357
|
name: "selectedProject",
|
|
@@ -1378,7 +1385,9 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1378
1385
|
} else {
|
|
1379
1386
|
frameworkSpinner.fail("Could not detect a supported framework.");
|
|
1380
1387
|
logger.break();
|
|
1381
|
-
logger.log(
|
|
1388
|
+
logger.log(
|
|
1389
|
+
"React Grab supports Next.js, Vite, and Webpack projects."
|
|
1390
|
+
);
|
|
1382
1391
|
logger.log(`Visit ${highlighter.info(DOCS_URL)} for manual setup.`);
|
|
1383
1392
|
logger.break();
|
|
1384
1393
|
process.exit(1);
|
|
@@ -1394,7 +1403,9 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1394
1403
|
`Detecting router type. Found ${highlighter.info(projectInfo.nextRouterType === "app" ? "App Router" : "Pages Router")}.`
|
|
1395
1404
|
);
|
|
1396
1405
|
}
|
|
1397
|
-
const packageManagerSpinner = spinner(
|
|
1406
|
+
const packageManagerSpinner = spinner(
|
|
1407
|
+
"Detecting package manager."
|
|
1408
|
+
).start();
|
|
1398
1409
|
packageManagerSpinner.succeed(
|
|
1399
1410
|
`Detecting package manager. Found ${highlighter.info(PACKAGE_MANAGER_NAMES[projectInfo.packageManager])}.`
|
|
1400
1411
|
);
|
|
@@ -1412,7 +1423,8 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1412
1423
|
{ title: "None", value: "none" },
|
|
1413
1424
|
{ title: "Claude Code", value: "claude-code" },
|
|
1414
1425
|
{ title: "Cursor", value: "cursor" },
|
|
1415
|
-
{ title: "Opencode", value: "opencode" }
|
|
1426
|
+
{ title: "Opencode", value: "opencode" },
|
|
1427
|
+
{ title: "Ami", value: "ami" }
|
|
1416
1428
|
]
|
|
1417
1429
|
});
|
|
1418
1430
|
if (agent === void 0) {
|
|
@@ -1445,7 +1457,11 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1445
1457
|
if (hasLayoutChanges || hasPackageJsonChanges) {
|
|
1446
1458
|
logger.break();
|
|
1447
1459
|
if (hasLayoutChanges) {
|
|
1448
|
-
printDiff(
|
|
1460
|
+
printDiff(
|
|
1461
|
+
result.filePath,
|
|
1462
|
+
result.originalContent,
|
|
1463
|
+
result.newContent
|
|
1464
|
+
);
|
|
1449
1465
|
}
|
|
1450
1466
|
if (hasPackageJsonChanges) {
|
|
1451
1467
|
if (hasLayoutChanges) {
|
|
@@ -1479,13 +1495,20 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1479
1495
|
const shouldInstallReactGrab = !projectInfo.hasReactGrab;
|
|
1480
1496
|
const shouldInstallAgent = agentIntegration !== "none" && !projectInfo.installedAgents.includes(agentIntegration);
|
|
1481
1497
|
if (!opts.skipInstall && (shouldInstallReactGrab || shouldInstallAgent)) {
|
|
1482
|
-
const packages = getPackagesToInstall(
|
|
1498
|
+
const packages = getPackagesToInstall(
|
|
1499
|
+
agentIntegration,
|
|
1500
|
+
shouldInstallReactGrab
|
|
1501
|
+
);
|
|
1483
1502
|
if (packages.length > 0) {
|
|
1484
1503
|
const installSpinner = spinner(
|
|
1485
1504
|
`Installing ${packages.join(", ")}.`
|
|
1486
1505
|
).start();
|
|
1487
1506
|
try {
|
|
1488
|
-
installPackages(
|
|
1507
|
+
installPackages(
|
|
1508
|
+
packages,
|
|
1509
|
+
finalPackageManager,
|
|
1510
|
+
projectInfo.projectRoot
|
|
1511
|
+
);
|
|
1489
1512
|
installSpinner.succeed();
|
|
1490
1513
|
} catch (error) {
|
|
1491
1514
|
installSpinner.fail();
|
|
@@ -1494,7 +1517,9 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1494
1517
|
}
|
|
1495
1518
|
}
|
|
1496
1519
|
if (hasLayoutChanges) {
|
|
1497
|
-
const writeSpinner = spinner(
|
|
1520
|
+
const writeSpinner = spinner(
|
|
1521
|
+
`Applying changes to ${result.filePath}.`
|
|
1522
|
+
).start();
|
|
1498
1523
|
const writeResult = applyTransform(result);
|
|
1499
1524
|
if (!writeResult.success) {
|
|
1500
1525
|
writeSpinner.fail();
|
|
@@ -1539,7 +1564,7 @@ var init = new commander.Command().name("init").description("initialize React Gr
|
|
|
1539
1564
|
});
|
|
1540
1565
|
|
|
1541
1566
|
// src/cli.ts
|
|
1542
|
-
var VERSION2 = "0.0.
|
|
1567
|
+
var VERSION2 = "0.0.75";
|
|
1543
1568
|
process.on("SIGINT", () => process.exit(0));
|
|
1544
1569
|
process.on("SIGTERM", () => process.exit(0));
|
|
1545
1570
|
var program = new commander.Command().name("react-grab").description("add React Grab to your project").version(VERSION2, "-v, --version", "display the version number");
|
package/dist/cli.js
CHANGED
|
@@ -980,11 +980,11 @@ var AGENT_PREFIXES = {
|
|
|
980
980
|
opencode: "npx @react-grab/opencode@latest &&"
|
|
981
981
|
};
|
|
982
982
|
var previewPackageJsonTransform = (projectRoot, agent, installedAgents) => {
|
|
983
|
-
if (agent === "none") {
|
|
983
|
+
if (agent === "none" || agent === "ami") {
|
|
984
984
|
return {
|
|
985
985
|
success: true,
|
|
986
986
|
filePath: "",
|
|
987
|
-
message: "No agent selected, skipping package.json modification",
|
|
987
|
+
message: agent === "ami" ? "Ami does not require package.json modification" : "No agent selected, skipping package.json modification",
|
|
988
988
|
noChanges: true
|
|
989
989
|
};
|
|
990
990
|
}
|
|
@@ -1076,9 +1076,10 @@ var applyPackageJsonTransform = (result) => {
|
|
|
1076
1076
|
var AGENT_NAMES = {
|
|
1077
1077
|
"claude-code": "Claude Code",
|
|
1078
1078
|
cursor: "Cursor",
|
|
1079
|
-
opencode: "Opencode"
|
|
1079
|
+
opencode: "Opencode",
|
|
1080
|
+
ami: "Ami"
|
|
1080
1081
|
};
|
|
1081
|
-
var add = new Command().name("add").description("add an agent integration").argument("[agent]", "agent to add (claude-code, cursor, opencode)").option("-y, --yes", "skip confirmation prompts", false).option(
|
|
1082
|
+
var add = new Command().name("add").description("add an agent integration").argument("[agent]", "agent to add (claude-code, cursor, opencode, ami)").option("-y, --yes", "skip confirmation prompts", false).option(
|
|
1082
1083
|
"-c, --cwd <cwd>",
|
|
1083
1084
|
"working directory (defaults to current directory)",
|
|
1084
1085
|
process.cwd()
|
|
@@ -1100,7 +1101,7 @@ var add = new Command().name("add").description("add an agent integration").argu
|
|
|
1100
1101
|
process.exit(1);
|
|
1101
1102
|
}
|
|
1102
1103
|
preflightSpinner.succeed();
|
|
1103
|
-
const availableAgents = ["claude-code", "cursor", "opencode"].filter((agent) => !projectInfo.installedAgents.includes(agent));
|
|
1104
|
+
const availableAgents = ["claude-code", "cursor", "opencode", "ami"].filter((agent) => !projectInfo.installedAgents.includes(agent));
|
|
1104
1105
|
if (availableAgents.length === 0) {
|
|
1105
1106
|
logger.break();
|
|
1106
1107
|
logger.success("All agent integrations are already installed.");
|
|
@@ -1109,10 +1110,10 @@ var add = new Command().name("add").description("add an agent integration").argu
|
|
|
1109
1110
|
}
|
|
1110
1111
|
let agentIntegration;
|
|
1111
1112
|
if (agentArg) {
|
|
1112
|
-
if (!["claude-code", "cursor", "opencode"].includes(agentArg)) {
|
|
1113
|
+
if (!["claude-code", "cursor", "opencode", "ami"].includes(agentArg)) {
|
|
1113
1114
|
logger.break();
|
|
1114
1115
|
logger.error(`Invalid agent: ${agentArg}`);
|
|
1115
|
-
logger.error("Available agents: claude-code, cursor, opencode");
|
|
1116
|
+
logger.error("Available agents: claude-code, cursor, opencode, ami");
|
|
1116
1117
|
logger.break();
|
|
1117
1118
|
process.exit(1);
|
|
1118
1119
|
}
|
|
@@ -1250,7 +1251,7 @@ var add = new Command().name("add").description("add an agent integration").argu
|
|
|
1250
1251
|
handleError(error);
|
|
1251
1252
|
}
|
|
1252
1253
|
});
|
|
1253
|
-
var VERSION = "0.0.
|
|
1254
|
+
var VERSION = "0.0.75";
|
|
1254
1255
|
var REPORT_URL = "https://react-grab.com/api/report-cli";
|
|
1255
1256
|
var DOCS_URL = "https://github.com/aidenybai/react-grab";
|
|
1256
1257
|
var reportToCli = async (type, config, error) => {
|
|
@@ -1290,7 +1291,7 @@ var UNSUPPORTED_FRAMEWORK_NAMES = {
|
|
|
1290
1291
|
};
|
|
1291
1292
|
var init = new Command().name("init").description("initialize React Grab in your project").option("-y, --yes", "skip confirmation prompts", false).option("-f, --force", "force overwrite existing config", false).option(
|
|
1292
1293
|
"-a, --agent <agent>",
|
|
1293
|
-
"agent integration (claude-code, cursor, opencode)"
|
|
1294
|
+
"agent integration (claude-code, cursor, opencode, ami)"
|
|
1294
1295
|
).option("--skip-install", "skip package installation", false).option(
|
|
1295
1296
|
"-c, --cwd <cwd>",
|
|
1296
1297
|
"working directory (defaults to current directory)",
|
|
@@ -1327,17 +1328,23 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1327
1328
|
if (projectInfo.framework === "unknown") {
|
|
1328
1329
|
if (projectInfo.isMonorepo && !isNonInteractive) {
|
|
1329
1330
|
frameworkSpinner.info("Verifying framework. Found monorepo.");
|
|
1330
|
-
const workspaceProjects = findWorkspaceProjects(
|
|
1331
|
+
const workspaceProjects = findWorkspaceProjects(
|
|
1332
|
+
projectInfo.projectRoot
|
|
1333
|
+
);
|
|
1331
1334
|
const reactProjects = workspaceProjects.filter(
|
|
1332
1335
|
(project) => project.hasReact || project.framework !== "unknown"
|
|
1333
1336
|
);
|
|
1334
1337
|
if (reactProjects.length > 0) {
|
|
1335
1338
|
logger.break();
|
|
1336
|
-
const sortedProjects = [...reactProjects].sort(
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1339
|
+
const sortedProjects = [...reactProjects].sort(
|
|
1340
|
+
(projectA, projectB) => {
|
|
1341
|
+
if (projectA.framework === "unknown" && projectB.framework !== "unknown")
|
|
1342
|
+
return 1;
|
|
1343
|
+
if (projectA.framework !== "unknown" && projectB.framework === "unknown")
|
|
1344
|
+
return -1;
|
|
1345
|
+
return 0;
|
|
1346
|
+
}
|
|
1347
|
+
);
|
|
1341
1348
|
const { selectedProject } = await prompts2({
|
|
1342
1349
|
type: "select",
|
|
1343
1350
|
name: "selectedProject",
|
|
@@ -1371,7 +1378,9 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1371
1378
|
} else {
|
|
1372
1379
|
frameworkSpinner.fail("Could not detect a supported framework.");
|
|
1373
1380
|
logger.break();
|
|
1374
|
-
logger.log(
|
|
1381
|
+
logger.log(
|
|
1382
|
+
"React Grab supports Next.js, Vite, and Webpack projects."
|
|
1383
|
+
);
|
|
1375
1384
|
logger.log(`Visit ${highlighter.info(DOCS_URL)} for manual setup.`);
|
|
1376
1385
|
logger.break();
|
|
1377
1386
|
process.exit(1);
|
|
@@ -1387,7 +1396,9 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1387
1396
|
`Detecting router type. Found ${highlighter.info(projectInfo.nextRouterType === "app" ? "App Router" : "Pages Router")}.`
|
|
1388
1397
|
);
|
|
1389
1398
|
}
|
|
1390
|
-
const packageManagerSpinner = spinner(
|
|
1399
|
+
const packageManagerSpinner = spinner(
|
|
1400
|
+
"Detecting package manager."
|
|
1401
|
+
).start();
|
|
1391
1402
|
packageManagerSpinner.succeed(
|
|
1392
1403
|
`Detecting package manager. Found ${highlighter.info(PACKAGE_MANAGER_NAMES[projectInfo.packageManager])}.`
|
|
1393
1404
|
);
|
|
@@ -1405,7 +1416,8 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1405
1416
|
{ title: "None", value: "none" },
|
|
1406
1417
|
{ title: "Claude Code", value: "claude-code" },
|
|
1407
1418
|
{ title: "Cursor", value: "cursor" },
|
|
1408
|
-
{ title: "Opencode", value: "opencode" }
|
|
1419
|
+
{ title: "Opencode", value: "opencode" },
|
|
1420
|
+
{ title: "Ami", value: "ami" }
|
|
1409
1421
|
]
|
|
1410
1422
|
});
|
|
1411
1423
|
if (agent === void 0) {
|
|
@@ -1438,7 +1450,11 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1438
1450
|
if (hasLayoutChanges || hasPackageJsonChanges) {
|
|
1439
1451
|
logger.break();
|
|
1440
1452
|
if (hasLayoutChanges) {
|
|
1441
|
-
printDiff(
|
|
1453
|
+
printDiff(
|
|
1454
|
+
result.filePath,
|
|
1455
|
+
result.originalContent,
|
|
1456
|
+
result.newContent
|
|
1457
|
+
);
|
|
1442
1458
|
}
|
|
1443
1459
|
if (hasPackageJsonChanges) {
|
|
1444
1460
|
if (hasLayoutChanges) {
|
|
@@ -1472,13 +1488,20 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1472
1488
|
const shouldInstallReactGrab = !projectInfo.hasReactGrab;
|
|
1473
1489
|
const shouldInstallAgent = agentIntegration !== "none" && !projectInfo.installedAgents.includes(agentIntegration);
|
|
1474
1490
|
if (!opts.skipInstall && (shouldInstallReactGrab || shouldInstallAgent)) {
|
|
1475
|
-
const packages = getPackagesToInstall(
|
|
1491
|
+
const packages = getPackagesToInstall(
|
|
1492
|
+
agentIntegration,
|
|
1493
|
+
shouldInstallReactGrab
|
|
1494
|
+
);
|
|
1476
1495
|
if (packages.length > 0) {
|
|
1477
1496
|
const installSpinner = spinner(
|
|
1478
1497
|
`Installing ${packages.join(", ")}.`
|
|
1479
1498
|
).start();
|
|
1480
1499
|
try {
|
|
1481
|
-
installPackages(
|
|
1500
|
+
installPackages(
|
|
1501
|
+
packages,
|
|
1502
|
+
finalPackageManager,
|
|
1503
|
+
projectInfo.projectRoot
|
|
1504
|
+
);
|
|
1482
1505
|
installSpinner.succeed();
|
|
1483
1506
|
} catch (error) {
|
|
1484
1507
|
installSpinner.fail();
|
|
@@ -1487,7 +1510,9 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1487
1510
|
}
|
|
1488
1511
|
}
|
|
1489
1512
|
if (hasLayoutChanges) {
|
|
1490
|
-
const writeSpinner = spinner(
|
|
1513
|
+
const writeSpinner = spinner(
|
|
1514
|
+
`Applying changes to ${result.filePath}.`
|
|
1515
|
+
).start();
|
|
1491
1516
|
const writeResult = applyTransform(result);
|
|
1492
1517
|
if (!writeResult.success) {
|
|
1493
1518
|
writeSpinner.fail();
|
|
@@ -1532,7 +1557,7 @@ var init = new Command().name("init").description("initialize React Grab in your
|
|
|
1532
1557
|
});
|
|
1533
1558
|
|
|
1534
1559
|
// src/cli.ts
|
|
1535
|
-
var VERSION2 = "0.0.
|
|
1560
|
+
var VERSION2 = "0.0.75";
|
|
1536
1561
|
process.on("SIGINT", () => process.exit(0));
|
|
1537
1562
|
process.on("SIGTERM", () => process.exit(0));
|
|
1538
1563
|
var program = new Command().name("react-grab").description("add React Grab to your project").version(VERSION2, "-v, --version", "display the version number");
|