Skip to content

Commit 8472ce8

Browse files
Merge pull request #26 from EvgenyiFedotov/fix/always-change
fix: cli should know what files should be alway regenerated
2 parents 20806dd + 871aefb commit 8472ce8

File tree

2 files changed

+29
-11
lines changed

2 files changed

+29
-11
lines changed

src/cli/index.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ const changeCase = require("change-case");
1212

1313
const timeLog = `✨ ${name}`;
1414
const defaultOutputDir = "./api";
15-
const changeAlways = ["index.js", "index.d.ts"];
1615

1716
program
1817
.version(version)
@@ -110,7 +109,10 @@ async function main(config) {
110109
resolveLocalPresets(omitUndefined(config)),
111110
);
112111
const apiResult = await swaggerToJs(compiledConfig);
113-
const outputFiles = buildFiles(apiResult, compiledConfig);
112+
const { all: outputFiles, source: sourceFilesNames } = buildFiles(
113+
apiResult,
114+
compiledConfig,
115+
);
114116

115117
// Check and create output dir
116118
const pathOutputDir = path.resolve(process.cwd(), compiledConfig.outputDir);
@@ -120,7 +122,7 @@ async function main(config) {
120122
}
121123

122124
// Write files
123-
writeFilesSync(outputFiles, pathOutputDir);
125+
writeFilesSync(outputFiles, sourceFilesNames, pathOutputDir);
124126

125127
console.timeEnd(timeLog);
126128
}
@@ -183,7 +185,7 @@ function buildFiles({ code, types, swaggerData }, config = {}) {
183185
);
184186
}
185187

186-
return files;
188+
return { all: files, source: [nameCode, nameTypes] };
187189
}
188190

189191
function resolveLocalPresets(config) {
@@ -219,7 +221,11 @@ function exportOneFunction(content) {
219221
return contentLines.join("\n");
220222
}
221223

222-
function writeFilesSync(files, outputDir = "") {
224+
function writeFilesSync(
225+
files,
226+
changeAlways = ["index.d.ts", "index.js"],
227+
outputDir = "",
228+
) {
223229
Object.keys(files).forEach((fileName) => {
224230
const filePath = path.resolve(outputDir, fileName);
225231

@@ -229,7 +235,7 @@ function writeFilesSync(files, outputDir = "") {
229235
writeFileSync(filePath, fileConfig.content);
230236

231237
if (fileConfig.dependencies) {
232-
writeFilesSync(fileConfig.dependencies, outputDir);
238+
writeFilesSync(fileConfig.dependencies, changeAlways, outputDir);
233239
}
234240
}
235241
});

src/cli/index.test.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,31 @@
11
const { execSync } = require("child_process");
2-
const { readFileSync, writeFileSync } = require("fs");
3-
4-
const fs = require("fs");
52
const path = require("path");
3+
const { readFileSync, writeFileSync, readdirSync } = require("fs");
4+
65
const { sentenceCase } = require("change-case");
76

87
afterEach(() => {
98
execSync("rm -fr ./TEST_API");
109
execSync("rm -fr ./TEST_CONFIG.js");
1110
});
1211

12+
test("should regenerate nonstandard file names", () => {
13+
execSync(
14+
`node ./src/cli --output-dir ./TEST_API --file ./src/mocks/petstore-v3-short.json --template-file-name-code random.js`,
15+
);
16+
const first = readFileSync("./TEST_API/random.js", "utf8");
17+
18+
execSync(
19+
`node ./src/cli --output-dir ./TEST_API --file ./src/mocks/petstore-v3.json --template-file-name-code random.js`,
20+
);
21+
const second = readFileSync("./TEST_API/random.js", "utf8");
22+
23+
expect(first).not.toBe(second);
24+
});
25+
1326
describe("CLI", () => {
1427
const fixturesDir = path.join(__dirname, "fixtures");
15-
const testCases = fs
16-
.readdirSync(fixturesDir)
28+
const testCases = readdirSync(fixturesDir)
1729
.filter((file) => file.endsWith(".js"))
1830
.sort();
1931

0 commit comments

Comments
 (0)