ctxinit 0.1.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 +484 -0
- package/bin/ctx.js +3 -0
- package/dist/analysis/index.d.ts +2 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +18 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/static-analysis.d.ts +79 -0
- package/dist/analysis/static-analysis.d.ts.map +1 -0
- package/dist/analysis/static-analysis.js +279 -0
- package/dist/analysis/static-analysis.js.map +1 -0
- package/dist/bootstrap/index.d.ts +8 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +13 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/orchestrator.d.ts +48 -0
- package/dist/bootstrap/orchestrator.d.ts.map +1 -0
- package/dist/bootstrap/orchestrator.js +363 -0
- package/dist/bootstrap/orchestrator.js.map +1 -0
- package/dist/bootstrap/validator.d.ts +25 -0
- package/dist/bootstrap/validator.d.ts.map +1 -0
- package/dist/bootstrap/validator.js +412 -0
- package/dist/bootstrap/validator.js.map +1 -0
- package/dist/build/atomic.d.ts +74 -0
- package/dist/build/atomic.d.ts.map +1 -0
- package/dist/build/atomic.js +235 -0
- package/dist/build/atomic.js.map +1 -0
- package/dist/build/index.d.ts +10 -0
- package/dist/build/index.d.ts.map +1 -0
- package/dist/build/index.js +26 -0
- package/dist/build/index.js.map +1 -0
- package/dist/build/lock.d.ts +102 -0
- package/dist/build/lock.d.ts.map +1 -0
- package/dist/build/lock.js +297 -0
- package/dist/build/lock.js.map +1 -0
- package/dist/build/manifest.d.ts +138 -0
- package/dist/build/manifest.d.ts.map +1 -0
- package/dist/build/manifest.js +269 -0
- package/dist/build/manifest.js.map +1 -0
- package/dist/build/orchestrator.d.ts +103 -0
- package/dist/build/orchestrator.d.ts.map +1 -0
- package/dist/build/orchestrator.js +524 -0
- package/dist/build/orchestrator.js.map +1 -0
- package/dist/cli/bootstrap.d.ts +77 -0
- package/dist/cli/bootstrap.d.ts.map +1 -0
- package/dist/cli/bootstrap.js +527 -0
- package/dist/cli/bootstrap.js.map +1 -0
- package/dist/cli/build.d.ts +32 -0
- package/dist/cli/build.d.ts.map +1 -0
- package/dist/cli/build.js +156 -0
- package/dist/cli/build.js.map +1 -0
- package/dist/cli/diff.d.ts +23 -0
- package/dist/cli/diff.d.ts.map +1 -0
- package/dist/cli/diff.js +226 -0
- package/dist/cli/diff.js.map +1 -0
- package/dist/cli/hooks.d.ts +29 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +176 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/init.d.ts +53 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +254 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/lint.d.ts +46 -0
- package/dist/cli/lint.d.ts.map +1 -0
- package/dist/cli/lint.js +210 -0
- package/dist/cli/lint.js.map +1 -0
- package/dist/cli/migrate.d.ts +28 -0
- package/dist/cli/migrate.d.ts.map +1 -0
- package/dist/cli/migrate.js +350 -0
- package/dist/cli/migrate.js.map +1 -0
- package/dist/cli/verify.d.ts +21 -0
- package/dist/cli/verify.d.ts.map +1 -0
- package/dist/cli/verify.js +209 -0
- package/dist/cli/verify.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +262 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler/agents-compiler.d.ts +24 -0
- package/dist/compiler/agents-compiler.d.ts.map +1 -0
- package/dist/compiler/agents-compiler.js +192 -0
- package/dist/compiler/agents-compiler.js.map +1 -0
- package/dist/compiler/base-compiler.d.ts +152 -0
- package/dist/compiler/base-compiler.d.ts.map +1 -0
- package/dist/compiler/base-compiler.js +180 -0
- package/dist/compiler/base-compiler.js.map +1 -0
- package/dist/compiler/claude-compiler.d.ts +24 -0
- package/dist/compiler/claude-compiler.d.ts.map +1 -0
- package/dist/compiler/claude-compiler.js +182 -0
- package/dist/compiler/claude-compiler.js.map +1 -0
- package/dist/compiler/cursor-compiler.d.ts +33 -0
- package/dist/compiler/cursor-compiler.d.ts.map +1 -0
- package/dist/compiler/cursor-compiler.js +136 -0
- package/dist/compiler/cursor-compiler.js.map +1 -0
- package/dist/compiler/index.d.ts +7 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +24 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/rule-selector.d.ts +115 -0
- package/dist/compiler/rule-selector.d.ts.map +1 -0
- package/dist/compiler/rule-selector.js +273 -0
- package/dist/compiler/rule-selector.js.map +1 -0
- package/dist/compiler/token-estimator.d.ts +74 -0
- package/dist/compiler/token-estimator.d.ts.map +1 -0
- package/dist/compiler/token-estimator.js +191 -0
- package/dist/compiler/token-estimator.js.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +18 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +48 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +175 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/git/gitignore.d.ts +59 -0
- package/dist/git/gitignore.d.ts.map +1 -0
- package/dist/git/gitignore.js +268 -0
- package/dist/git/gitignore.js.map +1 -0
- package/dist/git/hooks.d.ts +34 -0
- package/dist/git/hooks.d.ts.map +1 -0
- package/dist/git/hooks.js +129 -0
- package/dist/git/hooks.js.map +1 -0
- package/dist/git/husky.d.ts +52 -0
- package/dist/git/husky.d.ts.map +1 -0
- package/dist/git/husky.js +219 -0
- package/dist/git/husky.js.map +1 -0
- package/dist/git/index.d.ts +9 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +15 -0
- package/dist/git/index.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/base-provider.d.ts +43 -0
- package/dist/llm/base-provider.d.ts.map +1 -0
- package/dist/llm/base-provider.js +91 -0
- package/dist/llm/base-provider.js.map +1 -0
- package/dist/llm/index.d.ts +17 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +36 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/prompts/bootstrap-prompt.d.ts +27 -0
- package/dist/llm/prompts/bootstrap-prompt.d.ts.map +1 -0
- package/dist/llm/prompts/bootstrap-prompt.js +278 -0
- package/dist/llm/prompts/bootstrap-prompt.js.map +1 -0
- package/dist/llm/prompts/index.d.ts +5 -0
- package/dist/llm/prompts/index.d.ts.map +1 -0
- package/dist/llm/prompts/index.js +11 -0
- package/dist/llm/prompts/index.js.map +1 -0
- package/dist/llm/provider-factory.d.ts +27 -0
- package/dist/llm/provider-factory.d.ts.map +1 -0
- package/dist/llm/provider-factory.js +213 -0
- package/dist/llm/provider-factory.js.map +1 -0
- package/dist/llm/providers/claude-api.d.ts +21 -0
- package/dist/llm/providers/claude-api.d.ts.map +1 -0
- package/dist/llm/providers/claude-api.js +110 -0
- package/dist/llm/providers/claude-api.js.map +1 -0
- package/dist/llm/providers/claude-code.d.ts +21 -0
- package/dist/llm/providers/claude-code.d.ts.map +1 -0
- package/dist/llm/providers/claude-code.js +120 -0
- package/dist/llm/providers/claude-code.js.map +1 -0
- package/dist/llm/providers/codex-cli.d.ts +25 -0
- package/dist/llm/providers/codex-cli.d.ts.map +1 -0
- package/dist/llm/providers/codex-cli.js +129 -0
- package/dist/llm/providers/codex-cli.js.map +1 -0
- package/dist/llm/providers/cursor-cli.d.ts +24 -0
- package/dist/llm/providers/cursor-cli.d.ts.map +1 -0
- package/dist/llm/providers/cursor-cli.js +106 -0
- package/dist/llm/providers/cursor-cli.js.map +1 -0
- package/dist/llm/providers/gemini-api.d.ts +20 -0
- package/dist/llm/providers/gemini-api.d.ts.map +1 -0
- package/dist/llm/providers/gemini-api.js +121 -0
- package/dist/llm/providers/gemini-api.js.map +1 -0
- package/dist/llm/providers/gemini-cli.d.ts +20 -0
- package/dist/llm/providers/gemini-cli.d.ts.map +1 -0
- package/dist/llm/providers/gemini-cli.js +109 -0
- package/dist/llm/providers/gemini-cli.js.map +1 -0
- package/dist/llm/providers/interactive.d.ts +42 -0
- package/dist/llm/providers/interactive.d.ts.map +1 -0
- package/dist/llm/providers/interactive.js +200 -0
- package/dist/llm/providers/interactive.js.map +1 -0
- package/dist/llm/providers/openai-api.d.ts +21 -0
- package/dist/llm/providers/openai-api.d.ts.map +1 -0
- package/dist/llm/providers/openai-api.js +107 -0
- package/dist/llm/providers/openai-api.js.map +1 -0
- package/dist/llm/types.d.ts +128 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +8 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/parser/index.d.ts +3 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +19 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/path-security.d.ts +40 -0
- package/dist/parser/path-security.d.ts.map +1 -0
- package/dist/parser/path-security.js +183 -0
- package/dist/parser/path-security.js.map +1 -0
- package/dist/parser/rule-parser.d.ts +50 -0
- package/dist/parser/rule-parser.d.ts.map +1 -0
- package/dist/parser/rule-parser.js +203 -0
- package/dist/parser/rule-parser.js.map +1 -0
- package/dist/schemas/config.d.ts +202 -0
- package/dist/schemas/config.d.ts.map +1 -0
- package/dist/schemas/config.js +96 -0
- package/dist/schemas/config.js.map +1 -0
- package/dist/schemas/index.d.ts +3 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +19 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/rule.d.ts +67 -0
- package/dist/schemas/rule.d.ts.map +1 -0
- package/dist/schemas/rule.js +44 -0
- package/dist/schemas/rule.js.map +1 -0
- package/package.json +69 -0
- package/templates/architecture.md +35 -0
- package/templates/bootstrap-prompt.md +242 -0
- package/templates/config.yaml +25 -0
- package/templates/project.md +44 -0
- package/templates/rules/example.md +36 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Build Command
|
|
4
|
+
*
|
|
5
|
+
* Compile rules to target formats with:
|
|
6
|
+
* - Full or incremental builds
|
|
7
|
+
* - Static analysis validation
|
|
8
|
+
* - Progress and statistics output
|
|
9
|
+
*/
|
|
10
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
13
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
14
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
15
|
+
}
|
|
16
|
+
Object.defineProperty(o, k2, desc);
|
|
17
|
+
}) : (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
o[k2] = m[k];
|
|
20
|
+
}));
|
|
21
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
22
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
23
|
+
}) : function(o, v) {
|
|
24
|
+
o["default"] = v;
|
|
25
|
+
});
|
|
26
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
27
|
+
var ownKeys = function(o) {
|
|
28
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
29
|
+
var ar = [];
|
|
30
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
31
|
+
return ar;
|
|
32
|
+
};
|
|
33
|
+
return ownKeys(o);
|
|
34
|
+
};
|
|
35
|
+
return function (mod) {
|
|
36
|
+
if (mod && mod.__esModule) return mod;
|
|
37
|
+
var result = {};
|
|
38
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
39
|
+
__setModuleDefault(result, mod);
|
|
40
|
+
return result;
|
|
41
|
+
};
|
|
42
|
+
})();
|
|
43
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
44
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
45
|
+
};
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.runBuild = runBuild;
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
const loader_1 = require("../config/loader");
|
|
51
|
+
const orchestrator_1 = require("../build/orchestrator");
|
|
52
|
+
const config_1 = require("../schemas/config");
|
|
53
|
+
/**
|
|
54
|
+
* Parse and validate target arguments
|
|
55
|
+
*/
|
|
56
|
+
function parseTargets(targets) {
|
|
57
|
+
if (!targets || targets.length === 0) {
|
|
58
|
+
return [];
|
|
59
|
+
}
|
|
60
|
+
const validTargets = [];
|
|
61
|
+
const invalidTargets = [];
|
|
62
|
+
for (const target of targets) {
|
|
63
|
+
if (config_1.BUILD_TARGETS.includes(target)) {
|
|
64
|
+
validTargets.push(target);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
invalidTargets.push(target);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (invalidTargets.length > 0) {
|
|
71
|
+
throw new Error(`Invalid target(s): ${invalidTargets.join(', ')}. Valid targets: ${config_1.BUILD_TARGETS.join(', ')}`);
|
|
72
|
+
}
|
|
73
|
+
return validTargets;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Run the build command
|
|
77
|
+
*/
|
|
78
|
+
async function runBuild(options) {
|
|
79
|
+
const projectRoot = process.cwd();
|
|
80
|
+
// Check if .context exists
|
|
81
|
+
const contextDir = path.join(projectRoot, '.context');
|
|
82
|
+
const fs = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
83
|
+
if (!fs.existsSync(contextDir)) {
|
|
84
|
+
console.log(chalk_1.default.red('\n❌ Error: .context directory not found.'));
|
|
85
|
+
console.log(chalk_1.default.gray(' Run `ctx init` first to initialize your project.'));
|
|
86
|
+
return 2;
|
|
87
|
+
}
|
|
88
|
+
// Load configuration
|
|
89
|
+
if (!options.quiet) {
|
|
90
|
+
console.log(chalk_1.default.blue('\n🔨 Building context rules...\n'));
|
|
91
|
+
}
|
|
92
|
+
let config;
|
|
93
|
+
try {
|
|
94
|
+
const loadResult = (0, loader_1.loadConfig)(projectRoot);
|
|
95
|
+
config = loadResult.config;
|
|
96
|
+
// Show warnings from config loading
|
|
97
|
+
if (!options.quiet && loadResult.warnings.length > 0) {
|
|
98
|
+
for (const warning of loadResult.warnings) {
|
|
99
|
+
console.log(chalk_1.default.yellow(`⚠️ ${warning}`));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
console.log(chalk_1.default.red(`\n❌ Configuration error: ${error.message}`));
|
|
105
|
+
return 2;
|
|
106
|
+
}
|
|
107
|
+
// Parse targets
|
|
108
|
+
let targets;
|
|
109
|
+
try {
|
|
110
|
+
targets = parseTargets(options.target);
|
|
111
|
+
}
|
|
112
|
+
catch (error) {
|
|
113
|
+
console.log(chalk_1.default.red(`\n❌ ${error.message}`));
|
|
114
|
+
return 2;
|
|
115
|
+
}
|
|
116
|
+
// Create orchestrator
|
|
117
|
+
const orchestrator = new orchestrator_1.BuildOrchestrator(projectRoot, config, {
|
|
118
|
+
quiet: options.quiet,
|
|
119
|
+
verbose: options.verbose,
|
|
120
|
+
});
|
|
121
|
+
// Build options
|
|
122
|
+
const buildOptions = {
|
|
123
|
+
projectRoot,
|
|
124
|
+
targets: targets.length > 0 ? targets : undefined,
|
|
125
|
+
force: options.force || !options.incremental,
|
|
126
|
+
check: options.check,
|
|
127
|
+
skipValidation: options.skipValidation,
|
|
128
|
+
verbose: options.verbose,
|
|
129
|
+
quiet: options.quiet,
|
|
130
|
+
};
|
|
131
|
+
// Execute build
|
|
132
|
+
const result = await orchestrator.build(buildOptions);
|
|
133
|
+
// Output results
|
|
134
|
+
if (!options.quiet) {
|
|
135
|
+
console.log('');
|
|
136
|
+
console.log((0, orchestrator_1.formatBuildResult)(result));
|
|
137
|
+
}
|
|
138
|
+
else if (!result.success) {
|
|
139
|
+
// Even in quiet mode, show errors
|
|
140
|
+
console.log(chalk_1.default.red('\n❌ Build failed'));
|
|
141
|
+
for (const error of result.errors) {
|
|
142
|
+
console.log(chalk_1.default.red(` ${error}`));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Return appropriate exit code
|
|
146
|
+
if (!result.success) {
|
|
147
|
+
// Check if it's a validation error (exit code 1) or runtime error (exit code 2)
|
|
148
|
+
const hasValidationError = result.errors.some(e => e.includes('Validation') ||
|
|
149
|
+
e.includes('duplicate') ||
|
|
150
|
+
e.includes('Parse error') ||
|
|
151
|
+
e.startsWith('[check]'));
|
|
152
|
+
return hasValidationError ? 1 : 2;
|
|
153
|
+
}
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/cli/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diff Command
|
|
3
|
+
*
|
|
4
|
+
* Compare compiled outputs with legacy files:
|
|
5
|
+
* - Show differences between .context-based outputs and existing files
|
|
6
|
+
* - Support --legacy flag for migration comparison
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Diff command options
|
|
10
|
+
*/
|
|
11
|
+
export interface DiffCommandOptions {
|
|
12
|
+
/** Compare with legacy files */
|
|
13
|
+
legacy?: boolean;
|
|
14
|
+
/** Show unified diff format */
|
|
15
|
+
unified?: boolean;
|
|
16
|
+
/** Show detailed output */
|
|
17
|
+
verbose?: boolean;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Run the diff command
|
|
21
|
+
*/
|
|
22
|
+
export declare function runDiff(options: DiffCommandOptions): Promise<number>;
|
|
23
|
+
//# sourceMappingURL=diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/cli/diff.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,gCAAgC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyCD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyK1E"}
|
package/dist/cli/diff.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Diff Command
|
|
4
|
+
*
|
|
5
|
+
* Compare compiled outputs with legacy files:
|
|
6
|
+
* - Show differences between .context-based outputs and existing files
|
|
7
|
+
* - Support --legacy flag for migration comparison
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
43
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
44
|
+
};
|
|
45
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
exports.runDiff = runDiff;
|
|
47
|
+
const path = __importStar(require("path"));
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
/**
|
|
51
|
+
* Simple line-based diff
|
|
52
|
+
*/
|
|
53
|
+
function simpleDiff(oldLines, newLines) {
|
|
54
|
+
const output = [];
|
|
55
|
+
const maxLen = Math.max(oldLines.length, newLines.length);
|
|
56
|
+
for (let i = 0; i < maxLen; i++) {
|
|
57
|
+
const oldLine = oldLines[i];
|
|
58
|
+
const newLine = newLines[i];
|
|
59
|
+
if (oldLine === undefined) {
|
|
60
|
+
output.push(`+ ${newLine}`);
|
|
61
|
+
}
|
|
62
|
+
else if (newLine === undefined) {
|
|
63
|
+
output.push(`- ${oldLine}`);
|
|
64
|
+
}
|
|
65
|
+
else if (oldLine !== newLine) {
|
|
66
|
+
output.push(`- ${oldLine}`);
|
|
67
|
+
output.push(`+ ${newLine}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return output;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Run the diff command
|
|
74
|
+
*/
|
|
75
|
+
async function runDiff(options) {
|
|
76
|
+
const projectRoot = process.cwd();
|
|
77
|
+
if (!options.legacy) {
|
|
78
|
+
console.log(chalk_1.default.yellow('\n⚠️ The diff command currently requires the --legacy flag.'));
|
|
79
|
+
console.log(chalk_1.default.gray(' Usage: ctx diff --legacy'));
|
|
80
|
+
console.log(chalk_1.default.gray(' This compares legacy context files with compiled .context outputs.\n'));
|
|
81
|
+
return 1;
|
|
82
|
+
}
|
|
83
|
+
console.log(chalk_1.default.blue('\n📊 Comparing legacy files with compiled outputs...\n'));
|
|
84
|
+
// Define comparison pairs
|
|
85
|
+
const comparisons = [
|
|
86
|
+
{
|
|
87
|
+
name: 'CLAUDE.md',
|
|
88
|
+
legacy: path.join(projectRoot, 'CLAUDE.md.legacy'),
|
|
89
|
+
compiled: path.join(projectRoot, 'CLAUDE.md'),
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: 'AGENTS.md',
|
|
93
|
+
legacy: path.join(projectRoot, 'AGENTS.md.legacy'),
|
|
94
|
+
compiled: path.join(projectRoot, 'AGENTS.md'),
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: '.cursorrules',
|
|
98
|
+
legacy: path.join(projectRoot, '.cursorrules'),
|
|
99
|
+
compiled: path.join(projectRoot, '.cursor', 'rules'),
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
const results = [];
|
|
103
|
+
for (const comp of comparisons) {
|
|
104
|
+
const result = {
|
|
105
|
+
name: comp.name,
|
|
106
|
+
legacyPath: comp.legacy,
|
|
107
|
+
compiledPath: comp.compiled,
|
|
108
|
+
legacyExists: fs.existsSync(comp.legacy),
|
|
109
|
+
compiledExists: fs.existsSync(comp.compiled),
|
|
110
|
+
identical: false,
|
|
111
|
+
legacyLines: 0,
|
|
112
|
+
compiledLines: 0,
|
|
113
|
+
diffLines: [],
|
|
114
|
+
};
|
|
115
|
+
if (result.legacyExists && result.compiledExists) {
|
|
116
|
+
// Handle directory vs file for cursor
|
|
117
|
+
if (comp.name === '.cursorrules' && fs.statSync(comp.compiled).isDirectory()) {
|
|
118
|
+
const legacyContent = await fs.promises.readFile(comp.legacy, 'utf-8');
|
|
119
|
+
result.legacyLines = legacyContent.split('\n').length;
|
|
120
|
+
// Read all .mdc files and combine
|
|
121
|
+
const mdcFiles = fs.readdirSync(comp.compiled).filter(f => f.endsWith('.mdc'));
|
|
122
|
+
let compiledContent = '';
|
|
123
|
+
for (const mdcFile of mdcFiles) {
|
|
124
|
+
compiledContent += await fs.promises.readFile(path.join(comp.compiled, mdcFile), 'utf-8');
|
|
125
|
+
compiledContent += '\n---\n';
|
|
126
|
+
}
|
|
127
|
+
result.compiledLines = compiledContent.split('\n').length;
|
|
128
|
+
// Can't easily diff one-to-many, just note structure difference
|
|
129
|
+
result.identical = false;
|
|
130
|
+
result.diffLines = [
|
|
131
|
+
`Legacy: single file with ${result.legacyLines} lines`,
|
|
132
|
+
`Compiled: ${mdcFiles.length} .mdc file(s) with ${result.compiledLines} total lines`,
|
|
133
|
+
];
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
const legacyContent = await fs.promises.readFile(comp.legacy, 'utf-8');
|
|
137
|
+
const compiledContent = await fs.promises.readFile(comp.compiled, 'utf-8');
|
|
138
|
+
const legacyLines = legacyContent.split('\n');
|
|
139
|
+
const compiledLines = compiledContent.split('\n');
|
|
140
|
+
result.legacyLines = legacyLines.length;
|
|
141
|
+
result.compiledLines = compiledLines.length;
|
|
142
|
+
result.identical = legacyContent === compiledContent;
|
|
143
|
+
if (!result.identical) {
|
|
144
|
+
result.diffLines = simpleDiff(legacyLines, compiledLines);
|
|
145
|
+
// Limit diff output
|
|
146
|
+
if (result.diffLines.length > 50) {
|
|
147
|
+
result.diffLines = [
|
|
148
|
+
...result.diffLines.slice(0, 25),
|
|
149
|
+
`... (${result.diffLines.length - 50} more lines) ...`,
|
|
150
|
+
...result.diffLines.slice(-25),
|
|
151
|
+
];
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
results.push(result);
|
|
157
|
+
}
|
|
158
|
+
// Output results
|
|
159
|
+
let hasLegacy = false;
|
|
160
|
+
let hasCompiled = false;
|
|
161
|
+
for (const result of results) {
|
|
162
|
+
console.log(chalk_1.default.bold(`${result.name}:`));
|
|
163
|
+
if (!result.legacyExists && !result.compiledExists) {
|
|
164
|
+
console.log(chalk_1.default.gray(' Neither legacy nor compiled file exists\n'));
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (!result.legacyExists) {
|
|
168
|
+
console.log(chalk_1.default.gray(' No legacy file found'));
|
|
169
|
+
if (result.compiledExists) {
|
|
170
|
+
hasCompiled = true;
|
|
171
|
+
console.log(chalk_1.default.green(` Compiled: ${result.compiledLines} lines`));
|
|
172
|
+
}
|
|
173
|
+
console.log('');
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
hasLegacy = true;
|
|
177
|
+
console.log(chalk_1.default.yellow(` Legacy: ${result.legacyLines} lines`));
|
|
178
|
+
if (!result.compiledExists) {
|
|
179
|
+
console.log(chalk_1.default.gray(' No compiled file (run `ctx build` first)'));
|
|
180
|
+
console.log('');
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
hasCompiled = true;
|
|
184
|
+
console.log(chalk_1.default.green(` Compiled: ${result.compiledLines} lines`));
|
|
185
|
+
if (result.identical) {
|
|
186
|
+
console.log(chalk_1.default.green(' ✅ Files are identical'));
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
console.log(chalk_1.default.yellow(' ⚠️ Files differ:'));
|
|
190
|
+
if (options.verbose || options.unified) {
|
|
191
|
+
for (const line of result.diffLines) {
|
|
192
|
+
if (line.startsWith('+')) {
|
|
193
|
+
console.log(chalk_1.default.green(` ${line}`));
|
|
194
|
+
}
|
|
195
|
+
else if (line.startsWith('-')) {
|
|
196
|
+
console.log(chalk_1.default.red(` ${line}`));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
console.log(chalk_1.default.gray(` ${line}`));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
console.log(chalk_1.default.gray(` ${result.diffLines.length} difference(s) found`));
|
|
205
|
+
console.log(chalk_1.default.gray(' Use --verbose to see details'));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
console.log('');
|
|
209
|
+
}
|
|
210
|
+
// Summary
|
|
211
|
+
if (!hasLegacy) {
|
|
212
|
+
console.log(chalk_1.default.gray('No legacy files found for comparison.'));
|
|
213
|
+
console.log(chalk_1.default.gray('To compare, rename existing files with .legacy extension:'));
|
|
214
|
+
console.log(chalk_1.default.gray(' mv CLAUDE.md CLAUDE.md.legacy'));
|
|
215
|
+
return 0;
|
|
216
|
+
}
|
|
217
|
+
if (!hasCompiled) {
|
|
218
|
+
console.log(chalk_1.default.yellow('No compiled outputs found.'));
|
|
219
|
+
console.log(chalk_1.default.gray('Run `ctx build` first to generate outputs.'));
|
|
220
|
+
return 1;
|
|
221
|
+
}
|
|
222
|
+
console.log(chalk_1.default.blue('💡 Migration tip:'));
|
|
223
|
+
console.log(chalk_1.default.gray(' After verifying the diff, run `ctx migrate --complete` to remove legacy files.'));
|
|
224
|
+
return 0;
|
|
225
|
+
}
|
|
226
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/cli/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks Command
|
|
3
|
+
*
|
|
4
|
+
* CLI command for managing git hooks integration.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Hooks command options
|
|
8
|
+
*/
|
|
9
|
+
export interface HooksCommandOptions {
|
|
10
|
+
/** Install hooks without prompts */
|
|
11
|
+
install?: boolean;
|
|
12
|
+
/** Remove hooks */
|
|
13
|
+
remove?: boolean;
|
|
14
|
+
/** Skip Husky installation */
|
|
15
|
+
skipHusky?: boolean;
|
|
16
|
+
/** Skip gitignore updates */
|
|
17
|
+
skipGitignore?: boolean;
|
|
18
|
+
/** Force overwrite existing hooks */
|
|
19
|
+
force?: boolean;
|
|
20
|
+
/** Dry run - show what would happen */
|
|
21
|
+
dryRun?: boolean;
|
|
22
|
+
/** Verbose output */
|
|
23
|
+
verbose?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run the hooks command
|
|
27
|
+
*/
|
|
28
|
+
export declare function runHooks(options: HooksCommandOptions): Promise<number>;
|
|
29
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qCAAqC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uCAAuC;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5E"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Hooks Command
|
|
4
|
+
*
|
|
5
|
+
* CLI command for managing git hooks integration.
|
|
6
|
+
*/
|
|
7
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
8
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
9
|
+
};
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.runHooks = runHooks;
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
14
|
+
const husky_1 = require("../git/husky");
|
|
15
|
+
const gitignore_1 = require("../git/gitignore");
|
|
16
|
+
const hooks_1 = require("../git/hooks");
|
|
17
|
+
/**
|
|
18
|
+
* Run the hooks command
|
|
19
|
+
*/
|
|
20
|
+
async function runHooks(options) {
|
|
21
|
+
const projectRoot = process.cwd();
|
|
22
|
+
const huskyManager = new husky_1.HuskyManager(projectRoot);
|
|
23
|
+
const gitignoreManager = new gitignore_1.GitignoreManager(projectRoot);
|
|
24
|
+
// Handle remove mode
|
|
25
|
+
if (options.remove) {
|
|
26
|
+
return removeHooks(huskyManager, gitignoreManager, options);
|
|
27
|
+
}
|
|
28
|
+
// Handle install mode (default)
|
|
29
|
+
return installHooks(huskyManager, gitignoreManager, options);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Install hooks
|
|
33
|
+
*/
|
|
34
|
+
async function installHooks(huskyManager, gitignoreManager, options) {
|
|
35
|
+
console.log(chalk_1.default.blue('\n🔗 Setting up git hooks...\n'));
|
|
36
|
+
// Check Husky status
|
|
37
|
+
const status = await huskyManager.checkStatus();
|
|
38
|
+
if (options.verbose) {
|
|
39
|
+
console.log(chalk_1.default.gray('Husky status:'));
|
|
40
|
+
console.log(chalk_1.default.gray(` Installed: ${status.installed}`));
|
|
41
|
+
console.log(chalk_1.default.gray(` Initialized: ${status.initialized}`));
|
|
42
|
+
console.log(chalk_1.default.gray(` Has pre-commit: ${status.hasPreCommitHook}`));
|
|
43
|
+
console.log(chalk_1.default.gray(` Has ctx hook: ${status.hasCtxHook}`));
|
|
44
|
+
console.log('');
|
|
45
|
+
}
|
|
46
|
+
// If ctx hook already exists
|
|
47
|
+
if (status.hasCtxHook && !options.force) {
|
|
48
|
+
console.log(chalk_1.default.green('✅ ctx pre-commit hook is already configured.'));
|
|
49
|
+
return 0;
|
|
50
|
+
}
|
|
51
|
+
// Install Husky if needed
|
|
52
|
+
if (!options.skipHusky && !status.installed) {
|
|
53
|
+
if (options.dryRun) {
|
|
54
|
+
console.log(chalk_1.default.cyan('Would install Husky as dev dependency'));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Ask for confirmation unless --install flag is set
|
|
58
|
+
if (!options.install) {
|
|
59
|
+
const { confirmInstall } = await inquirer_1.default.prompt([
|
|
60
|
+
{
|
|
61
|
+
type: 'confirm',
|
|
62
|
+
name: 'confirmInstall',
|
|
63
|
+
message: 'Husky is not installed. Install it now?',
|
|
64
|
+
default: true,
|
|
65
|
+
},
|
|
66
|
+
]);
|
|
67
|
+
if (!confirmInstall) {
|
|
68
|
+
console.log(chalk_1.default.yellow('⚠️ Skipping Husky installation.'));
|
|
69
|
+
console.log(chalk_1.default.gray(' You can set up the hook manually in .git/hooks/pre-commit'));
|
|
70
|
+
return 0;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
console.log(chalk_1.default.gray('Installing Husky...'));
|
|
74
|
+
const installed = await huskyManager.install();
|
|
75
|
+
if (!installed) {
|
|
76
|
+
console.log(chalk_1.default.red('❌ Failed to install Husky.'));
|
|
77
|
+
return 2;
|
|
78
|
+
}
|
|
79
|
+
console.log(chalk_1.default.green('✅ Husky installed'));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Initialize Husky if needed
|
|
83
|
+
if (!options.skipHusky && !status.initialized) {
|
|
84
|
+
if (options.dryRun) {
|
|
85
|
+
console.log(chalk_1.default.cyan('Would initialize Husky (.husky directory)'));
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
console.log(chalk_1.default.gray('Initializing Husky...'));
|
|
89
|
+
const initialized = await huskyManager.initialize();
|
|
90
|
+
if (!initialized) {
|
|
91
|
+
console.log(chalk_1.default.red('❌ Failed to initialize Husky.'));
|
|
92
|
+
return 2;
|
|
93
|
+
}
|
|
94
|
+
console.log(chalk_1.default.green('✅ Husky initialized'));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Generate and add pre-commit hook
|
|
98
|
+
const hookContent = (0, hooks_1.generatePreCommitHook)({
|
|
99
|
+
incremental: true,
|
|
100
|
+
autoStage: true,
|
|
101
|
+
verbose: options.verbose,
|
|
102
|
+
});
|
|
103
|
+
if (options.dryRun) {
|
|
104
|
+
console.log(chalk_1.default.cyan('\nWould create pre-commit hook:'));
|
|
105
|
+
console.log(chalk_1.default.gray('─'.repeat(40)));
|
|
106
|
+
console.log(chalk_1.default.gray(hookContent));
|
|
107
|
+
console.log(chalk_1.default.gray('─'.repeat(40)));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
const added = await huskyManager.addPreCommitHook(hookContent);
|
|
111
|
+
if (!added) {
|
|
112
|
+
console.log(chalk_1.default.red('❌ Failed to add pre-commit hook.'));
|
|
113
|
+
return 2;
|
|
114
|
+
}
|
|
115
|
+
console.log(chalk_1.default.green('✅ Pre-commit hook configured'));
|
|
116
|
+
}
|
|
117
|
+
// Update .gitignore
|
|
118
|
+
if (!options.skipGitignore) {
|
|
119
|
+
if (options.dryRun) {
|
|
120
|
+
const missing = await gitignoreManager.getMissingEntries();
|
|
121
|
+
if (missing.length > 0) {
|
|
122
|
+
console.log(chalk_1.default.cyan('\nWould add to .gitignore:'));
|
|
123
|
+
for (const entry of missing) {
|
|
124
|
+
console.log(chalk_1.default.gray(` ${entry}`));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
const { added } = await gitignoreManager.addCtxEntries();
|
|
130
|
+
if (added.length > 0) {
|
|
131
|
+
console.log(chalk_1.default.green('✅ Updated .gitignore'));
|
|
132
|
+
if (options.verbose) {
|
|
133
|
+
for (const entry of added) {
|
|
134
|
+
console.log(chalk_1.default.gray(` + ${entry}`));
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
console.log(chalk_1.default.green('\n✅ Git hooks setup complete!\n'));
|
|
141
|
+
console.log(chalk_1.default.gray('The pre-commit hook will:'));
|
|
142
|
+
console.log(chalk_1.default.gray(' 1. Run `ctx build --incremental` before each commit'));
|
|
143
|
+
console.log(chalk_1.default.gray(' 2. Auto-stage compiled outputs (CLAUDE.md, AGENTS.md, .cursor/rules/)'));
|
|
144
|
+
console.log(chalk_1.default.gray(' 3. Block commits if validation errors are found'));
|
|
145
|
+
return 0;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Remove hooks
|
|
149
|
+
*/
|
|
150
|
+
async function removeHooks(huskyManager, gitignoreManager, options) {
|
|
151
|
+
console.log(chalk_1.default.blue('\n🔗 Removing ctx git hooks...\n'));
|
|
152
|
+
if (options.dryRun) {
|
|
153
|
+
console.log(chalk_1.default.cyan('Would remove ctx pre-commit hook'));
|
|
154
|
+
console.log(chalk_1.default.cyan('Would remove ctx entries from .gitignore'));
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
// Remove ctx hook
|
|
158
|
+
const removed = await huskyManager.removeCtxHook();
|
|
159
|
+
if (removed) {
|
|
160
|
+
console.log(chalk_1.default.green('✅ Removed ctx pre-commit hook'));
|
|
161
|
+
}
|
|
162
|
+
// Remove gitignore entries
|
|
163
|
+
const removedEntries = await gitignoreManager.removeCtxEntries();
|
|
164
|
+
if (removedEntries.length > 0) {
|
|
165
|
+
console.log(chalk_1.default.green('✅ Removed ctx entries from .gitignore'));
|
|
166
|
+
if (options.verbose) {
|
|
167
|
+
for (const entry of removedEntries) {
|
|
168
|
+
console.log(chalk_1.default.gray(` - ${entry}`));
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
console.log(chalk_1.default.green('\n✅ Git hooks removed.'));
|
|
174
|
+
return 0;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
|