1 | import { exec, getDefaultArgs } from "./typescript-json-schema";
|
2 |
|
3 | export function run() {
|
4 | var helpText = "Usage: typescript-json-schema <path-to-typescript-files-or-tsconfig> <type>";
|
5 | const defaultArgs = getDefaultArgs();
|
6 |
|
7 |
|
8 | var args = require("yargs")
|
9 | .usage(helpText)
|
10 | .demand(2)
|
11 | .boolean("refs").default("refs", defaultArgs.ref)
|
12 | .describe("refs", "Create shared ref definitions.")
|
13 | .boolean("aliasRefs").default("aliasRefs", defaultArgs.aliasRef)
|
14 | .describe("aliasRefs", "Create shared ref definitions for the type aliases.")
|
15 | .boolean("topRef").default("topRef", defaultArgs.topRef)
|
16 | .describe("topRef", "Create a top-level ref definition.")
|
17 | .boolean("titles").default("titles", defaultArgs.titles)
|
18 | .describe("titles", "Creates titles in the output schema.")
|
19 | .boolean("defaultProps").default("defaultProps", defaultArgs.defaultProps)
|
20 | .describe("defaultProps", "Create default properties definitions.")
|
21 | .boolean("noExtraProps").default("noExtraProps", defaultArgs.noExtraProps)
|
22 | .describe("noExtraProps", "Disable additional properties in objects by default.")
|
23 | .boolean("propOrder").default("propOrder", defaultArgs.propOrder)
|
24 | .describe("propOrder", "Create property order definitions.")
|
25 | .boolean("typeOfKeyword").default("typeOfKeyword", defaultArgs.typeOfKeyword)
|
26 | .describe("typeOfKeyword", "Use typeOf keyword (https://goo.gl/DC6sni) for functions.")
|
27 | .boolean("required").default("required", defaultArgs.required)
|
28 | .describe("required", "Create required array for non-optional properties.")
|
29 | .boolean("strictNullChecks").default("strictNullChecks", defaultArgs.strictNullChecks)
|
30 | .describe("strictNullChecks", "Make values non-nullable by default.")
|
31 | .boolean("ignoreErrors").default("ignoreErrors", defaultArgs.ignoreErrors)
|
32 | .describe("ignoreErrors", "Generate even if the program has errors.")
|
33 | .alias("out", "o")
|
34 | .describe("out", "The output file, defaults to using stdout")
|
35 | .array("validationKeywords").default("validationKeywords", defaultArgs.validationKeywords)
|
36 | .describe("validationKeywords", "Provide additional validation keywords to include.")
|
37 | .boolean("excludePrivate").default("excludePrivate", defaultArgs.excludePrivate)
|
38 | .describe("excludePrivate", "Exclude private members from the schema.")
|
39 | .boolean("uniqueNames").default("uniqueNames", defaultArgs.uniqueNames)
|
40 | .describe("uniqueNames", "Use unique names for type symbols.")
|
41 | .array("include").default("*", defaultArgs.include)
|
42 | .describe("include", "Further limit tsconfig to include only matching files.")
|
43 | .boolean("rejectDateType").default("rejectDateType", defaultArgs.rejectDateType)
|
44 | .describe("rejectDateType", "Rejects Date fields in type definitions.")
|
45 | .string("id").default("id", defaultArgs.id)
|
46 | .describe("id", "ID of schema.")
|
47 | .option("defaultNumberType").choices("defaultNumberType", ["number", "integer"])
|
48 | .default("defaultNumberType", defaultArgs.defaultNumberType)
|
49 | .describe("defaultNumberType", "Default number type.")
|
50 | .argv;
|
51 |
|
52 | exec(args._[0], args._[1], {
|
53 | ref: args.refs,
|
54 | aliasRef: args.aliasRefs,
|
55 | topRef: args.topRef,
|
56 | titles: args.titles,
|
57 | defaultProps: args.defaultProps,
|
58 | noExtraProps: args.noExtraProps,
|
59 | propOrder: args.propOrder,
|
60 | typeOfKeyword: args.useTypeOfKeyword,
|
61 | required: args.required,
|
62 | strictNullChecks: args.strictNullChecks,
|
63 | ignoreErrors: args.ignoreErrors,
|
64 | out: args.out,
|
65 | validationKeywords: args.validationKeywords,
|
66 | include: args.include,
|
67 | excludePrivate: args.excludePrivate,
|
68 | uniqueNames: args.uniqueNames,
|
69 | rejectDateType: args.rejectDateType,
|
70 | id: args.id,
|
71 | defaultNumberType: args.defaultNumberType,
|
72 | });
|
73 | }
|
74 |
|
75 | if (typeof window === "undefined" && require.main === module) {
|
76 | run();
|
77 | }
|