Skip to content

Commit 0524261

Browse files
committed
Configure Prettier. Adapt the Travis setup.
1 parent 0000d72 commit 0524261

16 files changed

+625
-474
lines changed

.eslintrc.js

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
module.exports = {
2-
'env': {
3-
'es6': true,
4-
'jest': true,
5-
'node': true,
6-
},
7-
'parser': 'babel-eslint',
8-
'parserOptions': {
9-
ecmaVersion: 7,
10-
sourceType: 'module'
11-
},
12-
'plugins': ['import'],
13-
'extends': 'eslint:recommended',
14-
'rules':{
15-
'no-console': 0,
16-
}
2+
'env': {
3+
'es6': true,
4+
'jest': true,
5+
'node': true,
6+
},
7+
'parser': 'babel-eslint',
8+
'parserOptions': {
9+
'ecmaVersion': 7,
10+
'sourceType': 'module'
11+
},
12+
'plugins': ['import'],
13+
'extends': [
14+
'plugin:prettier/recommended',
15+
'eslint:recommended',
16+
],
17+
'rules': {
18+
'prettier/prettier': 'error',
19+
'no-console': 0,
20+
}
1721
};

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
language: node_js
22
node_js:
33
- '8'
4-
- '7'
54
- '6'
5+
- '10'
66

77
cache:
88
directories:

