Skip to content

Commit 241e8ad

Browse files
authored
Merge pull request #11 from ioncakephper:chore/validate-parameters
update transpile.js
2 parents 8385424 + 85c8cbd commit 241e8ad

File tree

3 files changed

+48
-47
lines changed

3 files changed

+48
-47
lines changed

package.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@
1010
"test": "jest",
1111
"start": "node index.js"
1212
},
13+
"keywords": {
14+
"static-analysis",
15+
"developer-tools",
16+
"software-engineering",
17+
"formal-methods",
18+
"program-verification",
19+
"automated-testing",
20+
"debugging-tools"
21+
},
1322
"author": {
1423
"name": "Ion Gireada",
1524
"url": "https://github.com/ioncakephper/contract-shield-cli"

src/commands/transpile.js

Lines changed: 20 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,94 +21,67 @@ const glob = require("glob");
2121
function transpileCommand(patterns, options) {
2222
const config = loadConfig(options.config);
2323

24-
const finalPatterns =
25-
patterns.length > 0 ? patterns : config.patterns || ["**/*.js"];
26-
let excludePatterns = options.exclude || config.exclude || [];
27-
if (typeof excludePatterns === "string") {
28-
excludePatterns = [excludePatterns]; // Convert to array if needed
29-
}
24+
const finalPatterns = patterns.length ? patterns : config.patterns || ["**/*.js"];
25+
let excludePatterns = Array.isArray(options.exclude) ? options.exclude : [options.exclude || config.exclude || []];
3026

3127
const outputDir = options.output || config.output || "dist";
3228
const isSilent = options.silent ?? config.silent;
3329
const isVerbose = options.verbose ?? config.verbose;
3430

3531
logMessage("info", "Starting transpilation process...", isSilent);
3632

37-
if (!isSilent && isVerbose) {
33+
if (isVerbose && !isSilent) {
3834
logMessage("debug", `Using output directory: ${outputDir}`, false);
3935
}
4036

4137
try {
42-
const files = glob.sync(finalPatterns.join("|"), {
43-
ignore: excludePatterns,
44-
nodir: true,
45-
});
38+
const files = glob.sync(finalPatterns.join("|"), { ignore: excludePatterns, nodir: true });
4639

47-
if (files.length === 0) {
40+
if (!files.length) {
4841
logMessage("warn", "No files matched for transpilation.", isSilent);
4942
return;
5043
}
5144

5245
logMessage("info", `Processing ${files.length} files...`, isSilent);
5346

54-
if (!isSilent && isVerbose) {
47+
if (isVerbose && !isSilent) {
5548
logMessage("debug", `Matched files: ${files.join(", ")}`, false);
5649
}
5750

5851
const failedFiles = [];
5952

60-
for (const file of files) {
53+
files.forEach(file => {
6154
logMessage("info", `Transpiling: ${file}`, isSilent);
6255

63-
if (!isSilent && isVerbose) {
56+
if (isVerbose && !isSilent) {
6457
logMessage("debug", `Source directory: ${path.dirname(file)}`, false);
6558
}
6659

6760
try {
68-
const destinationFile = path.join(
69-
outputDir,
70-
path.dirname(file),
71-
path.basename(file)
72-
);
73-
74-
if (!fs.existsSync(path.dirname(destinationFile))) {
75-
fs.mkdirSync(path.dirname(destinationFile), { recursive: true });
76-
}
61+
const destinationFile = path.join(outputDir, path.dirname(file), path.basename(file));
7762

63+
fs.mkdirSync(path.dirname(destinationFile), { recursive: true });
7864
fs.copyFileSync(file, destinationFile);
79-
logMessage(
80-
"info",
81-
`Successfully transpiled: ${file} -> ${destinationFile}`,
82-
isSilent
83-
);
65+
66+
logMessage("info", `Successfully transpiled: ${file} -> ${destinationFile}`, isSilent);
8467
} catch (error) {
85-
logMessage(
86-
"error",
87-
`Failed to transpile ${file}: ${error.message}`,
88-
isSilent
89-
);
68+
logMessage("error", `Failed to transpile ${file}: ${error.message}`, isSilent);
9069
failedFiles.push(file);
9170
}
92-
}
71+
});
9372

9473
logMessage("info", "Transpilation process completed!", isSilent);
9574

96-
if (failedFiles.length > 0) {
97-
logMessage(
98-
"warn",
99-
`Failed to transpile ${failedFiles.length} files: ${failedFiles.join(
100-
", "
101-
)}`,
102-
isSilent
103-
);
104-
process.exit(1); // Indicate partial success with some failures
75+
if (failedFiles.length) {
76+
logMessage("warn", `Failed to transpile ${failedFiles.length} files: ${failedFiles.join(", ")}`, isSilent);
77+
process.exit(1);
10578
} else {
106-
process.exit(0); // Indicate full success
79+
process.exit(0);
10780
}
10881
} catch (error) {
10982
logMessage("error", `Error matching files: ${error.message}`, false);
110-
process.exit(2); // Indicate unrecoverable failure
83+
process.exit(2);
11184
}
11285
}
11386

114-
module.exports = { transpileCommand };
87+
module.exports = { transpileCommand };
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const fs = require('fs');
2+
const { execSync } = require('child_process');
3+
4+
describe('transpileCommand CLI', () => {
5+
beforeAll(() => {
6+
// Create a test config file before running the tests
7+
fs.writeFileSync('test-config.json', JSON.stringify({ option: true }));
8+
});
9+
10+
afterAll(() => {
11+
// Clean up the test config file after tests are done
12+
fs.unlinkSync('test-config.json');
13+
});
14+
15+
test('CLI runs with a specified config file', () => {
16+
const output = execSync('node src/cli.js transpile --config test-config.json').toString();
17+
expect(output).toBeDefined();
18+
});
19+
});

0 commit comments

Comments
 (0)