faf-taf-git 2.0.4
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/.faf +126 -0
- package/.faf-dna +95 -0
- package/.fafignore +41 -0
- package/.taf +21 -0
- package/CHANGELOG.md +208 -0
- package/CLAUDE.md +30 -0
- package/CONTRIBUTING.md +286 -0
- package/LICENSE +21 -0
- package/README.md +496 -0
- package/action.yml +42 -0
- package/dist/bundle/index.js +36554 -0
- package/dist/cli.d.ts +31 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +380 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36560 -0
- package/dist/index.js.map +1 -0
- package/dist/licenses.txt +148 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +147 -0
- package/dist/main.js.map +1 -0
- package/dist/parsers/jest.d.ts +38 -0
- package/dist/parsers/jest.d.ts.map +1 -0
- package/dist/parsers/jest.js +87 -0
- package/dist/parsers/jest.js.map +1 -0
- package/dist/sourcemap-register.js +1 -0
- package/dist/taf-core.d.ts +12 -0
- package/dist/taf-core.d.ts.map +1 -0
- package/dist/taf-core.js +136 -0
- package/dist/taf-core.js.map +1 -0
- package/docs/RELEASE-NOTES.md +200 -0
- package/docs/USER-GUIDE.md +301 -0
- package/jest.config.js +13 -0
- package/package.json +47 -0
- package/project.faf +259 -0
- package/src/cli.ts +393 -0
- package/src/index.ts +131 -0
- package/src/parsers/jest.ts +104 -0
- package/src/taf-core.ts +139 -0
- package/test-mcp.ts +83 -0
- package/test-standalone.ts +87 -0
- package/tests/jest-parser.test.ts +122 -0
- package/tests/wjttc-taf.test.ts +470 -0
- package/tsconfig.json +18 -0
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* faf-taf-git - Standalone CLI for TAF operations
|
|
4
|
+
*
|
|
5
|
+
* Platform-agnostic core that works in ANY CI/CD environment
|
|
6
|
+
* Can be used standalone or as a library by wrappers
|
|
7
|
+
*/
|
|
8
|
+
export interface CLIOptions {
|
|
9
|
+
command?: string;
|
|
10
|
+
autoCommit?: boolean;
|
|
11
|
+
commitMessage?: string;
|
|
12
|
+
cwd?: string;
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
logger?: (message: string) => void;
|
|
15
|
+
}
|
|
16
|
+
export interface CLIResult {
|
|
17
|
+
success: boolean;
|
|
18
|
+
testResults?: {
|
|
19
|
+
total: number;
|
|
20
|
+
passed: number;
|
|
21
|
+
failed: number;
|
|
22
|
+
result: string;
|
|
23
|
+
};
|
|
24
|
+
tafUpdated: boolean;
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Main CLI function - platform-agnostic
|
|
29
|
+
* Can be called from GitHub Actions, GitLab CI, or standalone
|
|
30
|
+
*/
|
|
31
|
+
export declare function runTafGit(options?: CLIOptions): Promise<CLIResult>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/wolfejam/FAF/faf-taf-git/src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AASH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CAmM5E"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* faf-taf-git - Standalone CLI for TAF operations
|
|
5
|
+
*
|
|
6
|
+
* Platform-agnostic core that works in ANY CI/CD environment
|
|
7
|
+
* Can be used standalone or as a library by wrappers
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.runTafGit = runTafGit;
|
|
44
|
+
const exec = __importStar(require("@actions/exec"));
|
|
45
|
+
const fs = __importStar(require("fs"));
|
|
46
|
+
const os = __importStar(require("os"));
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const jest_1 = require("./parsers/jest");
|
|
49
|
+
const taf_core_1 = require("./taf-core");
|
|
50
|
+
/**
|
|
51
|
+
* Main CLI function - platform-agnostic
|
|
52
|
+
* Can be called from GitHub Actions, GitLab CI, or standalone
|
|
53
|
+
*/
|
|
54
|
+
async function runTafGit(options = {}) {
|
|
55
|
+
const { command = 'npm test', autoCommit = false, commitMessage = 'chore: update .taf with test results', cwd = process.cwd(), verbose = false, logger = console.log, } = options;
|
|
56
|
+
try {
|
|
57
|
+
if (verbose)
|
|
58
|
+
console.log(`Running test command: ${command}`);
|
|
59
|
+
// Run tests and capture output using @actions/exec
|
|
60
|
+
let output = '';
|
|
61
|
+
let exitCode = 0;
|
|
62
|
+
try {
|
|
63
|
+
// Parse command into executable and args
|
|
64
|
+
// For "npm test" -> ["npm", "test"]
|
|
65
|
+
const commandParts = command.split(' ');
|
|
66
|
+
const executable = commandParts[0];
|
|
67
|
+
const args = commandParts.slice(1);
|
|
68
|
+
const options = {
|
|
69
|
+
cwd,
|
|
70
|
+
silent: false, // Show output in logs
|
|
71
|
+
ignoreReturnCode: true // Don't throw on non-zero exit
|
|
72
|
+
};
|
|
73
|
+
// --- [START NUCLEAR CANARY] ---
|
|
74
|
+
// Use getExecOutput to capture stdout/stderr
|
|
75
|
+
const result = await exec.getExecOutput(executable, args, options);
|
|
76
|
+
// THE NUCLEAR CANARY: Write directly to disk, bypassing stdout/stderr streams
|
|
77
|
+
// Write to MULTIPLE locations to ensure we find it!
|
|
78
|
+
const canaryContent = [
|
|
79
|
+
`=========================================`,
|
|
80
|
+
`TAF DEBUG CANARY REPORT`,
|
|
81
|
+
`Timestamp: ${new Date().toISOString()}`,
|
|
82
|
+
`CWD: ${cwd}`,
|
|
83
|
+
`Process CWD: ${process.cwd()}`,
|
|
84
|
+
`=========================================`,
|
|
85
|
+
`Exit Code: ${result.exitCode}`,
|
|
86
|
+
`Stdout Length: ${result.stdout.length}`,
|
|
87
|
+
`Stderr Length: ${result.stderr.length}`,
|
|
88
|
+
`-----------------------------------------`,
|
|
89
|
+
`STDOUT PREVIEW (First 500 chars):`,
|
|
90
|
+
`${result.stdout.substring(0, 500)}`,
|
|
91
|
+
`-----------------------------------------`,
|
|
92
|
+
`STDERR PREVIEW (First 500 chars):`,
|
|
93
|
+
`${result.stderr.substring(0, 500)}`,
|
|
94
|
+
`=========================================`
|
|
95
|
+
].join('\n');
|
|
96
|
+
try {
|
|
97
|
+
// Try multiple locations!
|
|
98
|
+
const locations = [
|
|
99
|
+
path.join(cwd, 'TAF_DEBUG_CANARY.txt'), // Original cwd
|
|
100
|
+
path.join(process.cwd(), 'TAF_DEBUG_CANARY.txt'), // Process cwd
|
|
101
|
+
path.join(os.tmpdir(), 'TAF_DEBUG_CANARY.txt'), // OS temp directory
|
|
102
|
+
'TAF_DEBUG_CANARY.txt' // Current directory
|
|
103
|
+
];
|
|
104
|
+
let writeSuccess = false;
|
|
105
|
+
for (const loc of locations) {
|
|
106
|
+
try {
|
|
107
|
+
fs.writeFileSync(loc, canaryContent);
|
|
108
|
+
writeSuccess = true;
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
// Try next location
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!writeSuccess) {
|
|
115
|
+
throw new Error('CRITICAL: Failed to write canary to ANY location!');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (fsError) {
|
|
119
|
+
// If we can't write to disk, we are truly doomed
|
|
120
|
+
throw new Error(`CRITICAL: Failed to write canary file: ${fsError.message}`);
|
|
121
|
+
}
|
|
122
|
+
// Continue with original logic
|
|
123
|
+
exitCode = result.exitCode;
|
|
124
|
+
output = result.stdout + result.stderr;
|
|
125
|
+
// --- [END NUCLEAR CANARY] ---
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
exitCode = 1;
|
|
129
|
+
if (verbose) {
|
|
130
|
+
logger(`Test command failed with error: ${error.message}`);
|
|
131
|
+
logger(`Captured output length: ${output.length} bytes`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Debug: Write entire output to file for inspection
|
|
135
|
+
if (verbose) {
|
|
136
|
+
try {
|
|
137
|
+
const fs = require('fs');
|
|
138
|
+
const debugPath = path.join(os.tmpdir(), 'taf-debug-output.txt');
|
|
139
|
+
fs.writeFileSync(debugPath, output);
|
|
140
|
+
logger(`DEBUG: Wrote ${output.length} bytes to ${debugPath}`);
|
|
141
|
+
const lines = output.split('\n');
|
|
142
|
+
const testLine = lines.find(l => l.includes('Tests:'));
|
|
143
|
+
logger(`DEBUG: Output has ${lines.length} lines, Found "Tests:": ${testLine ? 'YES' : 'NO'}`);
|
|
144
|
+
if (testLine) {
|
|
145
|
+
logger(`DEBUG: Tests line: "${testLine}"`);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
logger(`DEBUG: Last 10 lines of output:`);
|
|
149
|
+
lines.slice(-10).forEach((line, i) => {
|
|
150
|
+
logger(` ${i}: ${line.substring(0, 100)}`);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
logger(`DEBUG: Error writing debug file: ${err}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Parse test output
|
|
159
|
+
const testResults = (0, jest_1.parseJestOutput)(output);
|
|
160
|
+
if (!testResults) {
|
|
161
|
+
if (verbose) {
|
|
162
|
+
logger(`DEBUG: Parser returned null`);
|
|
163
|
+
logger(`DEBUG: Output sample (first 500 chars): ${output.slice(0, 500)}`);
|
|
164
|
+
logger(`DEBUG: Output sample (last 500 chars): ${output.slice(-500)}`);
|
|
165
|
+
}
|
|
166
|
+
return {
|
|
167
|
+
success: false,
|
|
168
|
+
tafUpdated: false,
|
|
169
|
+
error: 'Could not parse test output. Ensure you are using Jest.',
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
if (verbose) {
|
|
173
|
+
logger(`Parsed results: ${testResults.passed}/${testResults.total} tests passing`);
|
|
174
|
+
}
|
|
175
|
+
// Check if .taf file exists
|
|
176
|
+
const tafPath = path.join(cwd, '.taf');
|
|
177
|
+
if (!fs.existsSync(tafPath)) {
|
|
178
|
+
return {
|
|
179
|
+
success: false,
|
|
180
|
+
testResults: {
|
|
181
|
+
total: testResults.total,
|
|
182
|
+
passed: testResults.passed,
|
|
183
|
+
failed: testResults.failed,
|
|
184
|
+
result: testResults.result,
|
|
185
|
+
},
|
|
186
|
+
tafUpdated: false,
|
|
187
|
+
error: 'No .taf file found. Run `faf taf init` to create one.',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// Update .taf file
|
|
191
|
+
const updated = await (0, taf_core_1.updateTafFile)(tafPath, testResults);
|
|
192
|
+
if (updated) {
|
|
193
|
+
if (verbose)
|
|
194
|
+
logger('✅ .taf file updated successfully');
|
|
195
|
+
// Commit changes if enabled
|
|
196
|
+
if (autoCommit) {
|
|
197
|
+
await commitTafUpdate(cwd, commitMessage, verbose, logger);
|
|
198
|
+
if (verbose)
|
|
199
|
+
logger('✅ Changes committed to git');
|
|
200
|
+
}
|
|
201
|
+
return {
|
|
202
|
+
success: true,
|
|
203
|
+
testResults: {
|
|
204
|
+
total: testResults.total,
|
|
205
|
+
passed: testResults.passed,
|
|
206
|
+
failed: testResults.failed,
|
|
207
|
+
result: testResults.result,
|
|
208
|
+
},
|
|
209
|
+
tafUpdated: true,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
return {
|
|
214
|
+
success: false,
|
|
215
|
+
testResults: {
|
|
216
|
+
total: testResults.total,
|
|
217
|
+
passed: testResults.passed,
|
|
218
|
+
failed: testResults.failed,
|
|
219
|
+
result: testResults.result,
|
|
220
|
+
},
|
|
221
|
+
tafUpdated: false,
|
|
222
|
+
error: '.taf file was not updated',
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
return {
|
|
228
|
+
success: false,
|
|
229
|
+
tafUpdated: false,
|
|
230
|
+
error: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Commit .taf file changes to git (platform-agnostic)
|
|
236
|
+
*/
|
|
237
|
+
async function commitTafUpdate(cwd, message, verbose, logger = console.log) {
|
|
238
|
+
try {
|
|
239
|
+
const execOptions = { cwd };
|
|
240
|
+
// Configure git if needed
|
|
241
|
+
await exec.exec('git', ['config', '--global', 'user.name', 'faf-taf-git[bot]'], execOptions);
|
|
242
|
+
await exec.exec('git', ['config', '--global', 'user.email', 'faf-taf-git[bot]@users.noreply.github.com'], execOptions);
|
|
243
|
+
// Stage .taf file
|
|
244
|
+
await exec.exec('git', ['add', '.taf'], execOptions);
|
|
245
|
+
// Check if there are changes to commit
|
|
246
|
+
let diffOutput = '';
|
|
247
|
+
const diffOptions = {
|
|
248
|
+
cwd,
|
|
249
|
+
listeners: {
|
|
250
|
+
stdout: (data) => {
|
|
251
|
+
diffOutput += data.toString();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
};
|
|
255
|
+
await exec.exec('git', ['diff', '--cached', '--name-only'], diffOptions);
|
|
256
|
+
if (diffOutput.trim().length > 0) {
|
|
257
|
+
await exec.exec('git', ['commit', '-m', message], execOptions);
|
|
258
|
+
// Try to push (might fail in some environments, that's ok)
|
|
259
|
+
try {
|
|
260
|
+
await exec.exec('git', ['push'], execOptions);
|
|
261
|
+
}
|
|
262
|
+
catch (error) {
|
|
263
|
+
if (verbose) {
|
|
264
|
+
logger('Could not push changes (this is ok in some CI environments)');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
if (verbose)
|
|
270
|
+
logger('No changes to commit');
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
catch (error) {
|
|
274
|
+
if (verbose) {
|
|
275
|
+
logger(`Error committing changes: ${error}`);
|
|
276
|
+
}
|
|
277
|
+
throw error;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* CLI entry point - parse args and run
|
|
282
|
+
*/
|
|
283
|
+
async function main() {
|
|
284
|
+
const args = process.argv.slice(2);
|
|
285
|
+
const options = {
|
|
286
|
+
verbose: args.includes('--verbose') || args.includes('-v'),
|
|
287
|
+
};
|
|
288
|
+
// Parse command flag
|
|
289
|
+
const commandIndex = args.indexOf('--command');
|
|
290
|
+
if (commandIndex !== -1 && args[commandIndex + 1]) {
|
|
291
|
+
options.command = args[commandIndex + 1];
|
|
292
|
+
}
|
|
293
|
+
// Parse auto-commit flag
|
|
294
|
+
if (args.includes('--commit')) {
|
|
295
|
+
options.autoCommit = true;
|
|
296
|
+
}
|
|
297
|
+
// Parse commit message
|
|
298
|
+
const messageIndex = args.indexOf('--message');
|
|
299
|
+
if (messageIndex !== -1 && args[messageIndex + 1]) {
|
|
300
|
+
options.commitMessage = args[messageIndex + 1];
|
|
301
|
+
}
|
|
302
|
+
// Parse working directory
|
|
303
|
+
const cwdIndex = args.indexOf('--cwd');
|
|
304
|
+
if (cwdIndex !== -1 && args[cwdIndex + 1]) {
|
|
305
|
+
options.cwd = args[cwdIndex + 1];
|
|
306
|
+
}
|
|
307
|
+
// Show help
|
|
308
|
+
if (args.includes('--help') || args.includes('-h')) {
|
|
309
|
+
console.log(`
|
|
310
|
+
faf-taf-git - Platform-agnostic TAF updater
|
|
311
|
+
|
|
312
|
+
USAGE:
|
|
313
|
+
npx faf-taf-git [OPTIONS]
|
|
314
|
+
|
|
315
|
+
OPTIONS:
|
|
316
|
+
--command <cmd> Test command to run (default: npm test)
|
|
317
|
+
--commit Auto-commit .taf changes to git
|
|
318
|
+
--message <msg> Custom commit message
|
|
319
|
+
--cwd <dir> Working directory (default: current)
|
|
320
|
+
--verbose, -v Verbose output
|
|
321
|
+
--help, -h Show this help
|
|
322
|
+
|
|
323
|
+
EXAMPLES:
|
|
324
|
+
# Run tests and update .taf
|
|
325
|
+
npx faf-taf-git
|
|
326
|
+
|
|
327
|
+
# Custom test command
|
|
328
|
+
npx faf-taf-git --command "npm run test:unit"
|
|
329
|
+
|
|
330
|
+
# Auto-commit changes
|
|
331
|
+
npx faf-taf-git --commit
|
|
332
|
+
|
|
333
|
+
# Custom commit message
|
|
334
|
+
npx faf-taf-git --commit --message "test: update TAF"
|
|
335
|
+
|
|
336
|
+
# Verbose mode
|
|
337
|
+
npx faf-taf-git --verbose
|
|
338
|
+
|
|
339
|
+
PLATFORM SUPPORT:
|
|
340
|
+
✅ GitHub Actions
|
|
341
|
+
✅ GitLab CI
|
|
342
|
+
✅ Bitbucket Pipelines
|
|
343
|
+
✅ Jenkins
|
|
344
|
+
✅ CircleCI
|
|
345
|
+
✅ Local development
|
|
346
|
+
✅ Any CI/CD that runs Node.js
|
|
347
|
+
|
|
348
|
+
LEARN MORE:
|
|
349
|
+
https://github.com/Wolfe-Jam/faf-taf-git
|
|
350
|
+
`);
|
|
351
|
+
process.exit(0);
|
|
352
|
+
}
|
|
353
|
+
// Run the tool
|
|
354
|
+
const result = await runTafGit(options);
|
|
355
|
+
if (result.success) {
|
|
356
|
+
if (result.testResults) {
|
|
357
|
+
console.log(`✅ Tests: ${result.testResults.passed}/${result.testResults.total} passing`);
|
|
358
|
+
console.log(`✅ Result: ${result.testResults.result}`);
|
|
359
|
+
}
|
|
360
|
+
if (result.tafUpdated) {
|
|
361
|
+
console.log('✅ .taf file updated');
|
|
362
|
+
}
|
|
363
|
+
process.exit(0);
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
console.error(`❌ Error: ${result.error}`);
|
|
367
|
+
if (result.testResults) {
|
|
368
|
+
console.log(`Tests: ${result.testResults.passed}/${result.testResults.total} passing`);
|
|
369
|
+
}
|
|
370
|
+
process.exit(1);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
// Run CLI if called directly
|
|
374
|
+
if (require.main === module) {
|
|
375
|
+
main().catch((error) => {
|
|
376
|
+
console.error('Fatal error:', error);
|
|
377
|
+
process.exit(1);
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCH,8BAmMC;AAnOD,oDAAsC;AACtC,uCAAyB;AACzB,uCAAyB;AACzB,2CAA6B;AAC7B,yCAAiD;AACjD,yCAA2C;AAuB3C;;;GAGG;AACI,KAAK,UAAU,SAAS,CAAC,UAAsB,EAAE;IACtD,MAAM,EACJ,OAAO,GAAG,UAAU,EACpB,UAAU,GAAG,KAAK,EAClB,aAAa,GAAG,sCAAsC,EACtD,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,OAAO,GAAG,KAAK,EACf,MAAM,GAAG,OAAO,CAAC,GAAG,GACrB,GAAG,OAAO,CAAC;IAEZ,IAAI,CAAC;QACH,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;QAE7D,mDAAmD;QACnD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,IAAI,CAAC;YACH,yCAAyC;YACzC,oCAAoC;YACpC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEnC,MAAM,OAAO,GAAqB;gBAChC,GAAG;gBACH,MAAM,EAAE,KAAK,EAAE,sBAAsB;gBACrC,gBAAgB,EAAE,IAAI,CAAC,+BAA+B;aACvD,CAAC;YAEF,iCAAiC;YACjC,6CAA6C;YAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAEnE,8EAA8E;YAC9E,oDAAoD;YACpD,MAAM,aAAa,GAAG;gBACpB,2CAA2C;gBAC3C,yBAAyB;gBACzB,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;gBACxC,QAAQ,GAAG,EAAE;gBACb,gBAAgB,OAAO,CAAC,GAAG,EAAE,EAAE;gBAC/B,2CAA2C;gBAC3C,cAAc,MAAM,CAAC,QAAQ,EAAE;gBAC/B,kBAAkB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBACxC,kBAAkB,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;gBACxC,2CAA2C;gBAC3C,mCAAmC;gBACnC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACpC,2CAA2C;gBAC3C,mCAAmC;gBACnC,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;gBACpC,2CAA2C;aAC5C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEb,IAAI,CAAC;gBACH,0BAA0B;gBAC1B,MAAM,SAAS,GAAG;oBAChB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAAY,eAAe;oBACjE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sBAAsB,CAAC,EAAE,cAAc;oBAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,EAAI,oBAAoB;oBACtE,sBAAsB,CAA8B,oBAAoB;iBACzE,CAAC;gBAEF,IAAI,YAAY,GAAG,KAAK,CAAC;gBACzB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,IAAI,CAAC;wBACH,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;wBACrC,YAAY,GAAG,IAAI,CAAC;oBACtB,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,oBAAoB;oBACtB,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;YAAC,OAAO,OAAY,EAAE,CAAC;gBACtB,iDAAiD;gBACjD,MAAM,IAAI,KAAK,CAAC,0CAA0C,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC/E,CAAC;YAED,+BAA+B;YAC/B,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACvC,+BAA+B;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,QAAQ,GAAG,CAAC,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3D,MAAM,CAAC,2BAA2B,MAAM,CAAC,MAAM,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBACjE,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;gBACpC,MAAM,CAAC,gBAAgB,MAAM,CAAC,MAAM,aAAa,SAAS,EAAE,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACvD,MAAM,CAAC,qBAAqB,KAAK,CAAC,MAAM,2BAA2B,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC9F,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,CAAC,uBAAuB,QAAQ,GAAG,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,iCAAiC,CAAC,CAAC;oBAC1C,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACnC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC9C,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,MAAM,WAAW,GAAG,IAAA,sBAAe,EAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,6BAA6B,CAAC,CAAC;gBACtC,MAAM,CAAC,2CAA2C,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1E,MAAM,CAAC,0CAA0C,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,yDAAyD;aACjE,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,mBAAmB,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,KAAK,gBAAgB,CAAC,CAAC;QACrF,CAAC;QAED,4BAA4B;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE;oBACX,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B;gBACD,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,uDAAuD;aAC/D,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAa,EAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAE1D,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,OAAO;gBAAE,MAAM,CAAC,kCAAkC,CAAC,CAAC;YAExD,4BAA4B;YAC5B,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBAC3D,IAAI,OAAO;oBAAE,MAAM,CAAC,4BAA4B,CAAC,CAAC;YACpD,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE;oBACX,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B;gBACD,UAAU,EAAE,IAAI;aACjB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE;oBACX,KAAK,EAAE,WAAW,CAAC,KAAK;oBACxB,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;oBAC1B,MAAM,EAAE,WAAW,CAAC,MAAM;iBAC3B;gBACD,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,2BAA2B;aACnC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB;SACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,GAAW,EAAE,OAAe,EAAE,OAAgB,EAAE,SAAgC,OAAO,CAAC,GAAG;IACxH,IAAI,CAAC;QACH,MAAM,WAAW,GAAqB,EAAE,GAAG,EAAE,CAAC;QAE9C,0BAA0B;QAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAAC;QAC7F,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,2CAA2C,CAAC,EAAE,WAAW,CAAC,CAAC;QAEvH,kBAAkB;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;QAErD,uCAAuC;QACvC,IAAI,UAAU,GAAG,EAAE,CAAC;QACpB,MAAM,WAAW,GAAqB;YACpC,GAAG;YACH,SAAS,EAAE;gBACT,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;oBACvB,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChC,CAAC;aACF;SACF,CAAC;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;QAEzE,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC;YAE/D,2DAA2D;YAC3D,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;YAChD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,EAAE,CAAC;oBACZ,MAAM,CAAC,6DAA6D,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,OAAO;gBAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAe;QAC1B,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;KAC3D,CAAC;IAEF,qBAAqB;IACrB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAC5B,CAAC;IAED,uBAAuB;IACvB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,IAAI,YAAY,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;QAClD,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAED,YAAY;IACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCf,CAAC,CAAC;QACC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,WAAW,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,UAAU,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,6BAA6B;AAC7B,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/wolfejam/FAF/faf-taf-git/src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|