|
1 | 1 | #!/usr/bin/env node
|
2 | 2 |
|
3 |
| -import 'isomorphic-fetch'; |
4 |
| -import program from 'commander'; |
5 |
| -import parseHydraDocumentation from '@api-platform/api-doc-parser/lib/hydra/parseHydraDocumentation'; |
6 |
| -import {version} from '../package.json'; |
7 |
| -import generators from './generators'; |
| 3 | +import "isomorphic-fetch"; |
| 4 | +import program from "commander"; |
| 5 | +import parseHydraDocumentation from "@api-platform/api-doc-parser/lib/hydra/parseHydraDocumentation"; |
| 6 | +import { version } from "../package.json"; |
| 7 | +import generators from "./generators"; |
8 | 8 |
|
9 | 9 | program
|
10 | 10 | .version(version)
|
11 |
| - .description('Generate a CRUD application built with React, Redux and React Router from an Hydra-enabled API') |
12 |
| - .usage('entrypoint outputDirectory') |
13 |
| - .option('-r, --resource [resourceName]', 'Generate CRUD for the given resource') |
14 |
| - .option('-p, --hydra-prefix [hydraPrefix]', 'The hydra prefix used by the API', 'hydra:') |
15 |
| - .option('-g, --generator [generator]', 'The generator to use, one of "react", "react-native", "vue", "admin-on-rest"', 'react') |
16 |
| - .option('-t, --template-directory [templateDirectory]', 'The templates directory base to use. Final directory will be ${templateDirectory}/${generator}', `${__dirname}/../templates/`) |
| 11 | + .description( |
| 12 | + "Generate a CRUD application built with React, Redux and React Router from an Hydra-enabled API" |
| 13 | + ) |
| 14 | + .usage("entrypoint outputDirectory") |
| 15 | + .option( |
| 16 | + "-r, --resource [resourceName]", |
| 17 | + "Generate CRUD for the given resource" |
| 18 | + ) |
| 19 | + .option( |
| 20 | + "-p, --hydra-prefix [hydraPrefix]", |
| 21 | + "The hydra prefix used by the API", |
| 22 | + "hydra:" |
| 23 | + ) |
| 24 | + .option( |
| 25 | + "-g, --generator [generator]", |
| 26 | + 'The generator to use, one of "react", "react-native", "vue", "admin-on-rest"', |
| 27 | + "react" |
| 28 | + ) |
| 29 | + .option( |
| 30 | + "-t, --template-directory [templateDirectory]", |
| 31 | + "The templates directory base to use. Final directory will be ${templateDirectory}/${generator}", |
| 32 | + `${__dirname}/../templates/` |
| 33 | + ) |
17 | 34 | .parse(process.argv);
|
18 | 35 |
|
19 |
| -if (2 !== program.args.length && (!process.env.API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT || !process.env.API_PLATFORM_CLIENT_GENERATOR_OUTPUT)) { |
| 36 | +if ( |
| 37 | + 2 !== program.args.length && |
| 38 | + (!process.env.API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT || |
| 39 | + !process.env.API_PLATFORM_CLIENT_GENERATOR_OUTPUT) |
| 40 | +) { |
20 | 41 | program.help();
|
21 | 42 | }
|
22 | 43 |
|
23 |
| -const entrypoint = program.args[0] || process.env.API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT; |
24 |
| -const outputDirectory = program.args[1] || process.env.API_PLATFORM_CLIENT_GENERATOR_OUTPUT; |
| 44 | +const entrypoint = |
| 45 | + program.args[0] || process.env.API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT; |
| 46 | +const outputDirectory = |
| 47 | + program.args[1] || process.env.API_PLATFORM_CLIENT_GENERATOR_OUTPUT; |
25 | 48 |
|
26 | 49 | const generator = generators(program.generator)({
|
27 | 50 | hydraPrefix: program.hydraPrefix,
|
28 | 51 | templateDirectory: program.templateDirectory
|
29 | 52 | });
|
30 |
| -const resourceToGenerate = program.resource ? program.resource.toLowerCase() : null; |
| 53 | +const resourceToGenerate = program.resource |
| 54 | + ? program.resource.toLowerCase() |
| 55 | + : null; |
31 | 56 |
|
32 |
| -parseHydraDocumentation(entrypoint).then(ret => { |
33 |
| - ret.api.resources.filter(({deprecated}) => !deprecated).forEach(resource => { |
34 |
| - const nameLc = resource.name.toLowerCase(); |
35 |
| - const titleLc = resource.title.toLowerCase(); |
| 57 | +parseHydraDocumentation(entrypoint) |
| 58 | + .then(ret => { |
| 59 | + ret.api.resources |
| 60 | + .filter(({ deprecated }) => !deprecated) |
| 61 | + .forEach(resource => { |
| 62 | + const nameLc = resource.name.toLowerCase(); |
| 63 | + const titleLc = resource.title.toLowerCase(); |
36 | 64 |
|
37 |
| - if (null === resourceToGenerate || nameLc === resourceToGenerate || titleLc === resourceToGenerate) { |
38 |
| - resource.fields = resource.fields.filter(({deprecated}) => !deprecated); |
39 |
| - resource.readableFields = resource.readableFields.filter(({deprecated}) => !deprecated); |
40 |
| - resource.writableFields = resource.writableFields.filter(({deprecated}) => !deprecated); |
| 65 | + if ( |
| 66 | + null === resourceToGenerate || |
| 67 | + nameLc === resourceToGenerate || |
| 68 | + titleLc === resourceToGenerate |
| 69 | + ) { |
| 70 | + resource.fields = resource.fields.filter( |
| 71 | + ({ deprecated }) => !deprecated |
| 72 | + ); |
| 73 | + resource.readableFields = resource.readableFields.filter( |
| 74 | + ({ deprecated }) => !deprecated |
| 75 | + ); |
| 76 | + resource.writableFields = resource.writableFields.filter( |
| 77 | + ({ deprecated }) => !deprecated |
| 78 | + ); |
41 | 79 |
|
42 |
| - generator.generate(ret.api, resource, outputDirectory); |
43 |
| - generator.help(resource) |
44 |
| - } |
| 80 | + generator.generate(ret.api, resource, outputDirectory); |
| 81 | + generator.help(resource); |
| 82 | + } |
| 83 | + }); |
45 | 84 | })
|
46 |
| -}).catch((e) => { |
47 |
| - console.log(e); |
48 |
| -}); |
| 85 | + .catch(e => { |
| 86 | + console.log(e); |
| 87 | + }); |
0 commit comments