yargs-file-commands 1.1.1 → 1.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.
Files changed (39) hide show
  1. package/README.md +23 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/fileCommands.d.ts +2 -0
  6. package/dist/lib/fileCommands.js +9 -1
  7. package/dist/lib/fileCommands.js.map +1 -1
  8. package/dist/lib/validatePositionals.d.ts +26 -0
  9. package/dist/lib/validatePositionals.js +104 -0
  10. package/dist/lib/validatePositionals.js.map +1 -0
  11. package/dist/tsconfig.tsbuildinfo +1 -1
  12. package/package.json +1 -9
  13. package/dist/lib/buildSegmentTree.test.d.ts +0 -1
  14. package/dist/lib/buildSegmentTree.test.js +0 -323
  15. package/dist/lib/buildSegmentTree.test.js.map +0 -1
  16. package/dist/lib/fileCommands.test.d.ts +0 -1
  17. package/dist/lib/fileCommands.test.js +0 -113
  18. package/dist/lib/fileCommands.test.js.map +0 -1
  19. package/dist/lib/fixtures/commands/$default.d.ts +0 -2
  20. package/dist/lib/fixtures/commands/$default.js +0 -5
  21. package/dist/lib/fixtures/commands/$default.js.map +0 -1
  22. package/dist/lib/fixtures/commands/create.d.ts +0 -3
  23. package/dist/lib/fixtures/commands/create.js +0 -6
  24. package/dist/lib/fixtures/commands/create.js.map +0 -1
  25. package/dist/lib/fixtures/commands/db/health.d.ts +0 -4
  26. package/dist/lib/fixtures/commands/db/health.js +0 -6
  27. package/dist/lib/fixtures/commands/db/health.js.map +0 -1
  28. package/dist/lib/fixtures/commands/db/migration/command.d.ts +0 -10
  29. package/dist/lib/fixtures/commands/db/migration/command.js +0 -9
  30. package/dist/lib/fixtures/commands/db/migration/command.js.map +0 -1
  31. package/dist/lib/importCommand.test.d.ts +0 -1
  32. package/dist/lib/importCommand.test.js +0 -165
  33. package/dist/lib/importCommand.test.js.map +0 -1
  34. package/dist/lib/scanDirectory.test.d.ts +0 -1
  35. package/dist/lib/scanDirectory.test.js +0 -169
  36. package/dist/lib/scanDirectory.test.js.map +0 -1
  37. package/dist/lib/segmentPath.test.d.ts +0 -1
  38. package/dist/lib/segmentPath.test.js +0 -33
  39. package/dist/lib/segmentPath.test.js.map +0 -1
