1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | try {
|
4 | require("typescript");
|
5 | }
|
6 | catch (e) {
|
7 | console.error("typescript is required. please try 'npm install -g typescript'\n");
|
8 | }
|
9 | var ts = require("typescript");
|
10 | var fs = require("fs");
|
11 | var path = require("path");
|
12 | var commandpost = require("commandpost");
|
13 | var lib = require("./");
|
14 | var utils_1 = require("./utils");
|
15 | var packageJson = JSON.parse(fs.readFileSync(path.join(__dirname, "../package.json")).toString());
|
16 | var root = commandpost
|
17 | .create("tsfmt [files...]")
|
18 | .option("-r, --replace", "replace .ts file")
|
19 | .option("--verify", "checking file format")
|
20 | .option("--baseDir <path>", "config file lookup from <path>")
|
21 | .option("--stdin", "get formatting content from stdin")
|
22 | .option("--no-tsconfig", "don't read a tsconfig.json")
|
23 | .option("--no-tslint", "don't read a tslint.json")
|
24 | .option("--no-editorconfig", "don't read a .editorconfig")
|
25 | .option("--no-vscode", "don't read a .vscode/settings.json")
|
26 | .option("--no-tsfmt", "don't read a tsfmt.json")
|
27 | .option("--useTsconfig <path>", "using specified config file instead of tsconfig.json")
|
28 | .option("--useTslint <path>", "using specified config file instead of tslint.json")
|
29 | .option("--useTsfmt <path>", "using specified config file instead of tsfmt.json")
|
30 | .option("--useVscode <path>", "using specified config file instead of .vscode/settings.json")
|
31 | .option("--verbose", "makes output more verbose")
|
32 | .option("-v, --version", "output the version number")
|
33 | .action(function (opts, args) {
|
34 | var replace = !!opts.replace;
|
35 | var verify = !!opts.verify;
|
36 | var baseDir = opts.baseDir ? opts.baseDir[0] : void 0;
|
37 | var stdin = !!opts.stdin;
|
38 | var tsconfig = !!opts.tsconfig;
|
39 | var tslint = !!opts.tslint;
|
40 | var editorconfig = !!opts.editorconfig;
|
41 | var vscode = !!opts.vscode;
|
42 | var tsfmt = !!opts.tsfmt;
|
43 | var tsconfigFile = opts.useTsconfig[0] ? path.join(process.cwd(), opts.useTsconfig[0]) : null;
|
44 | var tslintFile = opts.useTslint[0] ? path.join(process.cwd(), opts.useTslint[0]) : null;
|
45 | var vscodeFile = opts.useVscode[0] ? path.join(process.cwd(), opts.useVscode[0]) : null;
|
46 | var tsfmtFile = opts.useTsfmt[0] ? path.join(process.cwd(), opts.useTsfmt[0]) : null;
|
47 | var verbose = !!opts.verbose;
|
48 | var version = !!opts.version;
|
49 | if (version) {
|
50 | console.log("tsfmt : " + packageJson.version);
|
51 | console.log("tsc : " + ts.version);
|
52 | return;
|
53 | }
|
54 | var files = args.files;
|
55 | var useTsconfig = false;
|
56 | if (files.length === 0) {
|
57 | var configFileName = tsconfigFile || utils_1.getConfigFileName(baseDir || process.cwd(), "tsconfig.json");
|
58 | if (configFileName) {
|
59 | files = utils_1.readFilesFromTsconfig(configFileName);
|
60 | if (verbose) {
|
61 | console.log("read: " + configFileName);
|
62 | }
|
63 | useTsconfig = true;
|
64 | }
|
65 | }
|
66 | if (files.length === 0 && !opts.stdin) {
|
67 | process.stdout.write(root.helpText() + "\n");
|
68 | return;
|
69 | }
|
70 | if (verbose) {
|
71 | var printPool_1 = {};
|
72 | var printSetting = function (name, value) {
|
73 | if (typeof value === "boolean") {
|
74 | printPool_1[name] = value ? "ON" : "OFF";
|
75 | }
|
76 | else {
|
77 | printPool_1[name] = value;
|
78 | }
|
79 | };
|
80 | var doPrint = function () {
|
81 | var maxLength = Object.keys(printPool_1).reduce(function (p, c) { return Math.max(p, c.length); }, 0);
|
82 | Object.keys(printPool_1).forEach(function (key) {
|
83 | var value = printPool_1[key];
|
84 | console.log(padSpaces(key, maxLength + 1) + ": " + value);
|
85 | });
|
86 | function padSpaces(str, len) {
|
87 | var result = str;
|
88 | while (result.length < len) {
|
89 | result += " ";
|
90 | }
|
91 | return result;
|
92 | }
|
93 | };
|
94 | printSetting("replace", replace);
|
95 | printSetting("verify", verify);
|
96 | printSetting("baseDir", baseDir ? baseDir : process.cwd());
|
97 | printSetting("stdin", stdin);
|
98 | printSetting("files from tsconfig", useTsconfig);
|
99 | printSetting("tsconfig", tsconfig);
|
100 | if (tsconfigFile) {
|
101 | printSetting("specified tsconfig.json", tsconfigFile);
|
102 | }
|
103 | printSetting("tslint", tslint);
|
104 | if (tslintFile) {
|
105 | printSetting("specified tslint.json", tslintFile);
|
106 | }
|
107 | printSetting("editorconfig", editorconfig);
|
108 | printSetting("vscode", vscode);
|
109 | if (vscodeFile) {
|
110 | printSetting("specified vscode settings.json", vscodeFile);
|
111 | }
|
112 | printSetting("tsfmt", tsfmt);
|
113 | if (tsfmtFile) {
|
114 | printSetting("specified tsfmt.json", tsfmtFile);
|
115 | }
|
116 | doPrint();
|
117 | }
|
118 | if (stdin) {
|
119 | if (replace) {
|
120 | errorHandler("--stdin option can not use with --replace option");
|
121 | return;
|
122 | }
|
123 | lib
|
124 | .processStream(files[0] || "temp.ts", process.stdin, {
|
125 | replace: replace,
|
126 | verify: verify,
|
127 | baseDir: baseDir,
|
128 | tsconfig: tsconfig,
|
129 | tsconfigFile: tsconfigFile,
|
130 | tslint: tslint,
|
131 | tslintFile: tslintFile,
|
132 | editorconfig: editorconfig,
|
133 | vscode: vscode,
|
134 | vscodeFile: vscodeFile,
|
135 | tsfmt: tsfmt,
|
136 | tsfmtFile: tsfmtFile,
|
137 | verbose: verbose,
|
138 | })
|
139 | .then(function (result) {
|
140 | var resultMap = {};
|
141 | resultMap[result.fileName] = result;
|
142 | return resultMap;
|
143 | })
|
144 | .then(showResultHandler)
|
145 | .catch(errorHandler);
|
146 | }
|
147 | else {
|
148 | lib
|
149 | .processFiles(files, {
|
150 | replace: replace,
|
151 | verify: verify,
|
152 | baseDir: baseDir,
|
153 | tsconfig: tsconfig,
|
154 | tsconfigFile: tsconfigFile,
|
155 | tslint: tslint,
|
156 | tslintFile: tslintFile,
|
157 | editorconfig: editorconfig,
|
158 | vscode: vscode,
|
159 | vscodeFile: vscodeFile,
|
160 | tsfmt: tsfmt,
|
161 | tsfmtFile: tsfmtFile,
|
162 | verbose: verbose,
|
163 | })
|
164 | .then(showResultHandler)
|
165 | .catch(errorHandler);
|
166 | }
|
167 | });
|
168 | commandpost
|
169 | .exec(root, process.argv)
|
170 | .catch(errorHandler);
|
171 | function showResultHandler(resultMap) {
|
172 | var hasError = Object.keys(resultMap).filter(function (fileName) { return resultMap[fileName].error; }).length !== 0;
|
173 | if (hasError) {
|
174 | Object.keys(resultMap)
|
175 | .map(function (fileName) { return resultMap[fileName]; })
|
176 | .filter(function (result) { return result.error; })
|
177 | .forEach(function (result) { return process.stderr.write(result.message); });
|
178 | process.exit(1);
|
179 | }
|
180 | else {
|
181 | Object.keys(resultMap)
|
182 | .map(function (fileName) { return resultMap[fileName]; })
|
183 | .forEach(function (result) {
|
184 | if (result.message) {
|
185 | process.stdout.write(result.message);
|
186 | }
|
187 | });
|
188 | }
|
189 | return Promise.resolve(null);
|
190 | }
|
191 | function errorHandler(err) {
|
192 | if (err instanceof Error) {
|
193 | console.error(err.stack);
|
194 | }
|
195 | else {
|
196 | console.error(err);
|
197 | }
|
198 | return Promise.resolve(null).then(function () {
|
199 | process.exit(1);
|
200 | return null;
|
201 | });
|
202 | }
|
203 |
|
\ | No newline at end of file |