@effect-app/cli 1.23.18 → 1.23.21
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/CHANGELOG.md +18 -0
- package/dist/index.js +140 -74
- package/eslint.config.mjs +1 -1
- package/package.json +3 -2
- package/src/index.ts +178 -93
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @effect-app/cli
|
|
2
2
|
|
|
3
|
+
## 1.23.21
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- f9aee77: some fixes
|
|
8
|
+
|
|
9
|
+
## 1.23.20
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- f6a3328: export base eslint files so that we import them in projects
|
|
14
|
+
|
|
15
|
+
## 1.23.19
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- 539e2f2: minor wiki command enhancements
|
|
20
|
+
|
|
3
21
|
## 1.23.18
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -95,7 +95,7 @@ Effect
|
|
|
95
95
|
}
|
|
96
96
|
const allRejects = [...existingRejects, ...effectFilters];
|
|
97
97
|
yield* Effect.logInfo(`Excluding packages from update: ${allRejects.join(", ")}`);
|
|
98
|
-
const rejectArgs = allRejects.map(filter => `--reject "${filter}"`).join(" ");
|
|
98
|
+
const rejectArgs = allRejects.map((filter) => `--reject "${filter}"`).join(" ");
|
|
99
99
|
yield* runNodeCommandEC(`pnpm exec ncu -u ${rejectArgs}`);
|
|
100
100
|
yield* runNodeCommandEC(`pnpm -r exec ncu -u ${rejectArgs}`);
|
|
101
101
|
})();
|
|
@@ -275,7 +275,16 @@ Effect
|
|
|
275
275
|
// - skip "./index" to avoid conflicts with the main "." export
|
|
276
276
|
// - skip "/internal/" paths to keep internal modules private
|
|
277
277
|
...cur !== "./index" && !cur.includes("/internal/") && { [cur]: filteredExportEntries[cur] }
|
|
278
|
-
}), {})
|
|
278
|
+
}), {}),
|
|
279
|
+
// Preserve ESLint config exports for effect-app package
|
|
280
|
+
...(JSON.parse(yield* fs.readFileString(p + "/package.json", "utf-8")).name === "effect-app" && {
|
|
281
|
+
"./eslint.base.config": {
|
|
282
|
+
"default": "./src/eslint.base.config.mjs"
|
|
283
|
+
},
|
|
284
|
+
"./eslint.vue.config": {
|
|
285
|
+
"default": "./src/eslint.vue.config.mjs"
|
|
286
|
+
}
|
|
287
|
+
})
|
|
279
288
|
};
|
|
280
289
|
const pkgJson = JSON.parse(yield* fs.readFileString(p + "/package.json", "utf-8"));
|
|
281
290
|
pkgJson.exports = packageExports;
|
|
@@ -451,17 +460,33 @@ Effect
|
|
|
451
460
|
}), "Stopped monitoring package.json exports for all packages")
|
|
452
461
|
.pipe(Command.withDescription("Generate and update package.json exports mappings for all packages in monorepo"));
|
|
453
462
|
const wiki = Command
|
|
454
|
-
.make("wiki", {
|
|
455
|
-
|
|
456
|
-
|
|
463
|
+
.make("wiki", {}, Effect.fn("effa-cli.wiki")(function* () {
|
|
464
|
+
const action = yield* Prompt.select({
|
|
465
|
+
choices: [{
|
|
466
|
+
title: "sync",
|
|
467
|
+
description: "Initialize and update the documentation submodule",
|
|
468
|
+
value: "sync"
|
|
469
|
+
}, {
|
|
470
|
+
title: "update",
|
|
471
|
+
description: "Pull latest changes from remote, commit and push changes within the submodule",
|
|
472
|
+
value: "update"
|
|
473
|
+
}],
|
|
474
|
+
message: "Select wiki action"
|
|
475
|
+
});
|
|
476
|
+
const syncCommand = runNodeCommandEC("git submodule update --init --recursive --remote doc");
|
|
457
477
|
switch (action) {
|
|
458
478
|
case "sync": {
|
|
459
479
|
yield* Effect.logInfo("Initializing/updating git submodule for documentation...");
|
|
460
|
-
|
|
480
|
+
if ((yield* syncCommand) !== 0) {
|
|
481
|
+
return yield* Effect.fail(`Failed to sync submodule`);
|
|
482
|
+
}
|
|
483
|
+
break;
|
|
461
484
|
}
|
|
462
485
|
case "update": {
|
|
463
486
|
yield* Effect.logInfo("Pulling latest changes from remote submodule...");
|
|
464
|
-
yield*
|
|
487
|
+
if ((yield* syncCommand) !== 0) {
|
|
488
|
+
return yield* Effect.fail(`Failed to sync submodule`);
|
|
489
|
+
}
|
|
465
490
|
const commitMessage = yield* Prompt.text({
|
|
466
491
|
message: "Enter commit message:",
|
|
467
492
|
default: "update doc",
|
|
@@ -470,16 +495,65 @@ Effect
|
|
|
470
495
|
: Effect.fail("Commit message cannot be empty")
|
|
471
496
|
});
|
|
472
497
|
yield* Effect.logInfo("Committing and pushing changes in submodule...");
|
|
473
|
-
yield* runNodeCommandEC(`git -C doc add . && git -C doc commit -m '${commitMessage}' && git -C doc push`)
|
|
474
|
-
|
|
498
|
+
if ((yield* runNodeCommandEC(`git -C doc add . && git -C doc commit -m '${commitMessage}' && git -C doc push`)) === 0) {
|
|
499
|
+
yield* Effect.logInfo("Submodule updated and pushed successfully");
|
|
500
|
+
}
|
|
501
|
+
break;
|
|
475
502
|
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
503
|
+
default: {
|
|
504
|
+
action;
|
|
505
|
+
return yield* Effect.fail(`Unknown wiki action: ${action}. Available actions: sync, update`);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
// check if references to submodule have changed in main repo
|
|
509
|
+
// and offer to commit these changes
|
|
510
|
+
const statusOutput = yield* runNodeCommand("git status --porcelain");
|
|
511
|
+
const hasSubmoduleChanges = statusOutput
|
|
512
|
+
.split("\n")
|
|
513
|
+
.some((line) => line.trim().endsWith("doc") && line.trim().startsWith("M "));
|
|
514
|
+
if (hasSubmoduleChanges) {
|
|
515
|
+
const shouldCommitSubmodule = yield* Prompt.confirm({
|
|
516
|
+
message: "Changes to the submodule detected in main repository. Commit these changes?",
|
|
517
|
+
initial: false
|
|
518
|
+
});
|
|
519
|
+
if (shouldCommitSubmodule) {
|
|
520
|
+
const mainCommitMessage = yield* Prompt.text({
|
|
521
|
+
message: "Enter commit message for main repository:",
|
|
522
|
+
default: "update doc submodule reference",
|
|
523
|
+
validate: (input) => input.trim().length > 0
|
|
524
|
+
? Effect.succeed(input.trim())
|
|
525
|
+
: Effect.fail("Commit message cannot be empty")
|
|
526
|
+
});
|
|
527
|
+
if ((yield* runNodeCommandEC(`git commit -m '${mainCommitMessage}' doc`)) === 0) {
|
|
528
|
+
yield* Effect.logInfo("Main repository updated with submodule changes successfully");
|
|
529
|
+
}
|
|
530
|
+
else {
|
|
531
|
+
yield* Effect.logError("Failed to commit submodule changes in main repository");
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
else {
|
|
535
|
+
yield* Effect.logInfo("Remember to commit the submodule changes in the main repository later.");
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
else {
|
|
539
|
+
yield* Effect.logInfo("No changes to the submodule detected in main repository.");
|
|
540
|
+
}
|
|
541
|
+
}))
|
|
542
|
+
.pipe(Command.withDescription(`Manage the documentation wiki git submodule with interactive action selection.
|
|
543
|
+
|
|
544
|
+
Available actions:
|
|
545
|
+
- sync: Initialize and update the documentation submodule from remote
|
|
546
|
+
- update: Pull latest changes, commit and push changes within the submodule
|
|
547
|
+
|
|
548
|
+
After any action, automatically detects and offers to commit submodule reference changes in the main repository.`));
|
|
549
|
+
const initWiki = Command
|
|
550
|
+
.make("init-wiki", {}, Effect.fn("effa-cli.initWiki")(function* ({}) {
|
|
551
|
+
yield* Effect.logInfo("⚠️ IMPORTANT: This is a one-time project setup command!");
|
|
552
|
+
// check if doc directory already exists in git index
|
|
553
|
+
const docInIndex = yield* runNodeCommand("git ls-files")
|
|
554
|
+
.pipe(Effect.map((output) => output.split("\n").some((line) => line.startsWith("doc/") || line === "doc")), Effect.catchAll(() => Effect.succeed(false)));
|
|
555
|
+
if (docInIndex) {
|
|
556
|
+
return yield* Effect.logError(`❌ ERROR: A 'doc' directory already exists in the git index!
|
|
483
557
|
|
|
484
558
|
This suggests the wiki submodule may have been initialized before, or there are conflicting files.
|
|
485
559
|
|
|
@@ -491,9 +565,9 @@ Required actions before proceeding:
|
|
|
491
565
|
5. Re-run this command
|
|
492
566
|
|
|
493
567
|
Operation cancelled for safety.`);
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
568
|
+
}
|
|
569
|
+
const confirmation = yield* Prompt.confirm({
|
|
570
|
+
message: `This command will initialize the wiki submodule for this project.
|
|
497
571
|
|
|
498
572
|
⚠️ WARNING: This is NOT the command to use for local submodule initialization!
|
|
499
573
|
|
|
@@ -505,63 +579,54 @@ This command should only be run ONCE in the entire project history by a project
|
|
|
505
579
|
For normal local development, use 'effa wiki sync' instead.
|
|
506
580
|
|
|
507
581
|
Are you sure you want to proceed with the one-time project setup?`,
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
}
|
|
513
|
-
yield* Effect.logInfo("Extracting project name from git remote...");
|
|
514
|
-
const remoteUrl = yield* runNodeCommand("git config --get remote.origin.url");
|
|
515
|
-
// Extract project name from URL (supports both SSH and HTTPS)
|
|
516
|
-
// Examples:
|
|
517
|
-
// - git@github.com:user/project-name.git -> project-name
|
|
518
|
-
// - https://github.com/user/project-name.git -> project-name
|
|
519
|
-
let detectedProjectName = remoteUrl
|
|
520
|
-
.split("/")
|
|
521
|
-
.pop()
|
|
522
|
-
?.replace(/\.git$/, "")
|
|
523
|
-
?.trim();
|
|
524
|
-
yield* detectedProjectName
|
|
525
|
-
? Effect.logInfo(`Detected project name from git remote: ${detectedProjectName}`)
|
|
526
|
-
: Effect.logWarning("Could not determine project name from git remote");
|
|
527
|
-
detectedProjectName = yield* Prompt.text({
|
|
528
|
-
message: detectedProjectName
|
|
529
|
-
? "Please confirm or modify the project name:"
|
|
530
|
-
: "Please enter the project name:",
|
|
531
|
-
...detectedProjectName && { default: detectedProjectName },
|
|
532
|
-
validate: (input) => input.trim().length > 0
|
|
533
|
-
? Effect.succeed(input.trim())
|
|
534
|
-
: Effect.fail("Project name cannot be empty")
|
|
535
|
-
});
|
|
536
|
-
yield* Effect.logInfo(`Using project name: ${detectedProjectName}`);
|
|
537
|
-
yield* Effect.logInfo("Creating .gitmodules file...");
|
|
538
|
-
yield* runNodeCommandEC(`echo '' >> .gitmodules`);
|
|
539
|
-
yield* runNodeCommandEC(`echo '[submodule "doc"]' >> .gitmodules`);
|
|
540
|
-
yield* runNodeCommandEC(`echo ' path = doc' >> .gitmodules`);
|
|
541
|
-
yield* runNodeCommandEC(`echo ' url = ../${detectedProjectName}.wiki.git' >> .gitmodules`);
|
|
542
|
-
yield* runNodeCommandEC(`echo ' branch = master' >> .gitmodules`);
|
|
543
|
-
yield* runNodeCommandEC(`echo ' update = merge' >> .gitmodules`);
|
|
544
|
-
yield* Effect.logInfo("Adding git submodule for documentation wiki...");
|
|
545
|
-
yield* runNodeCommandEC(`git submodule add -b master ../${detectedProjectName}.wiki.git doc`);
|
|
546
|
-
yield* Effect.logInfo("Committing wiki submodule addition...");
|
|
547
|
-
yield* runNodeCommandEC("git add . && git commit -am 'Add doc submodule'");
|
|
548
|
-
return yield* Effect.logInfo("Wiki submodule initialized successfully");
|
|
549
|
-
}
|
|
550
|
-
default: {
|
|
551
|
-
return yield* Effect.fail(`Unknown wiki action: ${action}. Available actions: sync, update`);
|
|
552
|
-
}
|
|
582
|
+
initial: false
|
|
583
|
+
});
|
|
584
|
+
if (!confirmation) {
|
|
585
|
+
return yield* Effect.logInfo("Operation cancelled. Use 'effa wiki sync' for normal wiki operations.");
|
|
553
586
|
}
|
|
587
|
+
yield* Effect.logInfo("Extracting project name from git remote...");
|
|
588
|
+
const remoteUrl = yield* runNodeCommand("git config --get remote.origin.url");
|
|
589
|
+
// extract project name from URL (supports both SSH and HTTPS)
|
|
590
|
+
//
|
|
591
|
+
// - git@github.com:user/project-name.git -> project-name
|
|
592
|
+
// - https://github.com/user/project-name.git -> project-name
|
|
593
|
+
let detectedProjectName = remoteUrl
|
|
594
|
+
.split("/")
|
|
595
|
+
.pop()
|
|
596
|
+
?.replace(/\.git$/, "")
|
|
597
|
+
?.trim();
|
|
598
|
+
yield* detectedProjectName
|
|
599
|
+
? Effect.logInfo(`Detected project name from git remote: ${detectedProjectName}`)
|
|
600
|
+
: Effect.logWarning("Could not determine project name from git remote");
|
|
601
|
+
detectedProjectName = yield* Prompt.text({
|
|
602
|
+
message: detectedProjectName
|
|
603
|
+
? "Please confirm or modify the project name:"
|
|
604
|
+
: "Please enter the project name:",
|
|
605
|
+
...detectedProjectName && { default: detectedProjectName },
|
|
606
|
+
validate: (input) => input.trim().length > 0
|
|
607
|
+
? Effect.succeed(input.trim())
|
|
608
|
+
: Effect.fail("Project name cannot be empty")
|
|
609
|
+
});
|
|
610
|
+
yield* Effect.logInfo(`Using project name: ${detectedProjectName}`);
|
|
611
|
+
yield* Effect.logInfo("Creating .gitmodules file...");
|
|
612
|
+
yield* runNodeCommandEC(`echo '' >> .gitmodules`);
|
|
613
|
+
yield* runNodeCommandEC(`echo '[submodule "doc"]' >> .gitmodules`);
|
|
614
|
+
yield* runNodeCommandEC(`echo ' path = doc' >> .gitmodules`);
|
|
615
|
+
yield* runNodeCommandEC(`echo ' url = ../${detectedProjectName}.wiki.git' >> .gitmodules`);
|
|
616
|
+
yield* runNodeCommandEC(`echo ' branch = master' >> .gitmodules`);
|
|
617
|
+
yield* runNodeCommandEC(`echo ' update = merge' >> .gitmodules`);
|
|
618
|
+
yield* Effect.logInfo("Adding git submodule for documentation wiki...");
|
|
619
|
+
yield* runNodeCommandEC(`git submodule add -b master ../${detectedProjectName}.wiki.git doc`);
|
|
620
|
+
yield* Effect.logInfo("Committing wiki submodule addition...");
|
|
621
|
+
yield* runNodeCommandEC("git add . && git commit -am 'Add doc submodule'");
|
|
622
|
+
return yield* Effect.logInfo("Wiki submodule initialized successfully");
|
|
554
623
|
}))
|
|
555
|
-
.pipe(Command.withDescription(
|
|
556
|
-
|
|
557
|
-
Available actions:
|
|
558
|
-
- sync: Initialize and update the documentation submodule (default)
|
|
559
|
-
- update: Pull latest changes from remote, commit and push changes within the submodule
|
|
560
|
-
- init-wiki: Set up the wiki submodule for the project (one-time setup)`));
|
|
561
|
-
const DryRunOption = Options.boolean("dry-run").pipe(Options.withDescription("Show what would be done without making changes"));
|
|
562
|
-
const PruneStoreOption = Options.boolean("store-prune").pipe(Options.withDescription("Prune the package manager store"));
|
|
624
|
+
.pipe(Command.withDescription("Set up the wiki submodule for the project (one-time setup)"));
|
|
563
625
|
const nuke = Command
|
|
564
|
-
.make("nuke", {
|
|
626
|
+
.make("nuke", {
|
|
627
|
+
dryRun: Options.boolean("dry-run").pipe(Options.withDescription("Show what would be done without making changes")),
|
|
628
|
+
storePrune: Options.boolean("store-prune").pipe(Options.withDescription("Prune the package manager store"))
|
|
629
|
+
}, Effect.fn("effa-cli.nuke")(function* ({ dryRun, storePrune }) {
|
|
565
630
|
yield* Effect.logInfo(dryRun ? "Performing dry run cleanup..." : "Performing nuclear cleanup...");
|
|
566
631
|
if (dryRun) {
|
|
567
632
|
yield* runNodeCommandEC("find . -depth \\( -type d \\( -name 'node_modules' -o -name '.nuxt' -o -name 'dist' -o -name '.output' -o -name '.nitro' -o -name '.cache' -o -name 'test-results' -o -name 'test-out' -o -name 'coverage' \\) -print \\) -o \\( -type f \\( -name '*.log' -o -name '*.tsbuildinfo' \\) -print \\)");
|
|
@@ -587,6 +652,7 @@ Available actions:
|
|
|
587
652
|
packagejson,
|
|
588
653
|
packagejsonPackages,
|
|
589
654
|
wiki,
|
|
655
|
+
initWiki,
|
|
590
656
|
nuke
|
|
591
657
|
])), {
|
|
592
658
|
name: "Effect-App CLI by jfet97 ❤️",
|
|
@@ -595,4 +661,4 @@ Available actions:
|
|
|
595
661
|
return yield* cli(process.argv);
|
|
596
662
|
})()
|
|
597
663
|
.pipe(Effect.scoped, Effect.provide(NodeContext.layer), NodeRuntime.runMain);
|
|
598
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELHFDQUFxQztBQUNyQyw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUloRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFjLE1BQU0sUUFBUSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXRDLE1BQU07S0FDSCxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUE7SUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtJQUM3QixNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDLDRCQUE0QixDQUFBO0lBRWpFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUE7SUFFOUU7Ozs7Ozs7T0FPRztJQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBWSxFQUFFLEVBQUUsQ0FDckQsV0FBVztTQUNSLElBQUksQ0FBQyxJQUFJ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
|
|
664
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0RBQWtEO0FBQ2xELHFDQUFxQztBQUNyQyw4Q0FBOEM7QUFDOUMsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUM1RCxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUloRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFjLE1BQU0sUUFBUSxDQUFBO0FBQ3JFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBRXRDLE1BQU07S0FDSCxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUE7SUFDdkMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtJQUM3QixNQUFNLHFCQUFxQixHQUFHLEtBQUssQ0FBQyxDQUFDLDRCQUE0QixDQUFBO0lBRWpFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLENBQUE7SUFFOUU7Ozs7Ozs7T0FPRztJQUNILE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxHQUFXLEVBQUUsR0FBWSxFQUFFLEVBQUUsQ0FDckQsV0FBVztTQUNSLElBQUksQ0FBQyxJQUFJ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
|
package/eslint.config.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from "node:path"
|
|
2
2
|
import { fileURLToPath } from "node:url"
|
|
3
|
-
import { augmentedConfig } from "
|
|
3
|
+
import { augmentedConfig } from "effect-app/eslint.base.config"
|
|
4
4
|
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url)
|
|
6
6
|
const __dirname = path.dirname(__filename)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/cli",
|
|
3
|
-
"version": "1.23.
|
|
3
|
+
"version": "1.23.21",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"@types/node": "~24.3.1",
|
|
18
18
|
"json5": "^2.2.3",
|
|
19
19
|
"typescript": "~5.9.2",
|
|
20
|
-
"vitest": "^3.2.4"
|
|
20
|
+
"vitest": "^3.2.4",
|
|
21
|
+
"effect-app": "3.3.4"
|
|
21
22
|
},
|
|
22
23
|
"typesVersions": {
|
|
23
24
|
"*": {
|
package/src/index.ts
CHANGED
|
@@ -119,7 +119,7 @@ Effect
|
|
|
119
119
|
|
|
120
120
|
const allRejects = [...existingRejects, ...effectFilters]
|
|
121
121
|
yield* Effect.logInfo(`Excluding packages from update: ${allRejects.join(", ")}`)
|
|
122
|
-
const rejectArgs = allRejects.map(filter => `--reject "${filter}"`).join(" ")
|
|
122
|
+
const rejectArgs = allRejects.map((filter) => `--reject "${filter}"`).join(" ")
|
|
123
123
|
|
|
124
124
|
yield* runNodeCommandEC(`pnpm exec ncu -u ${rejectArgs}`)
|
|
125
125
|
yield* runNodeCommandEC(`pnpm -r exec ncu -u ${rejectArgs}`)
|
|
@@ -377,7 +377,16 @@ Effect
|
|
|
377
377
|
...cur !== "./index" && !cur.includes("/internal/") && { [cur]: filteredExportEntries[cur] }
|
|
378
378
|
}),
|
|
379
379
|
{} as Record<string, unknown>
|
|
380
|
-
)
|
|
380
|
+
),
|
|
381
|
+
// Preserve ESLint config exports for effect-app package
|
|
382
|
+
...(JSON.parse(yield* fs.readFileString(p + "/package.json", "utf-8")).name === "effect-app" && {
|
|
383
|
+
"./eslint.base.config": {
|
|
384
|
+
"default": "./src/eslint.base.config.mjs"
|
|
385
|
+
},
|
|
386
|
+
"./eslint.vue.config": {
|
|
387
|
+
"default": "./src/eslint.vue.config.mjs"
|
|
388
|
+
}
|
|
389
|
+
})
|
|
381
390
|
}
|
|
382
391
|
|
|
383
392
|
const pkgJson = JSON.parse(yield* fs.readFileString(p + "/package.json", "utf-8"))
|
|
@@ -698,21 +707,39 @@ Effect
|
|
|
698
707
|
const wiki = Command
|
|
699
708
|
.make(
|
|
700
709
|
"wiki",
|
|
701
|
-
{
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
710
|
+
{},
|
|
711
|
+
Effect.fn("effa-cli.wiki")(function*() {
|
|
712
|
+
const action = yield* Prompt.select({
|
|
713
|
+
choices: [{
|
|
714
|
+
title: "sync",
|
|
715
|
+
description: "Initialize and update the documentation submodule",
|
|
716
|
+
value: "sync"
|
|
717
|
+
}, {
|
|
718
|
+
title: "update",
|
|
719
|
+
description: "Pull latest changes from remote, commit and push changes within the submodule",
|
|
720
|
+
value: "update"
|
|
721
|
+
}],
|
|
722
|
+
message: "Select wiki action"
|
|
723
|
+
})
|
|
724
|
+
|
|
725
|
+
const syncCommand = runNodeCommandEC("git submodule update --init --recursive --remote doc")
|
|
726
|
+
|
|
708
727
|
switch (action) {
|
|
709
728
|
case "sync": {
|
|
710
729
|
yield* Effect.logInfo("Initializing/updating git submodule for documentation...")
|
|
711
|
-
|
|
730
|
+
|
|
731
|
+
if ((yield* syncCommand) !== 0) {
|
|
732
|
+
return yield* Effect.fail(`Failed to sync submodule`)
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
break
|
|
712
736
|
}
|
|
713
737
|
case "update": {
|
|
714
738
|
yield* Effect.logInfo("Pulling latest changes from remote submodule...")
|
|
715
|
-
|
|
739
|
+
|
|
740
|
+
if ((yield* syncCommand) !== 0) {
|
|
741
|
+
return yield* Effect.fail(`Failed to sync submodule`)
|
|
742
|
+
}
|
|
716
743
|
|
|
717
744
|
const commitMessage = yield* Prompt.text({
|
|
718
745
|
message: "Enter commit message:",
|
|
@@ -724,22 +751,92 @@ Effect
|
|
|
724
751
|
})
|
|
725
752
|
|
|
726
753
|
yield* Effect.logInfo("Committing and pushing changes in submodule...")
|
|
727
|
-
yield* runNodeCommandEC(`git -C doc add . && git -C doc commit -m '${commitMessage}' && git -C doc push`)
|
|
728
754
|
|
|
729
|
-
|
|
755
|
+
if (
|
|
756
|
+
(yield* runNodeCommandEC(
|
|
757
|
+
`git -C doc add . && git -C doc commit -m '${commitMessage}' && git -C doc push`
|
|
758
|
+
)) === 0
|
|
759
|
+
) {
|
|
760
|
+
yield* Effect.logInfo("Submodule updated and pushed successfully")
|
|
761
|
+
}
|
|
762
|
+
|
|
763
|
+
break
|
|
764
|
+
}
|
|
765
|
+
default: {
|
|
766
|
+
action satisfies never
|
|
767
|
+
return yield* Effect.fail(`Unknown wiki action: ${action}. Available actions: sync, update`)
|
|
730
768
|
}
|
|
731
|
-
|
|
732
|
-
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
// check if references to submodule have changed in main repo
|
|
772
|
+
// and offer to commit these changes
|
|
773
|
+
const statusOutput = yield* runNodeCommand("git status --porcelain")
|
|
774
|
+
|
|
775
|
+
const hasSubmoduleChanges = statusOutput
|
|
776
|
+
.split("\n")
|
|
777
|
+
.some((line) => line.trim().endsWith("doc") && line.trim().startsWith("M "))
|
|
733
778
|
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
)
|
|
779
|
+
if (hasSubmoduleChanges) {
|
|
780
|
+
const shouldCommitSubmodule = yield* Prompt.confirm({
|
|
781
|
+
message: "Changes to the submodule detected in main repository. Commit these changes?",
|
|
782
|
+
initial: false
|
|
783
|
+
})
|
|
740
784
|
|
|
741
|
-
|
|
742
|
-
|
|
785
|
+
if (
|
|
786
|
+
shouldCommitSubmodule
|
|
787
|
+
) {
|
|
788
|
+
const mainCommitMessage = yield* Prompt.text({
|
|
789
|
+
message: "Enter commit message for main repository:",
|
|
790
|
+
default: "update doc submodule reference",
|
|
791
|
+
validate: (input) =>
|
|
792
|
+
input.trim().length > 0
|
|
793
|
+
? Effect.succeed(input.trim())
|
|
794
|
+
: Effect.fail("Commit message cannot be empty")
|
|
795
|
+
})
|
|
796
|
+
|
|
797
|
+
if (
|
|
798
|
+
(yield* runNodeCommandEC(
|
|
799
|
+
`git commit -m '${mainCommitMessage}' doc`
|
|
800
|
+
)) === 0
|
|
801
|
+
) {
|
|
802
|
+
yield* Effect.logInfo("Main repository updated with submodule changes successfully")
|
|
803
|
+
} else {
|
|
804
|
+
yield* Effect.logError("Failed to commit submodule changes in main repository")
|
|
805
|
+
}
|
|
806
|
+
} else {
|
|
807
|
+
yield* Effect.logInfo("Remember to commit the submodule changes in the main repository later.")
|
|
808
|
+
}
|
|
809
|
+
} else {
|
|
810
|
+
yield* Effect.logInfo("No changes to the submodule detected in main repository.")
|
|
811
|
+
}
|
|
812
|
+
})
|
|
813
|
+
)
|
|
814
|
+
.pipe(Command.withDescription(
|
|
815
|
+
`Manage the documentation wiki git submodule with interactive action selection.
|
|
816
|
+
|
|
817
|
+
Available actions:
|
|
818
|
+
- sync: Initialize and update the documentation submodule from remote
|
|
819
|
+
- update: Pull latest changes, commit and push changes within the submodule
|
|
820
|
+
|
|
821
|
+
After any action, automatically detects and offers to commit submodule reference changes in the main repository.`
|
|
822
|
+
))
|
|
823
|
+
|
|
824
|
+
const initWiki = Command
|
|
825
|
+
.make(
|
|
826
|
+
"init-wiki",
|
|
827
|
+
{},
|
|
828
|
+
Effect.fn("effa-cli.initWiki")(function*({}) {
|
|
829
|
+
yield* Effect.logInfo("⚠️ IMPORTANT: This is a one-time project setup command!")
|
|
830
|
+
|
|
831
|
+
// check if doc directory already exists in git index
|
|
832
|
+
const docInIndex = yield* runNodeCommand("git ls-files")
|
|
833
|
+
.pipe(
|
|
834
|
+
Effect.map((output) => output.split("\n").some((line) => line.startsWith("doc/") || line === "doc")),
|
|
835
|
+
Effect.catchAll(() => Effect.succeed(false))
|
|
836
|
+
)
|
|
837
|
+
|
|
838
|
+
if (docInIndex) {
|
|
839
|
+
return yield* Effect.logError(`❌ ERROR: A 'doc' directory already exists in the git index!
|
|
743
840
|
|
|
744
841
|
This suggests the wiki submodule may have been initialized before, or there are conflicting files.
|
|
745
842
|
|
|
@@ -751,10 +848,10 @@ Required actions before proceeding:
|
|
|
751
848
|
5. Re-run this command
|
|
752
849
|
|
|
753
850
|
Operation cancelled for safety.`)
|
|
754
|
-
|
|
851
|
+
}
|
|
755
852
|
|
|
756
|
-
|
|
757
|
-
|
|
853
|
+
const confirmation = yield* Prompt.confirm({
|
|
854
|
+
message: `This command will initialize the wiki submodule for this project.
|
|
758
855
|
|
|
759
856
|
⚠️ WARNING: This is NOT the command to use for local submodule initialization!
|
|
760
857
|
|
|
@@ -766,86 +863,73 @@ This command should only be run ONCE in the entire project history by a project
|
|
|
766
863
|
For normal local development, use 'effa wiki sync' instead.
|
|
767
864
|
|
|
768
865
|
Are you sure you want to proceed with the one-time project setup?`,
|
|
769
|
-
|
|
770
|
-
|
|
866
|
+
initial: false
|
|
867
|
+
})
|
|
771
868
|
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
869
|
+
if (!confirmation) {
|
|
870
|
+
return yield* Effect.logInfo("Operation cancelled. Use 'effa wiki sync' for normal wiki operations.")
|
|
871
|
+
}
|
|
775
872
|
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
873
|
+
yield* Effect.logInfo("Extracting project name from git remote...")
|
|
874
|
+
const remoteUrl = yield* runNodeCommand("git config --get remote.origin.url")
|
|
875
|
+
|
|
876
|
+
// extract project name from URL (supports both SSH and HTTPS)
|
|
877
|
+
//
|
|
878
|
+
// - git@github.com:user/project-name.git -> project-name
|
|
879
|
+
// - https://github.com/user/project-name.git -> project-name
|
|
880
|
+
let detectedProjectName = remoteUrl
|
|
881
|
+
.split("/")
|
|
882
|
+
.pop()
|
|
883
|
+
?.replace(/\.git$/, "")
|
|
884
|
+
?.trim()
|
|
885
|
+
|
|
886
|
+
yield* detectedProjectName
|
|
887
|
+
? Effect.logInfo(`Detected project name from git remote: ${detectedProjectName}`)
|
|
888
|
+
: Effect.logWarning("Could not determine project name from git remote")
|
|
889
|
+
|
|
890
|
+
detectedProjectName = yield* Prompt.text({
|
|
891
|
+
message: detectedProjectName
|
|
892
|
+
? "Please confirm or modify the project name:"
|
|
893
|
+
: "Please enter the project name:",
|
|
894
|
+
...detectedProjectName && { default: detectedProjectName },
|
|
895
|
+
validate: (input) =>
|
|
896
|
+
input.trim().length > 0
|
|
897
|
+
? Effect.succeed(input.trim())
|
|
898
|
+
: Effect.fail("Project name cannot be empty")
|
|
899
|
+
})
|
|
803
900
|
|
|
804
|
-
|
|
901
|
+
yield* Effect.logInfo(`Using project name: ${detectedProjectName}`)
|
|
805
902
|
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
903
|
+
yield* Effect.logInfo("Creating .gitmodules file...")
|
|
904
|
+
yield* runNodeCommandEC(`echo '' >> .gitmodules`)
|
|
905
|
+
yield* runNodeCommandEC(`echo '[submodule "doc"]' >> .gitmodules`)
|
|
906
|
+
yield* runNodeCommandEC(`echo ' path = doc' >> .gitmodules`)
|
|
907
|
+
yield* runNodeCommandEC(`echo ' url = ../${detectedProjectName}.wiki.git' >> .gitmodules`)
|
|
908
|
+
yield* runNodeCommandEC(`echo ' branch = master' >> .gitmodules`)
|
|
909
|
+
yield* runNodeCommandEC(`echo ' update = merge' >> .gitmodules`)
|
|
813
910
|
|
|
814
|
-
|
|
815
|
-
|
|
911
|
+
yield* Effect.logInfo("Adding git submodule for documentation wiki...")
|
|
912
|
+
yield* runNodeCommandEC(`git submodule add -b master ../${detectedProjectName}.wiki.git doc`)
|
|
816
913
|
|
|
817
|
-
|
|
818
|
-
|
|
914
|
+
yield* Effect.logInfo("Committing wiki submodule addition...")
|
|
915
|
+
yield* runNodeCommandEC("git add . && git commit -am 'Add doc submodule'")
|
|
819
916
|
|
|
820
|
-
|
|
821
|
-
}
|
|
822
|
-
default: {
|
|
823
|
-
return yield* Effect.fail(`Unknown wiki action: ${action}. Available actions: sync, update`)
|
|
824
|
-
}
|
|
825
|
-
}
|
|
917
|
+
return yield* Effect.logInfo("Wiki submodule initialized successfully")
|
|
826
918
|
})
|
|
827
919
|
)
|
|
828
|
-
.pipe(Command.withDescription(
|
|
829
|
-
`Manage the documentation wiki git submodule.
|
|
830
|
-
|
|
831
|
-
Available actions:
|
|
832
|
-
- sync: Initialize and update the documentation submodule (default)
|
|
833
|
-
- update: Pull latest changes from remote, commit and push changes within the submodule
|
|
834
|
-
- init-wiki: Set up the wiki submodule for the project (one-time setup)`
|
|
835
|
-
))
|
|
836
|
-
|
|
837
|
-
const DryRunOption = Options.boolean("dry-run").pipe(
|
|
838
|
-
Options.withDescription("Show what would be done without making changes")
|
|
839
|
-
)
|
|
840
|
-
|
|
841
|
-
const PruneStoreOption = Options.boolean("store-prune").pipe(
|
|
842
|
-
Options.withDescription("Prune the package manager store")
|
|
843
|
-
)
|
|
920
|
+
.pipe(Command.withDescription("Set up the wiki submodule for the project (one-time setup)"))
|
|
844
921
|
|
|
845
922
|
const nuke = Command
|
|
846
923
|
.make(
|
|
847
924
|
"nuke",
|
|
848
|
-
{
|
|
925
|
+
{
|
|
926
|
+
dryRun: Options.boolean("dry-run").pipe(
|
|
927
|
+
Options.withDescription("Show what would be done without making changes")
|
|
928
|
+
),
|
|
929
|
+
storePrune: Options.boolean("store-prune").pipe(
|
|
930
|
+
Options.withDescription("Prune the package manager store")
|
|
931
|
+
)
|
|
932
|
+
},
|
|
849
933
|
Effect.fn("effa-cli.nuke")(function*({ dryRun, storePrune }) {
|
|
850
934
|
yield* Effect.logInfo(dryRun ? "Performing dry run cleanup..." : "Performing nuclear cleanup...")
|
|
851
935
|
|
|
@@ -883,6 +967,7 @@ Available actions:
|
|
|
883
967
|
packagejson,
|
|
884
968
|
packagejsonPackages,
|
|
885
969
|
wiki,
|
|
970
|
+
initWiki,
|
|
886
971
|
nuke
|
|
887
972
|
])),
|
|
888
973
|
{
|