@fyuld/snitch 2.3.10 → 2.3.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"firstRun.d.ts","sourceRoot":"","sources":["../../src/commands/firstRun.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB7F"}
1
+ {"version":3,"file":"firstRun.d.ts","sourceRoot":"","sources":["../../src/commands/firstRun.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,wBAAsB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC7F"}
@@ -36,27 +36,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.firstRunCommand = firstRunCommand;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
39
40
  const init_1 = require("./init");
40
- const prepare_1 = require("./prepare");
41
+ const json_merge_1 = require("../utils/json-merge");
41
42
  async function firstRunCommand(projectName, maybeUrl) {
43
+ const result = await (0, init_1.init)(projectName, maybeUrl);
44
+ for (const file of result.files) {
45
+ fs.writeFileSync(path.resolve(file.path), file.content, 'utf-8');
46
+ console.log(`Created ${file.path}`);
47
+ }
42
48
  const packageJsonPath = path.resolve('package.json');
43
- if (!fs.existsSync(packageJsonPath)) {
44
- const packageJson = {
45
- name: projectName,
46
- version: '0.0.1',
47
- description: '',
48
- main: 'index.js',
49
- scripts: {
50
- test: 'echo "Error: no test specified" && exit 1',
51
- },
52
- keywords: [],
53
- author: '',
54
- license: 'UNLICENSED',
55
- };
56
- fs.writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2), 'utf-8');
57
- console.log('Created package.json');
49
+ for (const update of result.packageJsonUpdates) {
50
+ const currentPackageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
51
+ const mergedPackageJson = (0, json_merge_1.mergeJson)(currentPackageJson, update.updates);
52
+ fs.writeFileSync(packageJsonPath, JSON.stringify(mergedPackageJson, null, 2), 'utf-8');
53
+ console.log('Updated package.json with side effects');
54
+ }
55
+ const createdDirs = [];
56
+ for (const dir of result.directories) {
57
+ const resolvedPath = path.resolve(dir.path);
58
+ if (!fs.existsSync(resolvedPath)) {
59
+ fs.mkdirSync(resolvedPath, { recursive: true });
60
+ createdDirs.push(dir.path);
61
+ }
62
+ }
63
+ if (createdDirs.length > 0) {
64
+ console.log('Created directories:');
65
+ createdDirs.forEach((dir) => console.log(` - ${dir}`));
66
+ }
67
+ console.log('Created .snitchconfig.json in current directory');
68
+ console.log(` Location: ${path.resolve('.snitchconfig.json')}`);
69
+ console.log('\nYou can now customize the configuration for your project.');
70
+ if (result.npmInstallRequired) {
71
+ console.log('Running npm install to install packages from package.json...');
72
+ (0, child_process_1.execSync)('npm install', { stdio: 'inherit' });
73
+ console.log('Installed all packages');
58
74
  }
59
- await (0, init_1.initCommand)(maybeUrl);
60
- await (0, prepare_1.prepareCommand)();
61
75
  }
62
76
  //# sourceMappingURL=firstRun.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"firstRun.js","sourceRoot":"","sources":["../../src/commands/firstRun.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,0CAqBC;AA3BD,uCAAwB;AACxB,2CAA4B;AAE5B,iCAAoC;AACpC,uCAA0C;AAEnC,KAAK,UAAU,eAAe,CAAC,WAAwB,EAAE,QAAc;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,MAAM,WAAW,GAAG;YAClB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE;gBACP,IAAI,EAAE,2CAA2C;aAClD;YACD,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,OAAO,EAAE,YAAY;SACtB,CAAA;QACD,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QAChF,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,IAAA,kBAAW,EAAC,QAAQ,CAAC,CAAA;IAC3B,MAAM,IAAA,wBAAc,GAAE,CAAA;AACxB,CAAC"}
