@clarigen/cli 3.1.1 → 3.2.0

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/run-cli.js CHANGED
@@ -536,6 +536,20 @@ function serializeArray(key, lines) {
536
536
  }
537
537
 
538
538
  // src/files/variables.ts
539
+ function clarityVersionForContract(contract) {
540
+ switch (contract.contract_interface.clarity_version) {
541
+ case "Clarity1":
542
+ return 1;
543
+ case "Clarity2":
544
+ return 2;
545
+ case "Clarity3":
546
+ return 3;
547
+ case "Clarity4":
548
+ return 4;
549
+ default:
550
+ return 3;
551
+ }
552
+ }
539
553
  function getVariablesV2(contract, simnet, verbose) {
540
554
  const [deployer] = contract.contract_id.split(".");
541
555
  const fakeId = `${getContractName3(contract.contract_id)}-vars`;
@@ -571,7 +585,7 @@ ${varFn}`;
571
585
  fakeId,
572
586
  fullSrc,
573
587
  {
574
- clarityVersion: 3
588
+ clarityVersion: clarityVersionForContract(contract)
575
589
  },
576
590
  deployer
577
591
  );
@@ -637,7 +651,11 @@ async function getSession(config) {
637
651
  }
638
652
  return {
639
653
  contract_id,
640
- contract_interface,
654
+ contract_interface: {
655
+ ...contract_interface,
656
+ epoch: contract_interface.epoch,
657
+ clarity_version: contract_interface.clarity_version
658
+ },
641
659
  source: source ?? ""
642
660
  };
643
661
  })
@@ -870,7 +888,7 @@ async function afterESM(config) {
870
888
 
871
889
  // src/commands/default-command.ts
872
890
  import chokidar from "chokidar";
873
- import { dirname as dirname4, join as join3, relative as relative4 } from "path";
891
+ import { dirname as dirname4, join as join3, relative as relative4 } from "node:path";
874
892
  async function generate(config) {
875
893
  const session = await getSession(config);
876
894
  const baseFile = generateBaseFile(session);
@@ -1400,23 +1418,81 @@ output = "docs/"
1400
1418
  }
1401
1419
 
1402
1420
  // src/commands/docs-command.ts
1421
+ import { dirname as dirname5, join as join4, relative as relative6 } from "node:path";
1422
+ import chokidar2 from "chokidar";
1423
+ async function watch2(config, cwd) {
1424
+ return new Promise(async (resolve3, reject) => {
1425
+ var _a;
1426
+ const session = await getSession(config);
1427
+ try {
1428
+ await generateDocs({
1429
+ session,
1430
+ config
1431
+ });
1432
+ } catch (error) {
1433
+ logger.error({ error }, "Error generating types");
1434
+ }
1435
+ const clarinetFolder = dirname5(config.clarinetFile());
1436
+ const contractsFolder = join4(clarinetFolder, "/contracts/**/*.clar");
1437
+ const relativeFolder = relative6(cwd || process.cwd(), contractsFolder);
1438
+ const watchFolders = ((_a = config.esm) == null ? void 0 : _a.watch_folders) ?? [];
1439
+ watchFolders.push(relativeFolder);
1440
+ logger.info(`Watching for changes in ${watchFolders}`);
1441
+ const watcher = chokidar2.watch(watchFolders, { persistent: true, cwd: clarinetFolder });
1442
+ let running = false;
1443
+ let start = 0;
1444
+ const isVerbose = logger.level !== "info";
1445
+ watcher.on("change", async (path) => {
1446
+ if (!running) {
1447
+ start = Date.now();
1448
+ logger.info(`File ${path} has been changed. Generating types.`);
1449
+ running = true;
1450
+ const session2 = await getSession(config);
1451
+ void generateDocs({
1452
+ session: session2,
1453
+ config
1454
+ }).catch((e) => {
1455
+ logger.error({ error: e }, "Error generating types");
1456
+ }).then(() => {
1457
+ setTimeout(() => {
1458
+ process.stdout.moveCursor(0, -1);
1459
+ process.stdout.clearLine(1);
1460
+ const elapsed = Date.now() - start;
1461
+ logger.info(
1462
+ `Docs generated (${(elapsed / 1e3).toFixed(2)}s). Watching for changes...`
1463
+ );
1464
+ running = false;
1465
+ });
1466
+ });
1467
+ }
1468
+ });
1469
+ });
1470
+ }
1403
1471
  var DocsCommand = class extends BaseCommand {
1404
1472
  static paths = [["docs"]];
1405
1473
  static usage = BaseCommand.Usage({
1406
1474
  description: "Generate markdown documentation for your Clarity contracts"
1407
1475
  });
1408
1476
  cwd = Option4.String({ required: false });
1477
+ watch = Option4.Boolean("-w,--watch", {
1478
+ description: "Watch for changes and regenerate docs",
1479
+ required: false
1480
+ });
1409
1481
  async execute() {
1410
1482
  this.preexecute();
1411
1483
  const config = await Config.load(this.cwd);
1412
- const session = await getSession(config);
1413
- await generateDocs({
1414
- session: {
1415
- ...session,
1416
- variables: []
1417
- },
1418
- config
1419
- });
1484
+ if (this.watch) {
1485
+ await watch2(config, this.cwd);
1486
+ } else {
1487
+ const session = await getSession(config);
1488
+ await generateDocs({
1489
+ session: {
1490
+ ...session,
1491
+ variables: []
1492
+ },
1493
+ config
1494
+ });
1495
+ }
1420
1496
  }
1421
1497
  };
1422
1498
 
@@ -1481,7 +1557,7 @@ var InitConfigCommand = class extends BaseCommand {
1481
1557
  };
1482
1558
 
1483
1559
  // src/generated/version.ts
1484
- var version = "3.1.1";
1560
+ var version = "3.2.0";
1485
1561
 
1486
1562
  // src/run-cli.ts
1487
1563
  var [node, script, ...args] = process.argv;