@@ -1,165 +0,0 @@
1
- import { mkdir, rm, writeFile } from 'node:fs/promises';
2
- import { tmpdir } from 'node:os';
3
- import path from 'node:path';
4
- import { describe, expect, it, vi } from 'vitest';
5
- import { importCommandFromFile } from './importCommand.js';
6
- // get __dirname in ESM style
7
- const __dirname = path.dirname(new URL(import.meta.url).pathname);
8
- describe('importCommandFromFile', () => {
9
- it('should import command module correctly', async () => {
10
- const filePath = path.join(__dirname, 'fixtures', 'commands', 'db', 'health.ts');
11
- const command = await importCommandFromFile(filePath, 'health', {
12
- logLevel: 'info',
13
- });
14
- expect(command.describe).toBe('Database health check');
15
- });
16
- it('should handle non-existent files', async () => {
17
- const filePath = path.join(__dirname, 'fixtures', 'commands', 'non-existent.ts');
18
- await expect(importCommandFromFile(filePath, 'non-existent', {
19
- logLevel: 'info',
20
- })).rejects.toThrow(/Cannot import command from non-existent file path/);
21
- });
22
- it('should handle explicit command names', async () => {
23
- const filePath = path.join(__dirname, 'fixtures', 'commands', 'create.ts');
24
- const command = await importCommandFromFile(filePath, 'create', {
25
- logLevel: 'info',
26
- });
27
- expect(command.command).toBe('create [name]');
28
- expect(command.describe).toBe('Create something with a name');
29
- });
30
- it('should handle default commands', async () => {
31
- const filePath = path.join(__dirname, 'fixtures', 'commands', '$default.ts');
32
- const command = await importCommandFromFile(filePath, '$default', {
33
- logLevel: 'info',
34
- });
35
- expect(command.command).toBe('$0');
36
- expect(command.describe).toBe('Default command');
37
- });
38
- it('should handle CommandModule export style', async () => {
39
- // Create a temporary command file with CommandModule export
40
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
41
- await mkdir(tempDir, { recursive: true });
42
- const filePath = path.resolve(path.join(tempDir, 'cmd.js')); // Use .js and ensure absolute path
43
- try {
44
- await writeFile(filePath, `export const command = {
45
- command: 'testcmd',
46
- describe: 'Test command',
47
- handler: async () => {}
48
- };`);
49
- const command = await importCommandFromFile(filePath, 'testcmd', {
50
- logLevel: 'info',
51
- });
52
- expect(command.command).toBe('testcmd');
53
- expect(command.describe).toBe('Test command');
54
- expect(command.handler).toBeDefined();
55
- }
56
- finally {
57
- await rm(tempDir, { recursive: true, force: true });
58
- }
59
- });
60
- it('should handle CommandModule export with default command name', async () => {
61
- // Create a temporary command file with CommandModule export for default
62
- // Note: Using a simpler filename to avoid potential issues with $ character in file URLs
63
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
64
- await mkdir(tempDir, { recursive: true });
65
- const filePath = path.resolve(path.join(tempDir, 'default-cmd.js')); // Use simpler name
66
- try {
67
- await writeFile(filePath, `export const command = {
68
- command: '$0',
69
- describe: 'Default test',
70
- handler: async () => {}
71
- };`);
72
- // Verify file exists
73
- const fs = await import('node:fs');
74
- if (!fs.existsSync(filePath)) {
75
- throw new Error(`File was not created at ${filePath}`);
76
- }
77
- const command = await importCommandFromFile(filePath, '$default', {
78
- logLevel: 'info',
79
- });
80
- expect(command.command).toBe('$0');
81
- expect(command.describe).toBe('Default test');
82
- }
83
- finally {
84
- await rm(tempDir, { recursive: true, force: true });
85
- }
86
- });
87
- it('should throw error for unsupported exports', async () => {
88
- // Create a temporary command file with unsupported exports
89
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
90
- await mkdir(tempDir, { recursive: true });
91
- const filePath = path.resolve(path.join(tempDir, 'cmd.js')); // Use .js and ensure absolute path
92
- try {
93
- await writeFile(filePath, `export const describe = 'Test';
94
- export const handler = async () => {};
95
- export const unsupportedExport = 'should error';
96
- export const anotherBadExport = 123;`);
97
- // Verify file was written
98
- const fs = await import('node:fs');
99
- if (!fs.existsSync(filePath)) {
100
- throw new Error(`File was not created at ${filePath}`);
101
- }
102
- await expect(importCommandFromFile(filePath, 'cmd', {
103
- logLevel: 'info',
104
- })).rejects.toThrow(/has some unsupported exports, probably a misspelling/);
105
- }
106
- finally {
107
- await rm(tempDir, { recursive: true, force: true });
108
- }
109
- });
110
- it('should create null handler when handler is not provided', async () => {
111
- // Create a temporary command file without handler
112
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
113
- await mkdir(tempDir, { recursive: true });
114
- const filePath = path.resolve(path.join(tempDir, 'cmd.js')); // Use .js and ensure absolute path
115
- try {
116
- await writeFile(filePath, `export const describe = 'Test without handler';
117
- export const command = 'test';`);
118
- const command = await importCommandFromFile(filePath, 'cmd', {
119
- logLevel: 'info',
120
- });
121
- expect(command.handler).toBeDefined();
122
- expect(typeof command.handler).toBe('function');
123
- }
124
- finally {
125
- await rm(tempDir, { recursive: true, force: true });
126
- }
127
- });
128
- it('should handle command with aliases', async () => {
129
- const filePath = path.join(__dirname, 'fixtures', 'commands', 'db', 'health.ts');
130
- const command = await importCommandFromFile(filePath, 'health', {
131
- logLevel: 'info',
132
- });
133
- // Health command doesn't have aliases, but let's verify the structure supports it
134
- expect(command).toBeDefined();
135
- expect(command.describe).toBe('Database health check');
136
- });
137
- it('should use filename as command name when not provided', async () => {
138
- // Create a temporary command file without explicit command name
139
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
140
- await mkdir(tempDir, { recursive: true });
141
- const filePath = path.resolve(path.join(tempDir, 'mycommand.js')); // Use .js and ensure absolute path
142
- try {
143
- await writeFile(filePath, `export const describe = 'My command';
144
- export const handler = async () => {};`);
145
- const command = await importCommandFromFile(filePath, 'mycommand', {
146
- logLevel: 'info',
147
- });
148
- expect(command.command).toBe('mycommand');
149
- expect(command.describe).toBe('My command');
150
- }
151
- finally {
152
- await rm(tempDir, { recursive: true, force: true });
153
- }
154
- });
155
- it('should handle debug log level', async () => {
156
- const consoleSpy = vi.spyOn(console, 'debug').mockImplementation(() => { });
157
- const filePath = path.join(__dirname, 'fixtures', 'commands', 'create.ts');
158
- await importCommandFromFile(filePath, 'create', {
159
- logLevel: 'debug',
160
- });
161
- expect(consoleSpy).toHaveBeenCalled();
162
- consoleSpy.mockRestore();
163
- });
164
- });
165
- //# sourceMappingURL=importCommand.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"importCommand.test.js","sourceRoot":"","sources":["../../src/lib/importCommand.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,6BAA6B;AAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;AAElE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC;IACtC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC9D,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAAA,CACxD,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC;QACjF,MAAM,MAAM,CACV,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE;YAC9C,QAAQ,EAAE,MAAM;SACjB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,mDAAmD,CAAC,CAAC;IAAA,CACxE,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC9D,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAAA,CAC/D,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAC7E,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE;YAChE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAAA,CAClD,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE,CAAC;QACzD,4DAA4D;QAC5D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAEhG,IAAI,CAAC;YACH,MAAM,SAAS,CACb,QAAQ,EACR;;;;WAIG,CACJ,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,SAAS,EAAE;gBAC/D,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QACxC,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE,CAAC;QAC7E,wEAAwE;QACxE,yFAAyF;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,mBAAmB;QAExF,IAAI,CAAC;YACH,MAAM,SAAS,CACb,QAAQ,EACR;;;;WAIG,CACJ,CAAC;YAEF,qBAAqB;YACrB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,UAAU,EAAE;gBAChE,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE,CAAC;QAC3D,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAEhG,IAAI,CAAC;YACH,MAAM,SAAS,CACb,QAAQ,EACR;;;qCAG6B,CAC9B,CAAC;YAEF,0BAA0B;YAC1B,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;YACzD,CAAC;YAED,MAAM,MAAM,CACV,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACrC,QAAQ,EAAE,MAAM;aACjB,CAAC,CACH,CAAC,OAAO,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QAC5E,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE,CAAC;QACxE,kDAAkD;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAEhG,IAAI,CAAC;YACH,MAAM,SAAS,CACb,QAAQ,EACR;+BACuB,CACxB,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,KAAK,EAAE;gBAC3D,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,CAAC,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC9D,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,kFAAkF;QAClF,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAAA,CACxD,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE,CAAC;QACtE,gEAAgE;QAChE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,mCAAmC;QAEtG,IAAI,CAAC;YACH,MAAM,SAAS,CACb,QAAQ,EACR;uCAC+B,CAChC,CAAC;YAEF,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,WAAW,EAAE;gBACjE,QAAQ,EAAE,MAAM;aACjB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC1C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9C,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IAAA,CACF,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE,CAAC;QAC9C,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAC3E,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE;YAC9C,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAEtC,UAAU,CAAC,WAAW,EAAE,CAAC;IAAA,CAC1B,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,169 +0,0 @@
1
- import { mkdir, rm, writeFile } from 'node:fs/promises';
2
- import { tmpdir } from 'node:os';
3
- import path from 'node:path';
4
- import { fileURLToPath } from 'node:url';
5
- import { describe, expect, it, vi } from 'vitest';
6
- import { scanDirectory } from '../lib/scanDirectory.js';
7
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
- describe('scanDirectory', () => {
9
- it('should find all command files in directory', async () => {
10
- const commandsDir = path.join(__dirname, 'fixtures', 'commands');
11
- console.log('Scan Directory: ', commandsDir);
12
- const files = await scanDirectory(commandsDir, commandsDir, {
13
- extensions: ['.ts'],
14
- logLevel: 'debug',
15
- });
16
- expect(files.length).toBe(4);
17
- expect(files.some((f) => f.includes('health.ts'))).toBe(true);
18
- expect(files.some((f) => f.includes('command.ts'))).toBe(true);
19
- });
20
- it('should respect ignore patterns', async () => {
21
- const commandsDir = path.join(__dirname, 'fixtures', 'commands');
22
- console.log('Scan Directory: ', commandsDir);
23
- const files = await scanDirectory(commandsDir, commandsDir, {
24
- extensions: ['.ts'],
25
- ignorePatterns: [/health/, /\.d\.ts$/],
26
- logLevel: 'debug',
27
- });
28
- expect(files.length).toBe(3);
29
- expect(files.some((f) => f.includes('command.ts'))).toBe(true);
30
- expect(files.some((f) => f.includes('health.ts'))).toBe(false);
31
- });
32
- it('should handle non-existent directories', async () => {
33
- const nonExistentDir = path.join(__dirname, 'fixtures', 'non-existent');
34
- await expect(scanDirectory(nonExistentDir, nonExistentDir, {
35
- extensions: ['.ts'],
36
- logLevel: 'debug',
37
- })).rejects.toThrow(/ENOENT/);
38
- });
39
- it('should ignore files with non-matching extensions', async () => {
40
- // Create a temporary directory with mixed file types
41
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
42
- await mkdir(tempDir, { recursive: true });
43
- try {
44
- // Create files with different extensions
45
- await writeFile(path.join(tempDir, 'valid.ts'), '// TS file');
46
- await writeFile(path.join(tempDir, 'invalid.js'), '// JS file');
47
- await writeFile(path.join(tempDir, 'invalid.txt'), '// TXT file');
48
- const consoleSpy = vi.spyOn(console, 'debug').mockImplementation(() => { });
49
- const files = await scanDirectory(tempDir, tempDir, {
50
- extensions: ['.ts'], // Only .ts files
51
- logLevel: 'debug',
52
- });
53
- // Should only find the .ts file
54
- expect(files.length).toBe(1);
55
- expect(files[0]).toContain('valid.ts');
56
- expect(files.some((f) => f.includes('invalid.js'))).toBe(false);
57
- expect(files.some((f) => f.includes('invalid.txt'))).toBe(false);
58
- // Should log extension mismatch
59
- const debugCalls = consoleSpy.mock.calls.map((call) => call[0]?.toString() || '');
60
- expect(debugCalls.some((call) => call.includes("doesn't match required extension"))).toBe(true);
61
- consoleSpy.mockRestore();
62
- }
63
- finally {
64
- await rm(tempDir, { recursive: true, force: true });
65
- }
66
- });
67
- it('should handle custom extensions', async () => {
68
- // Create a temporary directory with .js files
69
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
70
- await mkdir(tempDir, { recursive: true });
71
- try {
72
- await writeFile(path.join(tempDir, 'cmd.js'), '// JS file');
73
- await writeFile(path.join(tempDir, 'cmd.ts'), '// TS file');
74
- const files = await scanDirectory(tempDir, tempDir, {
75
- extensions: ['.js'], // Only .js files
76
- });
77
- expect(files.length).toBe(1);
78
- expect(files[0]).toContain('cmd.js');
79
- expect(files.some((f) => f.includes('cmd.ts'))).toBe(false);
80
- }
81
- finally {
82
- await rm(tempDir, { recursive: true, force: true });
83
- }
84
- });
85
- it('should handle multiple extensions', async () => {
86
- // Create a temporary directory with different file types
87
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
88
- await mkdir(tempDir, { recursive: true });
89
- try {
90
- await writeFile(path.join(tempDir, 'cmd1.js'), '// JS file');
91
- await writeFile(path.join(tempDir, 'cmd2.ts'), '// TS file');
92
- await writeFile(path.join(tempDir, 'cmd3.txt'), '// TXT file');
93
- const files = await scanDirectory(tempDir, tempDir, {
94
- extensions: ['.js', '.ts'], // Both JS and TS files
95
- // Note: Hidden files (starting with '.') are automatically ignored by system ignore patterns
96
- });
97
- // Should find exactly 2 files (cmd1.js and cmd2.ts)
98
- const jsFiles = files.filter((f) => f.includes('cmd1.js'));
99
- const tsFiles = files.filter((f) => f.includes('cmd2.ts'));
100
- const txtFiles = files.filter((f) => f.includes('cmd3.txt'));
101
- expect(jsFiles.length).toBe(1);
102
- expect(tsFiles.length).toBe(1);
103
- expect(txtFiles.length).toBe(0);
104
- // Verify we have at least our expected files (there might be hidden files)
105
- expect(files.some((f) => f.includes('cmd1.js'))).toBe(true);
106
- expect(files.some((f) => f.includes('cmd2.ts'))).toBe(true);
107
- expect(files.some((f) => f.includes('cmd3.txt'))).toBe(false);
108
- }
109
- finally {
110
- await rm(tempDir, { recursive: true, force: true });
111
- }
112
- });
113
- it('should handle nested directories with extension filtering', async () => {
114
- // Create a temporary directory structure
115
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
116
- const subDir = path.join(tempDir, 'subdir');
117
- await mkdir(subDir, { recursive: true });
118
- try {
119
- await writeFile(path.join(tempDir, 'root.ts'), '// Root TS file');
120
- await writeFile(path.join(tempDir, 'root.js'), '// Root JS file');
121
- await writeFile(path.join(subDir, 'nested.ts'), '// Nested TS file');
122
- await writeFile(path.join(subDir, 'nested.js'), '// Nested JS file');
123
- const files = await scanDirectory(tempDir, tempDir, {
124
- extensions: ['.ts'],
125
- // Note: Hidden files (starting with '.') are automatically ignored by system ignore patterns
126
- });
127
- // Should find exactly 2 files (root.ts and nested.ts)
128
- const rootFiles = files.filter((f) => f.includes('root.ts'));
129
- const nestedFiles = files.filter((f) => f.includes('nested.ts'));
130
- const jsFiles = files.filter((f) => f.includes('.js'));
131
- expect(rootFiles.length).toBe(1);
132
- expect(nestedFiles.length).toBe(1);
133
- expect(jsFiles.length).toBe(0);
134
- expect(files.some((f) => f.includes('root.ts'))).toBe(true);
135
- expect(files.some((f) => f.includes('nested.ts'))).toBe(true);
136
- }
137
- finally {
138
- await rm(tempDir, { recursive: true, force: true });
139
- }
140
- });
141
- it('should use default options when not provided', async () => {
142
- const commandsDir = path.join(__dirname, 'fixtures', 'commands');
143
- const files = await scanDirectory(commandsDir, commandsDir);
144
- // Should use default extensions (.js, .ts) and find files
145
- expect(files.length).toBeGreaterThan(0);
146
- });
147
- it('should handle empty directories', async () => {
148
- const tempDir = path.join(tmpdir(), `yargs-test-${Date.now()}`);
149
- await mkdir(tempDir, { recursive: true });
150
- try {
151
- const files = await scanDirectory(tempDir, tempDir, {
152
- extensions: ['.ts'],
153
- // Note: Hidden files (starting with '.') are automatically ignored by system ignore patterns
154
- });
155
- expect(files.length).toBe(0);
156
- }
157
- finally {
158
- await rm(tempDir, { recursive: true, force: true });
159
- }
160
- });
161
- it('should handle error with proper message formatting', async () => {
162
- const nonExistentDir = path.join(__dirname, 'fixtures', 'non-existent');
163
- await expect(scanDirectory(nonExistentDir, nonExistentDir, {
164
- extensions: ['.ts'],
165
- logPrefix: ' ',
166
- })).rejects.toThrow(/Failed to scan directory/);
167
- });
168
- });
169
- //# sourceMappingURL=scanDirectory.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scanDirectory.test.js","sourceRoot":"","sources":["../../src/lib/scanDirectory.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,33 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { segmentPath } from './segmentPath.js';
3
- describe('segmentPath', () => {
4
- it('should segment a path correctly', () => {
5
- const fullPath = '/Users/username/Coding/Personal/yargs-file-commands/packages/yargs-file-commands/src/lib/segmentPath.ts';
6
- const baseDir = '/Users/username/Coding/Personal/yargs-file-commands/';
7
- const expected = ['packages', 'yargs-file-commands', 'src', 'lib', 'segmentPath', 'ts'];
8
- const result = segmentPath(fullPath, baseDir);
9
- expect(result).toEqual(expected);
10
- });
11
- it('should handle paths with periods correctly', () => {
12
- const fullPath = '/Users/username/Coding/Personal/yargs-file-commands/packages/yargs-file-commands/src/lib/segmentPath.test.ts';
13
- const baseDir = '/Users/username/Coding/Personal/yargs-file-commands/';
14
- const expected = ['packages', 'yargs-file-commands', 'src', 'lib', 'segmentPath', 'test', 'ts'];
15
- const result = segmentPath(fullPath, baseDir);
16
- expect(result).toEqual(expected);
17
- });
18
- it('should filter out "command" segments', () => {
19
- const fullPath = '/Users/username/Coding/Personal/yargs-file-commands/packages/yargs-file-commands/src/lib/commandPath.ts';
20
- const baseDir = '/Users/username/Coding/Personal/yargs-file-commands/';
21
- const expected = ['packages', 'yargs-file-commands', 'src', 'lib', 'commandPath', 'ts'];
22
- const result = segmentPath(fullPath, baseDir);
23
- expect(result).toEqual(expected);
24
- });
25
- it('should handle empty segments correctly', () => {
26
- const fullPath = '/Users/username/Coding/Personal/yargs-file-commands/packages/yargs-file-commands/src/lib/.hiddenFile';
27
- const baseDir = '/Users/username/Coding/Personal/yargs-file-commands/';
28
- const expected = ['packages', 'yargs-file-commands', 'src', 'lib', 'hiddenFile'];
29
- const result = segmentPath(fullPath, baseDir);
30
- expect(result).toEqual(expected);
31
- });
32
- });
33
- //# sourceMappingURL=segmentPath.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"segmentPath.test.js","sourceRoot":"","sources":["../../src/lib/segmentPath.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC;IAC5B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC;QAC1C,MAAM,QAAQ,GACZ,yGAAyG,CAAC;QAC5G,MAAM,OAAO,GAAG,sDAAsD,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAA,CAClC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE,CAAC;QACrD,MAAM,QAAQ,GACZ,8GAA8G,CAAC;QACjH,MAAM,OAAO,GAAG,sDAAsD,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAA,CAClC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC;QAC/C,MAAM,QAAQ,GACZ,yGAAyG,CAAC;QAC5G,MAAM,OAAO,GAAG,sDAAsD,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAA,CAClC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE,CAAC;QACjD,MAAM,QAAQ,GACZ,sGAAsG,CAAC;QACzG,MAAM,OAAO,GAAG,sDAAsD,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACjF,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAA,CAClC,CAAC,CAAC;AAAA,CACJ,CAAC,CAAC"}