1
+ {"version":3,"file":"firstRun.js","sourceRoot":"","sources":["../../src/commands/firstRun.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,0CAuCC;AA9CD,uCAAwB;AACxB,2CAA4B;AAC5B,iDAAwC;AAExC,iCAA6B;AAC7B,oDAA+C;AAExC,KAAK,UAAU,eAAe,CAAC,WAAwB,EAAE,QAAc;IAC5E,MAAM,MAAM,GAAG,MAAM,IAAA,WAAI,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAEhD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACpD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;QAChF,MAAM,iBAAiB,GAAG,IAAA,sBAAS,EAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACvE,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QACtF,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAA;IAChE,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;IAE1E,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,IAAA,wBAAQ,EAAC,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;AACH,CAAC"}
@@ -1,3 +1,5 @@
1
- import { Uri } from '../datamodel/uri';
1
+ import { Uri, ProjectName } from '../datamodel/uri';
2
+ import { PrepareResult } from '../utils/third-party-tools';
3
+ export declare function init(projectName: ProjectName, uri?: Uri): Promise<PrepareResult>;
2
4
  export declare function initCommand(uri?: Uri): Promise<void>;
3
5
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAItC,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAInD,OAAO,EAAE,aAAa,EAAgB,MAAM,4BAA4B,CAAA;AAGxE,wBAAsB,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAsCtF;AAED,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB1D"}
@@ -33,11 +33,48 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.init = init;
36
37
  exports.initCommand = initCommand;
37
38
  const path = __importStar(require("path"));
38
39
  const fs = __importStar(require("fs"));
39
40
  const defaultConfigInit_1 = require("./init/defaultConfigInit");
40
41
  const downloadedConfigInit_1 = require("./init/downloadedConfigInit");
42
+ const prepare_1 = require("./prepare");
43
+ async function init(projectName, uri) {
44
+ let configContent;
45
+ if (uri) {
46
+ configContent = await (0, downloadedConfigInit_1.downloadConfig)(uri);
47
+ (0, downloadedConfigInit_1.validateConfig)(configContent, uri);
48
+ }
49
+ else {
50
+ configContent = (0, defaultConfigInit_1.getBundledConfig)();
51
+ }
52
+ const config = JSON.parse(configContent);
53
+ const prepareResult = await (0, prepare_1.prepare)(config);
54
+ const packageJson = {
55
+ name: projectName,
56
+ version: '0.0.1',
57
+ description: '',
58
+ main: 'index.js',
59
+ scripts: {
60
+ test: 'echo "Error: no test specified" && exit 1',
61
+ },
62
+ keywords: [],
63
+ author: '',
64
+ license: 'UNLICENSED',
65
+ };
66
+ const allFiles = [
67
+ { path: 'package.json', content: JSON.stringify(packageJson, null, 2) },
68
+ { path: '.snitchconfig.json', content: configContent },
69
+ ...prepareResult.files,
70
+ ];
71
+ return {
72
+ files: allFiles,
73
+ directories: prepareResult.directories,
74
+ packageJsonUpdates: prepareResult.packageJsonUpdates,
75
+ npmInstallRequired: prepareResult.npmInstallRequired,
76
+ };
77
+ }
41
78
  async function initCommand(uri) {
42
79
  const targetPath = path.resolve('.snitchconfig.json');
43
80
  if (fs.existsSync(targetPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,kCAyBC;AA/BD,2CAA4B;AAC5B,uCAAwB;AAExB,gEAA2D;AAC3D,sEAA4E;AAErE,KAAK,UAAU,WAAW,CAAC,GAAS;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;QACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAM;IACR,CAAC;IAED,IAAI,aAAqB,CAAA;IAEzB,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;QAC9C,aAAa,GAAG,MAAM,IAAA,qCAAc,EAAC,GAAG,CAAC,CAAA;QACzC,IAAA,qCAAc,EAAC,aAAa,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAA,oCAAgB,GAAE,CAAA;IACpC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEpD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,oBAsCC;AAED,kCAyBC;AA1ED,2CAA4B;AAC5B,uCAAwB;AAExB,gEAA2D;AAC3D,sEAA4E;AAC5E,uCAAmC;AAI5B,KAAK,UAAU,IAAI,CAAC,WAAwB,EAAE,GAAS;IAC5D,IAAI,aAAqB,CAAA;IAEzB,IAAI,GAAG,EAAE,CAAC;QACR,aAAa,GAAG,MAAM,IAAA,qCAAc,EAAC,GAAG,CAAC,CAAA;QACzC,IAAA,qCAAc,EAAC,aAAa,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAA,oCAAgB,GAAE,CAAA;IACpC,CAAC;IAED,MAAM,MAAM,GAAwB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC7D,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAO,EAAC,MAAM,CAAC,CAAA;IAE3C,MAAM,WAAW,GAAG;QAClB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP,IAAI,EAAE,2CAA2C;SAClD;QACD,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,YAAY;KACtB,CAAA;IAED,MAAM,QAAQ,GAAmB;QAC/B,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACvE,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,aAAa,EAAE;QACtD,GAAG,aAAa,CAAC,KAAK;KACvB,CAAA;IAED,OAAO;QACL,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,aAAa,CAAC,WAAW;QACtC,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;QACpD,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;KACrD,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,GAAS;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAErD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAA;QACrE,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAA;QACzC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAM;IACR,CAAC;IAED,IAAI,aAAqB,CAAA;IAEzB,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAA;QAC9C,aAAa,GAAG,MAAM,IAAA,qCAAc,EAAC,GAAG,CAAC,CAAA;QACzC,IAAA,qCAAc,EAAC,aAAa,EAAE,GAAG,CAAC,CAAA;IACpC,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,IAAA,oCAAgB,GAAE,CAAA;IACpC,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAA;IAEpD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;AAC5E,CAAC"}
@@ -1,2 +1,5 @@
1
+ import { PrepareResult } from '../utils/third-party-tools';
2
+ import { SnitchConfiguration } from '../datamodel/snitch-configuration';
3
+ export declare function prepare(config: SnitchConfiguration): Promise<PrepareResult>;
1
4
  export declare function prepareCommand(): Promise<void>;
2
5
  //# sourceMappingURL=prepare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAQA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAqCpD"}
1
+ {"version":3,"file":"prepare.d.ts","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"AAMA,OAAO,EAA0B,aAAa,EAAqB,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAA0C,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AAG/G,wBAAsB,OAAO,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAuBjF;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA0CpD"}
@@ -36,13 +36,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.prepare = prepare;
39
40
  exports.prepareCommand = prepareCommand;
40
41
  const fs = __importStar(require("fs"));
41
42
  const path = __importStar(require("path"));
42
43
  const https = __importStar(require("https"));
43
44
  const ajv_1 = __importDefault(require("ajv"));
45
+ const child_process_1 = require("child_process");
44
46
  const SnitchConfigManager_1 = require("../SnitchConfigManager");
45
- const enforcement_software_1 = require("../utils/enforcement-software");
47
+ const third_party_tools_1 = require("../utils/third-party-tools");
48
+ const json_merge_1 = require("../utils/json-merge");
49
+ async function prepare(config) {
50
+ const resolvedTools = [];
51
+ if (config.thirdPartyTools && config.thirdPartyTools.length > 0) {
52
+ for (const toolEntry of config.thirdPartyTools) {
53
+ const resolvedTool = await resolveThirdPartyTool(toolEntry);
54
+ resolvedTools.push(resolvedTool);
55
+ }
56
+ }
57
+ const toolsResult = resolvedTools.length > 0
58
+ ? await (0, third_party_tools_1.prepareThirdPartyTools)(resolvedTools)
59
+ : { files: [], directories: [], packageJsonUpdates: [], npmInstallRequired: false };
60
+ const directories = [{ path: config.sourceDirectory }, { path: config.testsDirectory }];
61
+ return {
62
+ files: toolsResult.files,
63
+ directories,
64
+ packageJsonUpdates: toolsResult.packageJsonUpdates,
65
+ npmInstallRequired: toolsResult.npmInstallRequired,
66
+ };
67
+ }
46
68
  async function prepareCommand() {
47
69
  const config = SnitchConfigManager_1.SnitchConfigManager.loadConfig();
48
70
  const packageJsonPath = path.resolve('package.json');
@@ -50,29 +72,34 @@ async function prepareCommand() {
50
72
  console.log('No package.json found. Please run "npm init" first.');
51
73
  return;
52
74
  }
53
- if (config.thirdPartyTools && config.thirdPartyTools.length > 0) {
54
- const resolvedTools = [];
55
- for (const toolEntry of config.thirdPartyTools) {
56
- const resolvedTool = await resolveThirdPartyTool(toolEntry);
57
- resolvedTools.push(resolvedTool);
58
- }
59
- await (0, enforcement_software_1.setupThirdPartyTools)(resolvedTools);
75
+ const result = await prepare(config);
76
+ for (const file of result.files) {
77
+ fs.writeFileSync(path.resolve(file.path), file.content, 'utf-8');
78
+ console.log(`Created ${file.path}`);
60
79
  }
61
- const sourceDir = path.resolve(config.sourceDirectory);
62
- const testDir = path.resolve(config.testsDirectory);
63
- let createdDirs = [];
64
- if (!fs.existsSync(sourceDir)) {
65
- fs.mkdirSync(sourceDir, { recursive: true });
66
- createdDirs.push(config.sourceDirectory);
80
+ for (const update of result.packageJsonUpdates) {
81
+ const currentPackageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
82
+ const mergedPackageJson = (0, json_merge_1.mergeJson)(currentPackageJson, update.updates);
83
+ fs.writeFileSync(packageJsonPath, JSON.stringify(mergedPackageJson, null, 2), 'utf-8');
84
+ console.log('Updated package.json with side effects');
67
85
  }
68
- if (!fs.existsSync(testDir)) {
69
- fs.mkdirSync(testDir, { recursive: true });
70
- createdDirs.push(config.testsDirectory);
86
+ const createdDirs = [];
87
+ for (const dir of result.directories) {
88
+ const resolvedPath = path.resolve(dir.path);
89
+ if (!fs.existsSync(resolvedPath)) {
90
+ fs.mkdirSync(resolvedPath, { recursive: true });
91
+ createdDirs.push(dir.path);
92
+ }
71
93
  }
72
94
  if (createdDirs.length > 0) {
73
95
  console.log('Created directories:');
74
96
  createdDirs.forEach((dir) => console.log(` - ${dir}`));
75
97
  }
98
+ if (result.npmInstallRequired) {
99
+ console.log('Running npm install to install packages from package.json...');
100
+ (0, child_process_1.execSync)('npm install', { stdio: 'inherit' });
101
+ console.log('Installed all packages');
102
+ }
76
103
  }
77
104
  async function resolveThirdPartyTool(entry) {
78
105
  if ('$ref' in entry) {
@@ -1 +1 @@
1
- {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prepare.js","sourceRoot":"","sources":["../../src/commands/prepare.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,0BAuBC;AAED,wCA0CC;AA7ED,uCAAwB;AACxB,2CAA4B;AAC5B,6CAA8B;AAC9B,8CAAqB;AACrB,iDAAwC;AACxC,gEAA4D;AAC5D,kEAAqG;AAErG,oDAA+C;AAExC,KAAK,UAAU,OAAO,CAAC,MAA2B;IACvD,MAAM,aAAa,GAAqB,EAAE,CAAA;IAE1C,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC/C,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAA;YAC3D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GACf,aAAa,CAAC,MAAM,GAAG,CAAC;QACtB,CAAC,CAAC,MAAM,IAAA,0CAAsB,EAAC,aAAa,CAAC;QAC7C,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAA;IAEvF,MAAM,WAAW,GAAwB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAA;IAE5G,OAAO;QACL,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,WAAW;QACX,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;QAClD,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;KACnD,CAAA;AACH,CAAC;AAEM,KAAK,UAAU,cAAc;IAClC,MAAM,MAAM,GAAG,yCAAmB,CAAC,UAAU,EAAE,CAAA;IAE/C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;QAClE,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/C,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;QAChF,MAAM,iBAAiB,GAAG,IAAA,sBAAS,EAAC,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACvE,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;QACtF,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAC/C,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAA;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAA;QAC3E,IAAA,wBAAQ,EAAC,aAAa,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;QAC7C,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAA6C;IAChF,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAA;QACtB,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,SAAS,GAAG,EAAE,CAAC,CAAA;QAC9D,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACxC,OAAO,MAAwB,CAAA;IACjC,CAAC;IAED,IAAI,UAAU,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrE,CAAC;IAED,OAAO,KAAuB,CAAA;AAChC,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAa,EAAE,MAAc;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,wDAAwD,CAAC,CAAA;IACpG,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;IAE/D,MAAM,GAAG,GAAG,IAAI,aAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEpC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,YAAY,IAAI,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC7F,0BAA0B,CAAA;QAC5B,MAAM,IAAI,KAAK,CAAC,6CAA6C,MAAM,MAAM,MAAM,EAAE,CAAC,CAAA;IACpF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAW;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,KAAK;aACF,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,IAAI,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,UAAU,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;gBACnE,OAAM;YACR,CAAC;YACD,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,IAAI,KAAK,CAAA;YACf,CAAC,CAAC,CAAA;YACF,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,CAAA;YACf,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { ThirdPartyTool } from '../datamodel/snitch-configuration';
2
+ export type FileToCreate = {
3
+ path: string;
4
+ content: string;
5
+ };
6
+ export type DirectoryToCreate = {
7
+ path: string;
8
+ };
9
+ export type PackageJsonUpdate = {
10
+ updates: object;
11
+ };
12
+ export type PrepareResult = {
13
+ files: FileToCreate[];
14
+ directories: DirectoryToCreate[];
15
+ packageJsonUpdates: PackageJsonUpdate[];
16
+ npmInstallRequired: boolean;
17
+ };
18
+ export declare function prepareThirdPartyTools(tools: ThirdPartyTool[]): Promise<PrepareResult>;
19
+ //# sourceMappingURL=third-party-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"third-party-tools.d.ts","sourceRoot":"","sources":["../../src/utils/third-party-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAIlE,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,WAAW,EAAE,iBAAiB,EAAE,CAAA;IAChC,kBAAkB,EAAE,iBAAiB,EAAE,CAAA;IACvC,kBAAkB,EAAE,OAAO,CAAA;CAC5B,CAAA;AAYD,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CA0D5F"}
@@ -33,24 +33,17 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.setupThirdPartyTools = setupThirdPartyTools;
37
- const fs = __importStar(require("fs"));
38
- const path = __importStar(require("path"));
39
- const child_process_1 = require("child_process");
36
+ exports.prepareThirdPartyTools = prepareThirdPartyTools;
40
37
  const https = __importStar(require("https"));
41
- const json_merge_1 = require("./json-merge");
42
- async function setupThirdPartyTools(tools) {
43
- // Phase 1: Download and prepare all configs (no file creation yet)
38
+ async function prepareThirdPartyTools(tools) {
44
39
  const preparedTools = [];
45
40
  const seenFilenames = new Set();
46
41
  for (const tool of tools) {
47
42
  const { configFilename, configuration, sideEffects, title, software } = tool;
48
- // Check for duplicate filenames
49
43
  if (seenFilenames.has(configFilename)) {
50
44
  throw new Error(`Duplicate config filename detected: ${configFilename}. Multiple tools are trying to create the same file.`);
51
45
  }
52
46
  seenFilenames.add(configFilename);
53
- // Download and format config
54
47
  const configObject = await resolveConfiguration(configuration);
55
48
  const configContent = formatConfigContent(configObject, configFilename, title);
56
49
  preparedTools.push({
@@ -60,31 +53,34 @@ async function setupThirdPartyTools(tools) {
60
53
  sideEffects,
61
54
  });
62
55
  }
63
- // Phase 2: All validations passed, now create files
64
- for (const prepared of preparedTools) {
65
- fs.writeFileSync(path.resolve(prepared.configFilename), prepared.configContent, 'utf-8');
66
- console.log(`Created ${prepared.configFilename}`);
67
- }
68
- // Phase 3: Apply side effects to package.json
69
- for (const prepared of preparedTools) {
56
+ const files = preparedTools.map((prepared) => ({
57
+ path: prepared.configFilename,
58
+ content: prepared.configContent,
59
+ }));
60
+ const packageJsonUpdates = preparedTools.flatMap((prepared) => {
61
+ const updates = [];
70
62
  const packageName = prepared.software.name;
71
63
  const packageVersion = prepared.software.version || 'latest';
72
- const devDependencyUpdate = {
73
- 'package.json': {
64
+ updates.push({
65
+ updates: {
74
66
  devDependencies: {
75
67
  [packageName]: packageVersion,
76
68
  },
77
69
  },
78
- };
79
- applySideEffects(devDependencyUpdate);
80
- if (prepared.sideEffects) {
81
- applySideEffects(prepared.sideEffects);
70
+ });
71
+ if (prepared.sideEffects && prepared.sideEffects['package.json']) {
72
+ updates.push({
73
+ updates: prepared.sideEffects['package.json'],
74
+ });
82
75
  }
83
- }
84
- // Phase 4: Run npm install
85
- console.log('Running npm install to install packages from package.json...');
86
- (0, child_process_1.execSync)('npm install', { stdio: 'inherit' });
87
- console.log('Installed all packages');
76
+ return updates;
77
+ });
78
+ return {
79
+ files,
80
+ directories: [],
81
+ packageJsonUpdates,
82
+ npmInstallRequired: true,
83
+ };
88
84
  }
89
85
  async function resolveConfiguration(source) {
90
86
  if (typeof source === 'object') {
@@ -111,8 +107,8 @@ async function resolveConfiguration(source) {
111
107
  });
112
108
  }
113
109
  function formatConfigContent(content, filename, toolTitle) {
114
- const ext = path.extname(filename);
115
- const basename = path.basename(filename);
110
+ const ext = filename.substring(filename.lastIndexOf('.'));
111
+ const basename = filename.substring(filename.lastIndexOf('/') + 1);
116
112
  if (ext === '.js') {
117
113
  return `module.exports = ${JSON.stringify(content, null, 2)}\n`;
118
114
  }
@@ -121,13 +117,4 @@ function formatConfigContent(content, filename, toolTitle) {
121
117
  }
122
118
  throw new Error(`Unsupported config file extension for tool "${toolTitle}": filename="${filename}", extension="${ext}". Only .js and .json extensions are supported.`);
123
119
  }
124
- function applySideEffects(sideEffects) {
125
- if (sideEffects['package.json']) {
126
- const packageJsonPath = path.resolve('package.json');
127
- const currentPackageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
128
- const mergedPackageJson = (0, json_merge_1.mergeJson)(currentPackageJson, sideEffects['package.json']);
129
- fs.writeFileSync(packageJsonPath, JSON.stringify(mergedPackageJson, null, 2), 'utf-8');
130
- console.log('Updated package.json with side effects');
131
- }
132
- }
133
- //# sourceMappingURL=enforcement-software.js.map
120
+ //# sourceMappingURL=third-party-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"third-party-tools.js","sourceRoot":"","sources":["../../src/utils/third-party-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fyuld/snitch",
3
- "version": "2.3.10",
3
+ "version": "2.3.11",
4
4
  "description": "Snitch",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,3 +0,0 @@
1
- import { ThirdPartyTool } from '../datamodel/snitch-configuration';
2
- export declare function setupThirdPartyTools(tools: ThirdPartyTool[]): Promise<void>;
3
- //# sourceMappingURL=enforcement-software.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforcement-software.d.ts","sourceRoot":"","sources":["../../src/utils/enforcement-software.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAkBlE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDjF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"enforcement-software.js","sourceRoot":"","sources":["../../src/utils/enforcement-software.ts"],"names":[],"mappings":"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"}