|
1 | 1 | #!/usr/bin/env node |
2 | 2 |
|
3 | 3 | import { defineCommand, runMain } from "citty"; |
4 | | -import { BuiltInParserName, format as prettierFormat } from "prettier"; |
| 4 | +import { format as prettierFormat } from "prettier"; |
5 | 5 | import { format as sqlFormat, SqlLanguage, supportedDialects } from "sql-formatter"; |
6 | | - |
7 | | -type PrettierLanguage = |
8 | | - | "angular" |
9 | | - | "css" |
10 | | - | "glimmer" |
11 | | - | "graphql" |
12 | | - | "html" |
13 | | - | "javascript" |
14 | | - | "json" |
15 | | - | "json5" |
16 | | - | "less" |
17 | | - | "lwc" |
18 | | - | "markdown" |
19 | | - | "mdx" |
20 | | - | "scss" |
21 | | - | "typescript" |
22 | | - | "vue" |
23 | | - | "yaml"; |
24 | | - |
25 | | -type Language = PrettierLanguage | "sql" | "sql-output"; |
26 | | - |
27 | | -const prettierParsers: Record<PrettierLanguage, BuiltInParserName> = { |
28 | | - angular: "angular", |
29 | | - css: "css", |
30 | | - glimmer: "glimmer", |
31 | | - graphql: "graphql", |
32 | | - html: "html", |
33 | | - javascript: "babel", |
34 | | - json5: "json5", |
35 | | - json: "json", |
36 | | - less: "less", |
37 | | - lwc: "lwc", |
38 | | - markdown: "markdown", |
39 | | - mdx: "mdx", |
40 | | - scss: "scss", |
41 | | - typescript: "typescript", |
42 | | - vue: "vue", |
43 | | - yaml: "yaml", |
44 | | -}; |
45 | | - |
46 | | -const languages: Language[] = [...(Object.keys(prettierParsers) as PrettierLanguage[]), "sql", "sql-output"]; |
47 | | - |
48 | | -function isSqlLanguage(value: string): value is SqlLanguage { |
49 | | - return supportedDialects.includes(value); |
50 | | -} |
51 | | - |
52 | | -function parsePrintWidth(value: string): number | undefined { |
53 | | - const printWidth = Number(value); |
54 | | - return Number.isInteger(printWidth) && printWidth > 0 ? printWidth : undefined; |
55 | | -} |
| 6 | +import { |
| 7 | + isLanguage, |
| 8 | + isSqlLanguage, |
| 9 | + Language, |
| 10 | + languages, |
| 11 | + parsePrintWidth, |
| 12 | + prettierParsers, |
| 13 | +} from "./options.js"; |
56 | 14 |
|
57 | 15 | function formatSQL(input: string, sqlDialect: SqlLanguage): string { |
58 | 16 | return sqlFormat(input, { |
@@ -136,11 +94,11 @@ const main = defineCommand({ |
136 | 94 | }, |
137 | 95 | }, |
138 | 96 | async run({ args }) { |
139 | | - const language = args.language as Language; |
| 97 | + const language = args.language; |
140 | 98 | const printWidth = parsePrintWidth(args["print-width"]); |
141 | 99 | const sqlDialect = args["sql-dialect"]; |
142 | 100 |
|
143 | | - if (!languages.includes(language)) { |
| 101 | + if (!isLanguage(language)) { |
144 | 102 | console.error(`Unknown language: ${language}`); |
145 | 103 | console.error(`Languages: ${languages.join(", ")}`); |
146 | 104 | process.exit(1); |
|
0 commit comments