@camaradesuk/git-worktree-tools 1.0.3

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.
Files changed (119) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +259 -0
  3. package/dist/cli/cleanpr.d.ts +13 -0
  4. package/dist/cli/cleanpr.d.ts.map +1 -0
  5. package/dist/cli/cleanpr.js +441 -0
  6. package/dist/cli/cleanpr.js.map +1 -0
  7. package/dist/cli/lswt.d.ts +11 -0
  8. package/dist/cli/lswt.d.ts.map +1 -0
  9. package/dist/cli/lswt.js +313 -0
  10. package/dist/cli/lswt.js.map +1 -0
  11. package/dist/cli/newpr.d.ts +11 -0
  12. package/dist/cli/newpr.d.ts.map +1 -0
  13. package/dist/cli/newpr.js +888 -0
  14. package/dist/cli/newpr.js.map +1 -0
  15. package/dist/cli/wtlink.d.ts +15 -0
  16. package/dist/cli/wtlink.d.ts.map +1 -0
  17. package/dist/cli/wtlink.js +124 -0
  18. package/dist/cli/wtlink.js.map +1 -0
  19. package/dist/e2e/cli.e2e.test.d.ts +2 -0
  20. package/dist/e2e/cli.e2e.test.d.ts.map +1 -0
  21. package/dist/e2e/cli.e2e.test.js +215 -0
  22. package/dist/e2e/cli.e2e.test.js.map +1 -0
  23. package/dist/index.d.ts +20 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/integration/git.integration.test.d.ts +2 -0
  28. package/dist/integration/git.integration.test.d.ts.map +1 -0
  29. package/dist/integration/git.integration.test.js +333 -0
  30. package/dist/integration/git.integration.test.js.map +1 -0
  31. package/dist/lib/colors.d.ts +59 -0
  32. package/dist/lib/colors.d.ts.map +1 -0
  33. package/dist/lib/colors.js +145 -0
  34. package/dist/lib/colors.js.map +1 -0
  35. package/dist/lib/colors.test.d.ts +2 -0
  36. package/dist/lib/colors.test.d.ts.map +1 -0
  37. package/dist/lib/colors.test.js +69 -0
  38. package/dist/lib/colors.test.js.map +1 -0
  39. package/dist/lib/config.d.ts +58 -0
  40. package/dist/lib/config.d.ts.map +1 -0
  41. package/dist/lib/config.js +91 -0
  42. package/dist/lib/config.js.map +1 -0
  43. package/dist/lib/config.test.d.ts +2 -0
  44. package/dist/lib/config.test.d.ts.map +1 -0
  45. package/dist/lib/config.test.js +84 -0
  46. package/dist/lib/config.test.js.map +1 -0
  47. package/dist/lib/constants.d.ts +37 -0
  48. package/dist/lib/constants.d.ts.map +1 -0
  49. package/dist/lib/constants.js +37 -0
  50. package/dist/lib/constants.js.map +1 -0
  51. package/dist/lib/errors.d.ts +88 -0
  52. package/dist/lib/errors.d.ts.map +1 -0
  53. package/dist/lib/errors.js +112 -0
  54. package/dist/lib/errors.js.map +1 -0
  55. package/dist/lib/errors.test.d.ts +2 -0
  56. package/dist/lib/errors.test.d.ts.map +1 -0
  57. package/dist/lib/errors.test.js +117 -0
  58. package/dist/lib/errors.test.js.map +1 -0
  59. package/dist/lib/git.d.ts +224 -0
  60. package/dist/lib/git.d.ts.map +1 -0
  61. package/dist/lib/git.js +524 -0
  62. package/dist/lib/git.js.map +1 -0
  63. package/dist/lib/git.test.d.ts +2 -0
  64. package/dist/lib/git.test.d.ts.map +1 -0
  65. package/dist/lib/git.test.js +402 -0
  66. package/dist/lib/git.test.js.map +1 -0
  67. package/dist/lib/github.d.ts +82 -0
  68. package/dist/lib/github.d.ts.map +1 -0
  69. package/dist/lib/github.js +254 -0
  70. package/dist/lib/github.js.map +1 -0
  71. package/dist/lib/github.test.d.ts +2 -0
  72. package/dist/lib/github.test.d.ts.map +1 -0
  73. package/dist/lib/github.test.js +258 -0
  74. package/dist/lib/github.test.js.map +1 -0
  75. package/dist/lib/prompts.d.ts +39 -0
  76. package/dist/lib/prompts.d.ts.map +1 -0
  77. package/dist/lib/prompts.js +213 -0
  78. package/dist/lib/prompts.js.map +1 -0
  79. package/dist/lib/prompts.test.d.ts +2 -0
  80. package/dist/lib/prompts.test.d.ts.map +1 -0
  81. package/dist/lib/prompts.test.js +250 -0
  82. package/dist/lib/prompts.test.js.map +1 -0
  83. package/dist/lib/state-detection.d.ts +65 -0
  84. package/dist/lib/state-detection.d.ts.map +1 -0
  85. package/dist/lib/state-detection.js +186 -0
  86. package/dist/lib/state-detection.js.map +1 -0
  87. package/dist/lib/state-detection.test.d.ts +2 -0
  88. package/dist/lib/state-detection.test.d.ts.map +1 -0
  89. package/dist/lib/state-detection.test.js +164 -0
  90. package/dist/lib/state-detection.test.js.map +1 -0
  91. package/dist/lib/wtlink/index.d.ts +5 -0
  92. package/dist/lib/wtlink/index.d.ts.map +1 -0
  93. package/dist/lib/wtlink/index.js +7 -0
  94. package/dist/lib/wtlink/index.js.map +1 -0
  95. package/dist/lib/wtlink/link-configs.d.ts +10 -0
  96. package/dist/lib/wtlink/link-configs.d.ts.map +1 -0
  97. package/dist/lib/wtlink/link-configs.js +411 -0
  98. package/dist/lib/wtlink/link-configs.js.map +1 -0
  99. package/dist/lib/wtlink/link-configs.test.d.ts +2 -0
  100. package/dist/lib/wtlink/link-configs.test.d.ts.map +1 -0
  101. package/dist/lib/wtlink/link-configs.test.js +179 -0
  102. package/dist/lib/wtlink/link-configs.test.js.map +1 -0
  103. package/dist/lib/wtlink/main-menu.d.ts +2 -0
  104. package/dist/lib/wtlink/main-menu.d.ts.map +1 -0
  105. package/dist/lib/wtlink/main-menu.js +149 -0
  106. package/dist/lib/wtlink/main-menu.js.map +1 -0
  107. package/dist/lib/wtlink/manage-manifest.d.ts +9 -0
  108. package/dist/lib/wtlink/manage-manifest.d.ts.map +1 -0
  109. package/dist/lib/wtlink/manage-manifest.js +1262 -0
  110. package/dist/lib/wtlink/manage-manifest.js.map +1 -0
  111. package/dist/lib/wtlink/validate-manifest.d.ts +6 -0
  112. package/dist/lib/wtlink/validate-manifest.d.ts.map +1 -0
  113. package/dist/lib/wtlink/validate-manifest.js +51 -0
  114. package/dist/lib/wtlink/validate-manifest.js.map +1 -0
  115. package/dist/lib/wtlink/validate-manifest.test.d.ts +2 -0
  116. package/dist/lib/wtlink/validate-manifest.test.d.ts.map +1 -0
  117. package/dist/lib/wtlink/validate-manifest.test.js +115 -0
  118. package/dist/lib/wtlink/validate-manifest.test.js.map +1 -0
  119. package/package.json +84 -0