package.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@
2525
"babel-preset-es2015": "^6.24.0",
2626
"babel-preset-stage-0": "^6.22.0",
2727
"eslint": "^3.18.0",
28+
"eslint-config-prettier": "^2.9.0",
2829
"eslint-plugin-import": "^2.2.0",
30+
"eslint-plugin-prettier": "^2.6.0",
2931
"jest": "^23",
32+
"prettier": "^1.13.2",
3033
"tmp": "^0.0.31"
3134
},
3235
"dependencies": {
@@ -43,6 +46,8 @@
4346
"scripts": {
4447
"test": "jest",
4548
"lint": "eslint src",
49+
"fix": "eslint --fix src",
50+
"eslint-check": "eslint --print-config .eslintrc.js | eslint-config-prettier-check",
4651
"build": "babel src -d lib --ignore '*.test.js'",
4752
"watch": "babel --watch src -d lib --ignore '*.test.js'",
4853
"test-gen": "rm -rf ./tmp && npm run build && ./lib/index.js https://demo.api-platform.com ./tmp/react && ./lib/index.js https://demo.api-platform.com ./tmp/react-native -g react-native && ./lib/index.js https://demo.api-platform.com ./tmp/vue -g vue && ./lib/index.js https://demo.api-platform.com ./tmp/admin-on-rest -g admin-on-rest",

src/generators.js

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,25 @@
1-
import AdminOnRestGenerator from './generators/AdminOnRestGenerator';
2-
import ReactGenerator from './generators/ReactGenerator';
3-
import ReactNativeGenerator from './generators/ReactNativeGenerator';
4-
import TypescriptInterfaceGenerator from './generators/TypescriptInterfaceGenerator';
5-
import VueGenerator from './generators/VueGenerator';
1+
import AdminOnRestGenerator from "./generators/AdminOnRestGenerator";
2+
import ReactGenerator from "./generators/ReactGenerator";
3+
import ReactNativeGenerator from "./generators/ReactNativeGenerator";
4+
import TypescriptInterfaceGenerator from "./generators/TypescriptInterfaceGenerator";
5+
import VueGenerator from "./generators/VueGenerator";
66

7-
function wrap (cl) {
8-
return ({hydraPrefix, templateDirectory}) => new cl({hydraPrefix, templateDirectory})
7+
function wrap(cl) {
8+
return ({ hydraPrefix, templateDirectory }) =>
9+
new cl({ hydraPrefix, templateDirectory });
910
}
1011

11-
export default function generators (generator = 'react') {
12+
export default function generators(generator = "react") {
1213
switch (generator) {
13-
case 'admin-on-rest':
14+
case "admin-on-rest":
1415
return wrap(AdminOnRestGenerator);
15-
case 'react':
16+
case "react":
1617
return wrap(ReactGenerator);
17-
case 'react-native':
18+
case "react-native":
1819
return wrap(ReactNativeGenerator);
19-
case 'typescript':
20+
case "typescript":
2021
return wrap(TypescriptInterfaceGenerator);
21-
case 'vue':
22-
return wrap(VueGenerator)
22+
case "vue":
23+
return wrap(VueGenerator);
2324
}
2425
}
Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,37 @@
1-
import fs from 'fs';
2-
import BaseGenerator from './BaseGenerator';
3-
import handlebars from 'handlebars';
4-
import hbh_comparison from 'handlebars-helpers/lib/comparison';
1+
import fs from "fs";
2+
import BaseGenerator from "./BaseGenerator";
3+
import handlebars from "handlebars";
4+
import hbh_comparison from "handlebars-helpers/lib/comparison";
55

66
export default class extends BaseGenerator {
77
constructor(params) {
88
super(params);
99

1010
this.registerTemplates(`admin-on-rest/`, [
11-
'components/foo.js',
12-
'config/foo.js',
13-
'resources/foo.js',
14-
'resource-import.js',
11+
"components/foo.js",
12+
"config/foo.js",
13+
"resources/foo.js",
14+
"resource-import.js"
1515
]);
1616

17-
handlebars.registerHelper('compare', hbh_comparison.compare);
17+
handlebars.registerHelper("compare", hbh_comparison.compare);
1818
}
1919

2020
help(resource) {
21-
console.log('Code for the "%s" resource type has been generated!', resource.title);
21+
console.log(
22+
'Code for the "%s" resource type has been generated!',
23+
resource.title
24+
);
2225
}
2326

2427
appendFile(template, dest, context = {}) {
25-
fs.appendFileSync(dest, this.templates[template](context));
28+
fs.appendFileSync(dest, this.templates[template](context));
2629
}
2730

2831
generate(api, resource, dir) {
2932
const lc = resource.title.toLowerCase();
30-
const titleUcFirst = resource.title.charAt(0).toUpperCase() + resource.title.slice(1);
33+
const titleUcFirst =
34+
resource.title.charAt(0).toUpperCase() + resource.title.slice(1);
3135

3236
const context = {
3337
title: resource.title,
@@ -37,25 +41,29 @@ export default class extends BaseGenerator {
3741
fields: resource.readableFields,
3842
formFields: this.buildFields(resource.writableFields),
3943
hydraPrefix: this.hydraPrefix,
40-
titleUcFirst,
44+
titleUcFirst
4145
};
4246

4347
// Create directories
4448
// These directories may already exist
45-
for (let dir of [`${dir}/config`, `${dir}/resources`, `${dir}/components/`]) {
49+
for (let dir of [
50+
`${dir}/config`,
51+
`${dir}/resources`,
52+
`${dir}/components/`
53+
]) {
4654
this.createDir(dir, false);
4755
}
4856

4957
for (let pattern of [
50-
'components/%s.js',
51-
'config/%s.js',
52-
'resources/%s.js',
58+
"components/%s.js",
59+
"config/%s.js",
60+
"resources/%s.js"
5361
]) {
54-
this.createFileFromPattern(pattern, dir, lc, context)
62+
this.createFileFromPattern(pattern, dir, lc, context);
5563
}
5664

57-
this.appendFile('resource-import.js', `${dir}/resource-import.js`, context);
65+
this.appendFile("resource-import.js", `${dir}/resource-import.js`, context);
5866

59-
this.createEntrypoint(api.entrypoint, `${dir}/config/_entrypoint.js`)
67+
this.createEntrypoint(api.entrypoint, `${dir}/config/_entrypoint.js`);
6068
}
6169
}

src/generators/AdminOnRestGenerator.test.js

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,48 @@
1-
import Api from '@api-platform/api-doc-parser/lib/Api';
2-
import Resource from '@api-platform/api-doc-parser/lib/Resource';
3-
import Field from '@api-platform/api-doc-parser/lib/Field';
4-
import fs from 'fs';
5-
import tmp from 'tmp';
6-
import AdminOnRestGenerator from './AdminOnRestGenerator';
1+
import Api from "@api-platform/api-doc-parser/lib/Api";
2+
import Resource from "@api-platform/api-doc-parser/lib/Resource";
3+
import Field from "@api-platform/api-doc-parser/lib/Field";
4+
import fs from "fs";
5+
import tmp from "tmp";
6+
import AdminOnRestGenerator from "./AdminOnRestGenerator";
77

8-
test('Generate a Admin On Rest app', () => {
9-
const generator = new AdminOnRestGenerator({hydraPrefix: 'hydra:', templateDirectory: `${__dirname}/../../templates`});
10-
const tmpobj = tmp.dirSync({unsafeCleanup: true});
8+
test("Generate a Admin On Rest app", () => {
9+
const generator = new AdminOnRestGenerator({
10+
hydraPrefix: "hydra:",
11+
templateDirectory: `${__dirname}/../../templates`
12+
});
13+
const tmpobj = tmp.dirSync({ unsafeCleanup: true });
1114

12-
const fields = [new Field('bar', {
13-
id: 'http://schema.org/url',
14-
range: 'http://www.w3.org/2001/XMLSchema#string',
15-
reference: null,
16-
required: true,
17-
description: 'An URL'
18-
})];
19-
const resource = new Resource('abc', 'http://example.com/foos', {
20-
id: 'abc',
21-
title: 'abc',
15+
const fields = [
16+
new Field("bar", {
17+
id: "http://schema.org/url",
18+
range: "http://www.w3.org/2001/XMLSchema#string",
19+
reference: null,
20+
required: true,
21+
description: "An URL"
22+
})
23+
];
24+
const resource = new Resource("abc", "http://example.com/foos", {
25+
id: "abc",
26+
title: "abc",
2227
readableFields: fields,
2328
writableFields: fields
2429
});
25-
const api = new Api('http://example.com', {
26-
entrypoint: 'http://example.com:8080',
27-
title: 'My API',
30+
const api = new Api("http://example.com", {
31+
entrypoint: "http://example.com:8080",
32+
title: "My API",
2833
resources: [resource]
2934
});
3035
generator.generate(api, resource, tmpobj.name);
3136

3237
[
33-
'/config/_entrypoint.js',
34-
'/resources/abc.js',
35-
'/resource-import.js',
36-
].forEach(file => expect(fs.existsSync(tmpobj.name+file)).toBe(true));
38+
"/config/_entrypoint.js",
39+
"/resources/abc.js",
40+
"/resource-import.js"
41+
].forEach(file => expect(fs.existsSync(tmpobj.name + file)).toBe(true));
3742

38-
[
39-
'/components/abc.js',
40-
'/config/abc.js',
41-
].forEach(file => {
42-
expect(fs.existsSync(tmpobj.name+file)).toBe(true)
43-
expect(fs.readFileSync(tmpobj.name+file, 'utf8')).toMatch(/bar/);
43+
["/components/abc.js", "/config/abc.js"].forEach(file => {
44+
expect(fs.existsSync(tmpobj.name + file)).toBe(true);
45+
expect(fs.readFileSync(tmpobj.name + file, "utf8")).toMatch(/bar/);
4446
});
4547

4648
tmpobj.removeCallback();

0 commit comments

Comments
 (0)