devlens-cli-susmit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +184 -0
- package/dist/analyzer.d.ts +23 -0
- package/dist/analyzer.d.ts.map +1 -0
- package/dist/analyzer.js +334 -0
- package/dist/analyzer.js.map +1 -0
- package/dist/cicd.d.ts +10 -0
- package/dist/cicd.d.ts.map +1 -0
- package/dist/cicd.js +105 -0
- package/dist/cicd.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +203 -0
- package/dist/cli.js.map +1 -0
- package/dist/detector.d.ts +13 -0
- package/dist/detector.d.ts.map +1 -0
- package/dist/detector.js +203 -0
- package/dist/detector.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +116 -0
- package/dist/index.js.map +1 -0
- package/dist/platform.d.ts +29 -0
- package/dist/platform.d.ts.map +1 -0
- package/dist/platform.js +97 -0
- package/dist/platform.js.map +1 -0
- package/dist/registry.d.ts +27 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +141 -0
- package/dist/registry.js.map +1 -0
- package/dist/runner.d.ts +30 -0
- package/dist/runner.d.ts.map +1 -0
- package/dist/runner.js +157 -0
- package/dist/runner.js.map +1 -0
- package/dist/summarizer.d.ts +34 -0
- package/dist/summarizer.d.ts.map +1 -0
- package/dist/summarizer.js +180 -0
- package/dist/summarizer.js.map +1 -0
- package/package.json +60 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* index.ts — public API entry point for devlens.
|
|
4
|
+
*
|
|
5
|
+
* Usage (programmatic):
|
|
6
|
+
* import { devlens } from "devlens";
|
|
7
|
+
* const report = await devlens({ projectRoot: "./my-project", run: "test" });
|
|
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.TECH_REGISTRY = exports.formatCicdAdvisories = exports.adviseCicd = exports.scaffoldGoogleTest = exports.resolveTestStrategy = exports.runCommand = exports.formatAnalysis = exports.analyze = exports.summarize = exports.detect = void 0;
|
|
44
|
+
exports.devlens = devlens;
|
|
45
|
+
var detector_1 = require("./detector");
|
|
46
|
+
Object.defineProperty(exports, "detect", { enumerable: true, get: function () { return detector_1.detect; } });
|
|
47
|
+
var summarizer_1 = require("./summarizer");
|
|
48
|
+
Object.defineProperty(exports, "summarize", { enumerable: true, get: function () { return summarizer_1.summarize; } });
|
|
49
|
+
var analyzer_1 = require("./analyzer");
|
|
50
|
+
Object.defineProperty(exports, "analyze", { enumerable: true, get: function () { return analyzer_1.analyze; } });
|
|
51
|
+
Object.defineProperty(exports, "formatAnalysis", { enumerable: true, get: function () { return analyzer_1.formatAnalysis; } });
|
|
52
|
+
var runner_1 = require("./runner");
|
|
53
|
+
Object.defineProperty(exports, "runCommand", { enumerable: true, get: function () { return runner_1.runCommand; } });
|
|
54
|
+
Object.defineProperty(exports, "resolveTestStrategy", { enumerable: true, get: function () { return runner_1.resolveTestStrategy; } });
|
|
55
|
+
Object.defineProperty(exports, "scaffoldGoogleTest", { enumerable: true, get: function () { return runner_1.scaffoldGoogleTest; } });
|
|
56
|
+
var cicd_1 = require("./cicd");
|
|
57
|
+
Object.defineProperty(exports, "adviseCicd", { enumerable: true, get: function () { return cicd_1.adviseCicd; } });
|
|
58
|
+
Object.defineProperty(exports, "formatCicdAdvisories", { enumerable: true, get: function () { return cicd_1.formatCicdAdvisories; } });
|
|
59
|
+
var registry_1 = require("./registry");
|
|
60
|
+
Object.defineProperty(exports, "TECH_REGISTRY", { enumerable: true, get: function () { return registry_1.TECH_REGISTRY; } });
|
|
61
|
+
const detector_2 = require("./detector");
|
|
62
|
+
const summarizer_2 = require("./summarizer");
|
|
63
|
+
const runner_2 = require("./runner");
|
|
64
|
+
const cicd_2 = require("./cicd");
|
|
65
|
+
const analyzer_2 = require("./analyzer");
|
|
66
|
+
async function devlens(options = {}) {
|
|
67
|
+
const root = options.projectRoot ?? process.cwd();
|
|
68
|
+
const action = options.action ?? "summarize";
|
|
69
|
+
const detection = (0, detector_2.detect)(root);
|
|
70
|
+
const summary = (0, summarizer_2.summarize)(detection);
|
|
71
|
+
const cicdAdvisories = (0, cicd_2.adviseCicd)(root, detection.detected);
|
|
72
|
+
let runResult = null;
|
|
73
|
+
let testStrategy = null;
|
|
74
|
+
const outputParts = [];
|
|
75
|
+
outputParts.push(summary.markdown);
|
|
76
|
+
if (action === "test") {
|
|
77
|
+
testStrategy = (0, runner_2.resolveTestStrategy)(detection);
|
|
78
|
+
if (testStrategy.framework === "none") {
|
|
79
|
+
outputParts.push("\n⚠️ No test framework detected and no fallback available. Add tests to your project.");
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
if (testStrategy.scaffolded) {
|
|
83
|
+
outputParts.push(`\n🔨 Scaffolded ${testStrategy.framework} — running: ${testStrategy.command}`);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
outputParts.push(`\n▶ Running tests with ${testStrategy.framework}: ${testStrategy.command}`);
|
|
87
|
+
}
|
|
88
|
+
runResult = await (0, runner_2.runCommand)(testStrategy.command, root, options.onData);
|
|
89
|
+
outputParts.push((0, analyzer_2.formatAnalysis)(runResult.analysis));
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
else if (action === "build" && detection.buildCommand) {
|
|
93
|
+
runResult = await (0, runner_2.runCommand)(detection.buildCommand, root, options.onData);
|
|
94
|
+
outputParts.push((0, analyzer_2.formatAnalysis)(runResult.analysis));
|
|
95
|
+
}
|
|
96
|
+
else if (action === "run" && detection.runCommand) {
|
|
97
|
+
runResult = await (0, runner_2.runCommand)(detection.runCommand, root, options.onData);
|
|
98
|
+
outputParts.push((0, analyzer_2.formatAnalysis)(runResult.analysis));
|
|
99
|
+
}
|
|
100
|
+
else if (action === "analyze" && options.output) {
|
|
101
|
+
const analysis = (await Promise.resolve().then(() => __importStar(require("./analyzer")))).analyze(options.output);
|
|
102
|
+
outputParts.push((0, analyzer_2.formatAnalysis)(analysis));
|
|
103
|
+
}
|
|
104
|
+
else if (action === "cicd") {
|
|
105
|
+
outputParts.push((await Promise.resolve().then(() => __importStar(require("./cicd")))).formatCicdAdvisories(cicdAdvisories));
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
projectRoot: root,
|
|
109
|
+
summary,
|
|
110
|
+
runResult,
|
|
111
|
+
cicdAdvisories,
|
|
112
|
+
testStrategy,
|
|
113
|
+
formattedOutput: outputParts.join("\n"),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type Platform = "linux" | "darwin" | "win32" | "unknown";
|
|
2
|
+
export declare function getPlatform(): Platform;
|
|
3
|
+
export declare function getPlatformLabel(): string;
|
|
4
|
+
/**
|
|
5
|
+
* Normalize a shell command for the current OS.
|
|
6
|
+
* Mainly handles path separators and shell availability.
|
|
7
|
+
*/
|
|
8
|
+
export declare function normalizeCommand(command: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the cross-platform null device path.
|
|
11
|
+
*/
|
|
12
|
+
export declare function nullDevice(): string;
|
|
13
|
+
/**
|
|
14
|
+
* Check if a binary is available in PATH.
|
|
15
|
+
*/
|
|
16
|
+
export declare function commandExists(bin: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Return the first available command from a list.
|
|
19
|
+
*/
|
|
20
|
+
export declare function firstAvailableCommand(commands: string[]): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Cross-platform temp directory.
|
|
23
|
+
*/
|
|
24
|
+
export declare function tempDir(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Make a path safe across all platforms.
|
|
27
|
+
*/
|
|
28
|
+
export declare function safePath(...parts: string[]): string;
|
|
29
|
+
//# sourceMappingURL=platform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhE,wBAAgB,WAAW,IAAI,QAAQ,CAItC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAelD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAMvE;AAED;;GAEG;AACH,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEnD"}
|
package/dist/platform.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getPlatform = getPlatform;
|
|
7
|
+
exports.getPlatformLabel = getPlatformLabel;
|
|
8
|
+
exports.normalizeCommand = normalizeCommand;
|
|
9
|
+
exports.nullDevice = nullDevice;
|
|
10
|
+
exports.commandExists = commandExists;
|
|
11
|
+
exports.firstAvailableCommand = firstAvailableCommand;
|
|
12
|
+
exports.tempDir = tempDir;
|
|
13
|
+
exports.safePath = safePath;
|
|
14
|
+
/**
|
|
15
|
+
* platform.ts — cross-platform utilities.
|
|
16
|
+
* Normalizes command execution across macOS, Windows, and Linux.
|
|
17
|
+
*/
|
|
18
|
+
const os_1 = __importDefault(require("os"));
|
|
19
|
+
const path_1 = __importDefault(require("path"));
|
|
20
|
+
const fs_1 = __importDefault(require("fs"));
|
|
21
|
+
function getPlatform() {
|
|
22
|
+
const p = os_1.default.platform();
|
|
23
|
+
if (p === "linux" || p === "darwin" || p === "win32")
|
|
24
|
+
return p;
|
|
25
|
+
return "unknown";
|
|
26
|
+
}
|
|
27
|
+
function getPlatformLabel() {
|
|
28
|
+
const p = getPlatform();
|
|
29
|
+
if (p === "linux")
|
|
30
|
+
return "Linux";
|
|
31
|
+
if (p === "darwin")
|
|
32
|
+
return "macOS";
|
|
33
|
+
if (p === "win32")
|
|
34
|
+
return "Windows";
|
|
35
|
+
return "Unknown";
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Normalize a shell command for the current OS.
|
|
39
|
+
* Mainly handles path separators and shell availability.
|
|
40
|
+
*/
|
|
41
|
+
function normalizeCommand(command) {
|
|
42
|
+
if (getPlatform() === "win32") {
|
|
43
|
+
// Replace forward slashes in paths with backslashes (heuristic)
|
|
44
|
+
return command.replace(/\//g, "\\");
|
|
45
|
+
}
|
|
46
|
+
return command;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Returns the cross-platform null device path.
|
|
50
|
+
*/
|
|
51
|
+
function nullDevice() {
|
|
52
|
+
return getPlatform() === "win32" ? "NUL" : "/dev/null";
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if a binary is available in PATH.
|
|
56
|
+
*/
|
|
57
|
+
function commandExists(bin) {
|
|
58
|
+
const isWin = getPlatform() === "win32";
|
|
59
|
+
const pathEnv = process.env.PATH ?? "";
|
|
60
|
+
const dirs = pathEnv.split(isWin ? ";" : ":");
|
|
61
|
+
const exts = isWin ? (process.env.PATHEXT ?? ".EXE;.CMD;.BAT").split(";") : [""];
|
|
62
|
+
for (const dir of dirs) {
|
|
63
|
+
for (const ext of exts) {
|
|
64
|
+
const full = path_1.default.join(dir, bin + ext);
|
|
65
|
+
try {
|
|
66
|
+
fs_1.default.accessSync(full, fs_1.default.constants.X_OK);
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
catch { /* continue */ }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Return the first available command from a list.
|
|
76
|
+
*/
|
|
77
|
+
function firstAvailableCommand(commands) {
|
|
78
|
+
for (const cmd of commands) {
|
|
79
|
+
const bin = cmd.split(" ")[0];
|
|
80
|
+
if (commandExists(bin))
|
|
81
|
+
return cmd;
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Cross-platform temp directory.
|
|
87
|
+
*/
|
|
88
|
+
function tempDir() {
|
|
89
|
+
return os_1.default.tmpdir();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Make a path safe across all platforms.
|
|
93
|
+
*/
|
|
94
|
+
function safePath(...parts) {
|
|
95
|
+
return path_1.default.join(...parts);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* devlens — language / framework / tool detection registry.
|
|
3
|
+
* Each entry maps a canonical name to the signals that identify it.
|
|
4
|
+
*/
|
|
5
|
+
export type Category = "language" | "framework" | "game-engine" | "cicd" | "database" | "api" | "ai" | "dsa" | "app" | "testing";
|
|
6
|
+
export interface DetectedTech {
|
|
7
|
+
name: string;
|
|
8
|
+
category: Category;
|
|
9
|
+
confidence: "high" | "medium" | "low";
|
|
10
|
+
testCommand?: string;
|
|
11
|
+
buildCommand?: string;
|
|
12
|
+
runCommand?: string;
|
|
13
|
+
}
|
|
14
|
+
interface TechSignal {
|
|
15
|
+
name: string;
|
|
16
|
+
category: Category;
|
|
17
|
+
files?: string[];
|
|
18
|
+
dirs?: string[];
|
|
19
|
+
extensions?: string[];
|
|
20
|
+
keywords?: string[];
|
|
21
|
+
testCommand?: string;
|
|
22
|
+
buildCommand?: string;
|
|
23
|
+
runCommand?: string;
|
|
24
|
+
}
|
|
25
|
+
export type { TechSignal };
|
|
26
|
+
export declare const TECH_REGISTRY: TechSignal[];
|
|
27
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,QAAQ,GAChB,UAAU,GACV,WAAW,GACX,aAAa,GACb,MAAM,GACN,UAAU,GACV,KAAK,GACL,IAAI,GACJ,KAAK,GACL,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,eAAO,MAAM,aAAa,EAAE,UAAU,EA4IrC,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* devlens — language / framework / tool detection registry.
|
|
4
|
+
* Each entry maps a canonical name to the signals that identify it.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TECH_REGISTRY = void 0;
|
|
8
|
+
exports.TECH_REGISTRY = [
|
|
9
|
+
// ── Languages ──────────────────────────────────────────────────────────────
|
|
10
|
+
{ name: "TypeScript", category: "language", files: ["tsconfig.json"], extensions: [".ts", ".tsx"], testCommand: "npx jest", buildCommand: "npx tsc" },
|
|
11
|
+
{ name: "JavaScript", category: "language", files: ["package.json"], extensions: [".js", ".mjs"], testCommand: "npx jest" },
|
|
12
|
+
{ name: "Python", category: "language", files: ["requirements.txt", "pyproject.toml", "setup.py"], extensions: [".py"], testCommand: "pytest", buildCommand: "python -m build" },
|
|
13
|
+
{ name: "Rust", category: "language", files: ["Cargo.toml"], extensions: [".rs"], testCommand: "cargo test", buildCommand: "cargo build --release" },
|
|
14
|
+
{ name: "Go", category: "language", files: ["go.mod"], extensions: [".go"], testCommand: "go test ./...", buildCommand: "go build ./..." },
|
|
15
|
+
{ name: "Java", category: "language", files: ["pom.xml", "build.gradle"], extensions: [".java"], testCommand: "mvn test", buildCommand: "mvn package -DskipTests" },
|
|
16
|
+
{ name: "Kotlin", category: "language", files: ["build.gradle.kts"], extensions: [".kt"], testCommand: "gradle test", buildCommand: "gradle build" },
|
|
17
|
+
{ name: "C", category: "language", extensions: [".c", ".h"], testCommand: "ctest --output-on-failure", buildCommand: "cmake --build build" },
|
|
18
|
+
{ name: "C++", category: "language", extensions: [".cpp", ".cc", ".cxx", ".hpp"], testCommand: "ctest --output-on-failure", buildCommand: "cmake --build build" },
|
|
19
|
+
{ name: "C#", category: "language", files: ["*.csproj", "*.sln"], extensions: [".cs"], testCommand: "dotnet test", buildCommand: "dotnet build" },
|
|
20
|
+
{ name: "Ruby", category: "language", files: ["Gemfile"], extensions: [".rb"], testCommand: "bundle exec rspec", buildCommand: "bundle install" },
|
|
21
|
+
{ name: "PHP", category: "language", files: ["composer.json"], extensions: [".php"], testCommand: "vendor/bin/phpunit", buildCommand: "composer install" },
|
|
22
|
+
{ name: "Swift", category: "language", files: ["Package.swift"], extensions: [".swift"], testCommand: "swift test", buildCommand: "swift build -c release" },
|
|
23
|
+
{ name: "Dart", category: "language", files: ["pubspec.yaml"], extensions: [".dart"], testCommand: "dart test", buildCommand: "dart compile exe" },
|
|
24
|
+
{ name: "Lua", category: "language", extensions: [".lua"], testCommand: "busted" },
|
|
25
|
+
{ name: "Zig", category: "language", files: ["build.zig"], extensions: [".zig"], testCommand: "zig build test", buildCommand: "zig build" },
|
|
26
|
+
{ name: "Elixir", category: "language", files: ["mix.exs"], extensions: [".ex", ".exs"], testCommand: "mix test", buildCommand: "mix release" },
|
|
27
|
+
{ name: "Haskell", category: "language", files: ["stack.yaml", "*.cabal"], extensions: [".hs"], testCommand: "stack test", buildCommand: "stack build" },
|
|
28
|
+
{ name: "Scala", category: "language", files: ["build.sbt"], extensions: [".scala"], testCommand: "sbt test", buildCommand: "sbt assembly" },
|
|
29
|
+
{ name: "R", category: "language", files: ["DESCRIPTION"], extensions: [".R"], testCommand: "Rscript -e 'devtools::test()'" },
|
|
30
|
+
{ name: "Julia", category: "language", files: ["Project.toml"], extensions: [".jl"], testCommand: "julia --project -e 'using Pkg; Pkg.test()'" },
|
|
31
|
+
{ name: "COBOL", category: "language", extensions: [".cob", ".cbl"], testCommand: "cobcrun main" },
|
|
32
|
+
{ name: "Fortran", category: "language", extensions: [".f90", ".f95", ".f77"], testCommand: "ctest --output-on-failure", buildCommand: "cmake --build build" },
|
|
33
|
+
{ name: "Assembly", category: "language", extensions: [".asm", ".s"], buildCommand: "nasm -f elf64" },
|
|
34
|
+
{ name: "Bash/Shell", category: "language", extensions: [".sh", ".bash"], testCommand: "bats ." },
|
|
35
|
+
{ name: "PowerShell", category: "language", extensions: [".ps1"], testCommand: "Invoke-Pester" },
|
|
36
|
+
// ── Web Frameworks ─────────────────────────────────────────────────────────
|
|
37
|
+
{ name: "React", category: "framework", files: ["package.json"], keywords: ["react"], testCommand: "npx jest", buildCommand: "npm run build" },
|
|
38
|
+
{ name: "Next.js", category: "framework", files: ["next.config.js", "next.config.ts", "next.config.mjs"], testCommand: "npx jest", buildCommand: "next build" },
|
|
39
|
+
{ name: "Vue", category: "framework", files: ["vue.config.js", "vite.config.ts"], keywords: ["vue"], buildCommand: "npm run build" },
|
|
40
|
+
{ name: "Nuxt", category: "framework", files: ["nuxt.config.ts", "nuxt.config.js"], buildCommand: "nuxt build" },
|
|
41
|
+
{ name: "Angular", category: "framework", files: ["angular.json"], testCommand: "ng test --watch=false", buildCommand: "ng build --configuration production" },
|
|
42
|
+
{ name: "Svelte", category: "framework", files: ["svelte.config.js", "svelte.config.ts"], buildCommand: "npm run build" },
|
|
43
|
+
{ name: "SolidJS", category: "framework", files: ["vite.config.ts"], keywords: ["solid-js"], buildCommand: "npm run build" },
|
|
44
|
+
{ name: "Astro", category: "framework", files: ["astro.config.mjs", "astro.config.ts"], buildCommand: "astro build" },
|
|
45
|
+
{ name: "Django", category: "framework", files: ["manage.py"], testCommand: "python manage.py test", runCommand: "python manage.py runserver" },
|
|
46
|
+
{ name: "Flask", category: "framework", files: ["app.py", "wsgi.py"], keywords: ["flask"], testCommand: "pytest", runCommand: "flask run" },
|
|
47
|
+
{ name: "FastAPI", category: "framework", keywords: ["fastapi"], testCommand: "pytest", runCommand: "uvicorn main:app --reload" },
|
|
48
|
+
{ name: "Express", category: "framework", files: ["package.json"], keywords: ["express"], testCommand: "npx jest", runCommand: "node index.js" },
|
|
49
|
+
{ name: "NestJS", category: "framework", files: ["nest-cli.json"], testCommand: "npm run test", buildCommand: "npm run build" },
|
|
50
|
+
{ name: "Laravel", category: "framework", files: ["artisan"], testCommand: "php artisan test", runCommand: "php artisan serve" },
|
|
51
|
+
{ name: "Spring Boot", category: "framework", files: ["pom.xml"], keywords: ["spring-boot"], testCommand: "mvn test", buildCommand: "mvn package -DskipTests" },
|
|
52
|
+
{ name: "Ruby on Rails", category: "framework", files: ["Rakefile", "config/routes.rb"], testCommand: "bundle exec rails test", runCommand: "rails server" },
|
|
53
|
+
{ name: "Gin (Go)", category: "framework", keywords: ["gin-gonic"], testCommand: "go test ./...", runCommand: "go run main.go" },
|
|
54
|
+
{ name: "Fiber (Go)", category: "framework", keywords: ["gofiber"], testCommand: "go test ./...", runCommand: "go run main.go" },
|
|
55
|
+
{ name: "Actix (Rust)", category: "framework", keywords: ["actix-web"], testCommand: "cargo test", runCommand: "cargo run" },
|
|
56
|
+
{ name: "ASP.NET Core", category: "framework", files: ["*.csproj"], keywords: ["Microsoft.AspNetCore"], testCommand: "dotnet test", runCommand: "dotnet run" },
|
|
57
|
+
// ── Mobile / App ───────────────────────────────────────────────────────────
|
|
58
|
+
{ name: "Flutter", category: "app", files: ["pubspec.yaml"], keywords: ["flutter"], testCommand: "flutter test", buildCommand: "flutter build apk" },
|
|
59
|
+
{ name: "React Native", category: "app", files: ["app.json", "App.tsx", "App.js"], keywords: ["react-native"], testCommand: "npx jest", buildCommand: "npx react-native build-android" },
|
|
60
|
+
{ name: "Expo", category: "app", files: ["app.json", "expo.json"], keywords: ["expo"], testCommand: "npx jest", buildCommand: "expo build:android" },
|
|
61
|
+
{ name: "Tauri", category: "app", files: ["tauri.conf.json", "src-tauri"], testCommand: "cargo test", buildCommand: "tauri build" },
|
|
62
|
+
{ name: "Electron", category: "app", files: ["electron.js", "electron-builder.yml"], keywords: ["electron"], buildCommand: "electron-builder" },
|
|
63
|
+
{ name: "Android (Gradle)", category: "app", files: ["app/build.gradle", "settings.gradle"], testCommand: "gradle test", buildCommand: "gradle assembleRelease" },
|
|
64
|
+
{ name: "iOS (Xcode)", category: "app", files: ["*.xcodeproj", "*.xcworkspace"], buildCommand: "xcodebuild -scheme MyApp build" },
|
|
65
|
+
// ── Game Engines ───────────────────────────────────────────────────────────
|
|
66
|
+
{ name: "Unity", category: "game-engine", dirs: ["Assets", "ProjectSettings"], files: ["ProjectSettings/ProjectVersion.txt"], buildCommand: "Unity -batchmode -buildLinux64Player Build/game" },
|
|
67
|
+
{ name: "Unreal Engine", category: "game-engine", files: ["*.uproject"], buildCommand: "UnrealBuildTool" },
|
|
68
|
+
{ name: "Godot", category: "game-engine", files: ["project.godot"], buildCommand: "godot --export-release Linux/X11 build/game.x86_64" },
|
|
69
|
+
{ name: "Bevy (Rust)", category: "game-engine", keywords: ["bevy"], testCommand: "cargo test", buildCommand: "cargo build --release" },
|
|
70
|
+
{ name: "Pygame", category: "game-engine", keywords: ["pygame"], testCommand: "pytest", runCommand: "python main.py" },
|
|
71
|
+
{ name: "LÖVE2D", category: "game-engine", files: ["main.lua", "conf.lua"], runCommand: "love ." },
|
|
72
|
+
{ name: "Phaser", category: "game-engine", keywords: ["phaser"], buildCommand: "npm run build" },
|
|
73
|
+
{ name: "MonoGame", category: "game-engine", files: ["*.mgcb", "Content.mgcb"], buildCommand: "dotnet build" },
|
|
74
|
+
{ name: "LibGDX", category: "game-engine", files: ["lwjgl3/build.gradle"], buildCommand: "gradle desktop:dist" },
|
|
75
|
+
{ name: "raylib", category: "game-engine", files: ["CMakeLists.txt"], keywords: ["raylib"], buildCommand: "cmake --build build" },
|
|
76
|
+
// ── AI / ML ────────────────────────────────────────────────────────────────
|
|
77
|
+
{ name: "PyTorch", category: "ai", keywords: ["torch"], testCommand: "pytest", runCommand: "python train.py" },
|
|
78
|
+
{ name: "TensorFlow", category: "ai", keywords: ["tensorflow", "tf"], testCommand: "pytest", runCommand: "python train.py" },
|
|
79
|
+
{ name: "JAX", category: "ai", keywords: ["jax", "flax"], testCommand: "pytest" },
|
|
80
|
+
{ name: "Hugging Face", category: "ai", keywords: ["transformers", "diffusers"], testCommand: "pytest" },
|
|
81
|
+
{ name: "LangChain", category: "ai", keywords: ["langchain"], testCommand: "pytest" },
|
|
82
|
+
{ name: "scikit-learn", category: "ai", keywords: ["scikit-learn", "sklearn"], testCommand: "pytest" },
|
|
83
|
+
{ name: "Keras", category: "ai", keywords: ["keras"], testCommand: "pytest" },
|
|
84
|
+
{ name: "ONNX", category: "ai", files: ["*.onnx"], testCommand: "pytest" },
|
|
85
|
+
{ name: "LlamaIndex", category: "ai", keywords: ["llama-index", "llama_index"], testCommand: "pytest" },
|
|
86
|
+
// ── Databases ──────────────────────────────────────────────────────────────
|
|
87
|
+
{ name: "PostgreSQL", category: "database", keywords: ["pg", "postgres", "psycopg2", "asyncpg"] },
|
|
88
|
+
{ name: "MySQL", category: "database", keywords: ["mysql", "mysql2", "PyMySQL"] },
|
|
89
|
+
{ name: "MongoDB", category: "database", keywords: ["mongoose", "mongodb", "motor"] },
|
|
90
|
+
{ name: "Redis", category: "database", keywords: ["redis", "ioredis"] },
|
|
91
|
+
{ name: "SQLite", category: "database", files: ["*.db", "*.sqlite", "*.sqlite3"], keywords: ["sqlite", "sqlite3", "better-sqlite3"] },
|
|
92
|
+
{ name: "Prisma", category: "database", files: ["prisma/schema.prisma"], testCommand: "npx prisma validate", buildCommand: "npx prisma generate" },
|
|
93
|
+
{ name: "Drizzle ORM", category: "database", files: ["drizzle.config.ts", "drizzle.config.js"] },
|
|
94
|
+
{ name: "Sequelize", category: "database", keywords: ["sequelize"] },
|
|
95
|
+
{ name: "TypeORM", category: "database", keywords: ["typeorm"] },
|
|
96
|
+
{ name: "SQLAlchemy", category: "database", keywords: ["sqlalchemy", "alembic"] },
|
|
97
|
+
{ name: "Supabase", category: "database", keywords: ["supabase", "@supabase"] },
|
|
98
|
+
{ name: "Firebase", category: "database", files: ["firebase.json", ".firebaserc"], keywords: ["firebase"] },
|
|
99
|
+
{ name: "Cassandra", category: "database", keywords: ["cassandra-driver"] },
|
|
100
|
+
{ name: "Elasticsearch", category: "database", keywords: ["elasticsearch", "@elastic"] },
|
|
101
|
+
// ── CI/CD ──────────────────────────────────────────────────────────────────
|
|
102
|
+
{ name: "GitHub Actions", category: "cicd", dirs: [".github/workflows"], files: [".github/workflows/*.yml", ".github/workflows/*.yaml"] },
|
|
103
|
+
{ name: "GitLab CI", category: "cicd", files: [".gitlab-ci.yml"] },
|
|
104
|
+
{ name: "CircleCI", category: "cicd", files: [".circleci/config.yml"] },
|
|
105
|
+
{ name: "Jenkins", category: "cicd", files: ["Jenkinsfile"] },
|
|
106
|
+
{ name: "Travis CI", category: "cicd", files: [".travis.yml"] },
|
|
107
|
+
{ name: "Bitbucket Pipelines", category: "cicd", files: ["bitbucket-pipelines.yml"] },
|
|
108
|
+
{ name: "Azure Pipelines", category: "cicd", files: ["azure-pipelines.yml"] },
|
|
109
|
+
{ name: "Drone CI", category: "cicd", files: [".drone.yml"] },
|
|
110
|
+
{ name: "Tekton", category: "cicd", files: ["tekton/*.yaml", "tekton/*.yml"] },
|
|
111
|
+
{ name: "ArgoCD", category: "cicd", files: ["argo*.yaml"] },
|
|
112
|
+
{ name: "Docker", category: "cicd", files: ["Dockerfile", "docker-compose.yml", "docker-compose.yaml"] },
|
|
113
|
+
{ name: "Kubernetes", category: "cicd", files: ["k8s/*.yaml", "helm/Chart.yaml", "Chart.yaml"] },
|
|
114
|
+
// ── APIs ───────────────────────────────────────────────────────────────────
|
|
115
|
+
{ name: "GraphQL", category: "api", files: ["*.graphql", "*.gql", "schema.graphql"], keywords: ["graphql", "apollo-server", "graphql-yoga"] },
|
|
116
|
+
{ name: "tRPC", category: "api", keywords: ["@trpc/server", "@trpc/client"] },
|
|
117
|
+
{ name: "gRPC", category: "api", files: ["*.proto"], keywords: ["@grpc/grpc-js", "grpcio"] },
|
|
118
|
+
{ name: "REST (OpenAPI)", category: "api", files: ["openapi.yaml", "openapi.json", "swagger.yaml", "swagger.json"] },
|
|
119
|
+
{ name: "WebSocket", category: "api", keywords: ["ws", "socket.io", "websockets"] },
|
|
120
|
+
{ name: "Kafka", category: "api", keywords: ["kafkajs", "kafka-python", "confluent-kafka"] },
|
|
121
|
+
{ name: "RabbitMQ", category: "api", keywords: ["amqplib", "pika"] },
|
|
122
|
+
// ── Testing Frameworks ─────────────────────────────────────────────────────
|
|
123
|
+
{ name: "Jest", category: "testing", files: ["jest.config.js", "jest.config.ts"], keywords: ["jest"], testCommand: "npx jest" },
|
|
124
|
+
{ name: "Vitest", category: "testing", files: ["vitest.config.ts", "vitest.config.js"], keywords: ["vitest"], testCommand: "npx vitest run" },
|
|
125
|
+
{ name: "Pytest", category: "testing", files: ["pytest.ini", "pyproject.toml", "setup.cfg"], keywords: ["pytest"], testCommand: "pytest" },
|
|
126
|
+
{ name: "JUnit", category: "testing", keywords: ["junit"], testCommand: "mvn test" },
|
|
127
|
+
{ name: "RSpec", category: "testing", dirs: ["spec"], files: [".rspec"], testCommand: "bundle exec rspec" },
|
|
128
|
+
{ name: "PHPUnit", category: "testing", files: ["phpunit.xml", "phpunit.xml.dist"], testCommand: "vendor/bin/phpunit" },
|
|
129
|
+
{ name: "Go test", category: "testing", extensions: [".go"], testCommand: "go test ./..." },
|
|
130
|
+
{ name: "Cargo test", category: "testing", files: ["Cargo.toml"], testCommand: "cargo test" },
|
|
131
|
+
{ name: "GoogleTest", category: "testing", keywords: ["gtest", "googletest"], testCommand: "ctest --output-on-failure" },
|
|
132
|
+
{ name: "Catch2", category: "testing", keywords: ["Catch2"], testCommand: "ctest --output-on-failure" },
|
|
133
|
+
{ name: "Mocha", category: "testing", files: [".mocharc.js", ".mocharc.yml"], keywords: ["mocha"], testCommand: "npx mocha" },
|
|
134
|
+
{ name: "Cypress", category: "testing", files: ["cypress.config.ts", "cypress.config.js"], testCommand: "npx cypress run" },
|
|
135
|
+
{ name: "Playwright", category: "testing", files: ["playwright.config.ts", "playwright.config.js"], testCommand: "npx playwright test" },
|
|
136
|
+
{ name: "Bats", category: "testing", extensions: [".bats"], testCommand: "bats ." },
|
|
137
|
+
{ name: "unittest", category: "testing", keywords: ["unittest"], testCommand: "python -m pytest" },
|
|
138
|
+
{ name: "NUnit", category: "testing", keywords: ["NUnit"], testCommand: "dotnet test" },
|
|
139
|
+
{ name: "xUnit", category: "testing", keywords: ["xunit"], testCommand: "dotnet test" },
|
|
140
|
+
];
|
|
141
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.d.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AnalysisResult } from "./analyzer";
|
|
2
|
+
import { DetectionResult } from "./detector";
|
|
3
|
+
export interface RunResult {
|
|
4
|
+
command: string;
|
|
5
|
+
stdout: string;
|
|
6
|
+
stderr: string;
|
|
7
|
+
exitCode: number | null;
|
|
8
|
+
analysis: AnalysisResult;
|
|
9
|
+
durationMs: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Run a shell command in a given directory, capture output, and analyze errors.
|
|
13
|
+
*/
|
|
14
|
+
export declare function runCommand(command: string, cwd: string, onData?: (chunk: string) => void): Promise<RunResult>;
|
|
15
|
+
/**
|
|
16
|
+
* When no test framework is detected for a C/C++ project,
|
|
17
|
+
* scaffold GoogleTest CMake files and return the test command.
|
|
18
|
+
*/
|
|
19
|
+
export declare function scaffoldGoogleTest(projectRoot: string): string;
|
|
20
|
+
export interface TestStrategy {
|
|
21
|
+
command: string;
|
|
22
|
+
framework: string;
|
|
23
|
+
scaffolded: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns the best test command for the project.
|
|
27
|
+
* Falls back to GoogleTest scaffold for C/C++ with no detected test framework.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveTestStrategy(detection: DetectionResult): TestStrategy;
|
|
30
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAQA,OAAO,EAAW,cAAc,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACpB;AAMD;;GAEG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,SAAS,CAAC,CA8CpB;AAkCD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoB9D;AAID,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,eAAe,GAAG,YAAY,CA0C5E"}
|