@@ -0,0 +1,149 @@
1
+ import inquirer from 'inquirer';
2
+ import * as colors from '../colors.js';
3
+ import { DEFAULT_MANIFEST_FILE } from '../constants.js';
4
+ import * as manage from './manage-manifest.js';
5
+ import * as link from './link-configs.js';
6
+ import * as validate from './validate-manifest.js';
7
+ export async function showMainMenu() {
8
+ let running = true;
9
+ while (running) {
10
+ console.clear();
11
+ console.log(colors.cyan(colors.bold('\n╔═══════════════════════════════════════════════════════════════════════╗')));
12
+ console.log(colors.cyan(colors.bold('║')) +
13
+ colors.bold(' Worktree Config Link Manager ') +
14
+ colors.cyan(colors.bold('║')));
15
+ console.log(colors.cyan(colors.bold('╚═══════════════════════════════════════════════════════════════════════╝\n')));
16
+ const { action } = await inquirer.prompt([
17
+ {
18
+ type: 'list',
19
+ name: 'action',
20
+ message: 'What would you like to do?',
21
+ choices: [
22
+ {
23
+ name: 'Manage config manifest (discover and select files)',
24
+ value: 'manage',
25
+ },
26
+ {
27
+ name: 'Link configs (create links from manifest)',
28
+ value: 'link',
29
+ },
30
+ {
31
+ name: 'Validate manifest (check for issues)',
32
+ value: 'validate',
33
+ },
34
+ new inquirer.Separator(),
35
+ {
36
+ name: 'Help',
37
+ value: 'help',
38
+ },
39
+ {
40
+ name: 'Exit',
41
+ value: 'exit',
42
+ },
43
+ ],
44
+ },
45
+ ]);
46
+ try {
47
+ switch (action) {
48
+ case 'manage':
49
+ await runManage();
50
+ break;
51
+ case 'link':
52
+ await runLink();
53
+ break;
54
+ case 'validate':
55
+ await runValidate();
56
+ break;
57
+ case 'help':
58
+ showHelp();
59
+ await pressAnyKey();
60
+ break;
61
+ case 'exit':
62
+ running = false;
63
+ console.log(colors.green('\nGoodbye!\n'));
64
+ break;
65
+ }
66
+ }
67
+ catch (error) {
68
+ const errorMessage = error instanceof Error ? error.message : String(error);
69
+ console.error(colors.red('\nError:'), errorMessage);
70
+ await pressAnyKey();
71
+ }
72
+ }
73
+ }
74
+ async function runManage() {
75
+ console.log('\n');
76
+ await manage.run({
77
+ nonInteractive: false,
78
+ clean: false,
79
+ dryRun: false,
80
+ manifestFile: DEFAULT_MANIFEST_FILE,
81
+ backup: false,
82
+ });
83
+ // Ask if user wants to link after managing
84
+ const { shouldLink } = await inquirer.prompt([
85
+ {
86
+ type: 'confirm',
87
+ name: 'shouldLink',
88
+ message: 'Would you like to link configs now?',
89
+ default: true,
90
+ },
91
+ ]);
92
+ if (shouldLink) {
93
+ await runLink();
94
+ }
95
+ else {
96
+ await pressAnyKey();
97
+ }
98
+ }
99
+ async function runLink() {
100
+ console.log('\n');
101
+ await link.run({
102
+ manifestFile: DEFAULT_MANIFEST_FILE,
103
+ dryRun: false,
104
+ type: 'hard',
105
+ yes: false,
106
+ });
107
+ await pressAnyKey();
108
+ }
109
+ async function runValidate() {
110
+ console.log('\n');
111
+ validate.run({
112
+ manifestFile: DEFAULT_MANIFEST_FILE,
113
+ });
114
+ await pressAnyKey();
115
+ }
116
+ function showHelp() {
117
+ console.clear();
118
+ console.log(colors.cyan(colors.bold('\n╔═══════════════════════════════════════════════════════════════════════╗')));
119
+ console.log(colors.cyan(colors.bold('║')) +
120
+ colors.bold(' wtlink Help ') +
121
+ colors.cyan(colors.bold('║')));
122
+ console.log(colors.cyan(colors.bold('╚═══════════════════════════════════════════════════════════════════════╝\n')));
123
+ console.log(colors.bold('About wtlink:'));
124
+ console.log(' wtlink helps you share configuration files between git worktrees');
125
+ console.log(' by creating hard links or symbolic links.\n');
126
+ console.log(colors.bold('Common Workflow:'));
127
+ console.log(' 1. ' + colors.green('Manage') + ' - Discover git-ignored files and select which to link');
128
+ console.log(' 2. ' + colors.blue('Link') + ' - Create links from source worktree to destination\n');
129
+ console.log(colors.bold('Commands:'));
130
+ console.log(' ' + colors.green('wtlink') + ' Show this interactive menu');
131
+ console.log(' ' + colors.green('wtlink manage') + ' Manage manifest interactively');
132
+ console.log(' ' + colors.green('wtlink link') + ' Link configs between worktrees');
133
+ console.log(' ' + colors.green('wtlink validate') + ' Validate manifest file\n');
134
+ console.log(colors.bold('Manifest File:'));
135
+ console.log(` Default location: ${colors.cyan('.wtlinkrc')} (in repository root)`);
136
+ console.log(` The manifest lists which files should be linked\n`);
137
+ console.log(colors.bold('Documentation:'));
138
+ console.log(' For full documentation, see README.md\n');
139
+ }
140
+ async function pressAnyKey() {
141
+ await inquirer.prompt([
142
+ {
143
+ type: 'input',
144
+ name: 'continue',
145
+ message: 'Press Enter to continue...',
146
+ },
147
+ ]);
148
+ }
149
+ //# sourceMappingURL=main-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main-menu.js","sourceRoot":"","sources":["../../../src/lib/wtlink/main-menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface ManageArgv {
2
+ nonInteractive: boolean;
3
+ clean: boolean;
4
+ dryRun: boolean;
5
+ manifestFile: string;
6
+ backup: boolean;
7
+ }
8
+ export declare function run(argv: ManageArgv): Promise<void>;
9
+ //# sourceMappingURL=manage-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage-manifest.d.ts","sourceRoot":"","sources":["../../../src/lib/wtlink/manage-manifest.ts"],"names":[],"mappings":"AA8CA,MAAM,WAAW,UAAU;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AA+zCD,wBAAsB,GAAG,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+LzD"}