Skip to content

Commit 596c025

Browse files
authored
Resolve Prettier config using Prettier (#224)
1 parent 93c4409 commit 596c025

File tree

6 files changed

+25
-15
lines changed

6 files changed

+25
-15
lines changed

.github/workflows/pull_request.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
runs-on: ubuntu-latest
2222
strategy:
2323
matrix:
24-
node-version: [10.x, 12.x, 13.x]
24+
node-version: [10.x, 12.x, 14.x]
2525
steps:
2626
- uses: actions/checkout@v1
2727
- uses: actions/setup-node@v1

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"name": "@manifoldco/swagger-to-ts",
33
"description": "Generate TypeScript types from Swagger OpenAPI specs",
44
"main": "dist/cjs",
5-
"version": "2.0.0-alpha.3",
5+
"version": "2.0.0-alpha.5",
66
"engines": {
77
"node": ">= 10.0.0"
88
},

src/index.ts

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import fs from "fs";
21
import path from "path";
32
import prettier from "prettier";
43
import { swaggerVersion } from "./utils";
@@ -36,21 +35,15 @@ export default function swaggerToTS(
3635
let prettierOptions: prettier.Options = { parser: "typescript" };
3736
if (options && options.prettierConfig) {
3837
try {
38+
const userOptions = prettier.resolveConfig.sync(
39+
path.resolve(process.cwd(), options.prettierConfig)
40+
);
3941
prettierOptions = {
4042
...prettierOptions,
41-
...JSON.parse(
42-
fs.readFileSync(
43-
path.resolve(process.cwd(), options.prettierConfig),
44-
"utf8"
45-
)
46-
),
43+
...userOptions,
4744
};
4845
} catch (err) {
49-
console.error(
50-
`❌ Prettier: couldn’t find '${
51-
options.prettierConfig
52-
}' in '${path.dirname(process.cwd())}'`
53-
);
46+
console.error(`❌ ${err}`);
5447
}
5548
}
5649
return prettier.format(output, prettierOptions);

src/types/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ export interface Property {
1111
}
1212

1313
export interface SwaggerToTSOptions {
14+
/** (optional) Path to Prettier config */
1415
prettierConfig?: string;
16+
/** (optional) Function to iterate over every schema object before transforming to TypeScript */
1517
propertyMapper?: (
1618
schemaObject: OpenAPI2SchemaObject | OpenAPI3SchemaObject,
1719
property: Property

tests/bin/cli.test.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,21 @@ import { execSync } from 'child_process'
66
// v3/index.test.ts. So this file is mainly for testing other flags.
77

88
describe('cli', () => {
9-
it('--prettier-config', () => {
9+
it('--prettier-config (JSON)', () => {
1010
execSync(`../../pkg/bin/cli.js specs/petstore.yaml -o generated/petstore.ts --prettier-config .prettierrc`, {
1111
cwd: path.resolve(__dirname),
1212
})
1313
expect(fs.readFileSync(path.resolve(__dirname, 'expected/petstore.ts'), 'utf8')).toBe(
1414
fs.readFileSync(path.resolve(__dirname, 'generated/petstore.ts'), 'utf8'),
1515
)
1616
})
17+
18+
it('--prettier-config (.js)', () => {
19+
execSync(`../../pkg/bin/cli.js specs/petstore.yaml -o generated/petstore.ts --prettier-config prettier.config.js`, {
20+
cwd: path.resolve(__dirname),
21+
})
22+
expect(fs.readFileSync(path.resolve(__dirname, 'expected/petstore.ts'), 'utf8')).toBe(
23+
fs.readFileSync(path.resolve(__dirname, 'generated/petstore.ts'), 'utf8'),
24+
)
25+
})
1726
})

tests/bin/prettier.config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
printWidth: 150,
3+
semi: false,
4+
singleQuote: true,
5+
trailingComma: 'all',
6+
}

0 commit comments

Comments
 (0)