Skip to content

Commit c425bac

Browse files
committed
feat(tsfmt): pass Options object to providers
1 parent c55b1fd commit c425bac

File tree

5 files changed

+65
-51
lines changed

5 files changed

+65
-51
lines changed

lib/cli.ts

+11-5
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,17 @@ let root = commandpost
4040
let tslint = !!opts.tslint;
4141
let editorconfig = !!opts.editorconfig;
4242
let tsfmt = !!opts.tsfmt;
43+
let verbose = !!opts.verbose;
4344

4445
let files = args.files;
4546
let useTsconfig = false;
4647
if (files.length === 0) {
4748
let configFileName = getConfigFileName(process.cwd(), "tsconfig.json");
4849
if (configFileName) {
4950
files = readFilesFromTsconfig(configFileName);
51+
if (verbose) {
52+
console.log(`read: ${configFileName}`);
53+
}
5054
useTsconfig = true;
5155
}
5256
}
@@ -56,7 +60,7 @@ let root = commandpost
5660
return;
5761
}
5862

59-
if (opts.verbose) {
63+
if (verbose) {
6064
console.log("replace: " + (replace ? "ON" : "OFF"));
6165
console.log("verify: " + (verify ? "ON" : "OFF"));
6266
console.log("stdin: " + (stdin ? "ON" : "OFF"));
@@ -66,8 +70,8 @@ let root = commandpost
6670
console.log("tsfmt: " + (tsfmt ? "ON" : "OFF"));
6771
}
6872

69-
if (opts.stdin) {
70-
if (opts.replace) {
73+
if (stdin) {
74+
if (replace) {
7175
errorHandler("--stdin option can not use with --replace option");
7276
return;
7377
}
@@ -77,7 +81,8 @@ let root = commandpost
7781
verify: verify,
7882
tslint: tslint,
7983
editorconfig: editorconfig,
80-
tsfmt: tsfmt
84+
tsfmt: tsfmt,
85+
verbose: verbose
8186
})
8287
.then(result => {
8388
let resultMap: lib.ResultMap = {};
@@ -93,7 +98,8 @@ let root = commandpost
9398
verify: verify,
9499
tslint: tslint,
95100
editorconfig: editorconfig,
96-
tsfmt: tsfmt
101+
tsfmt: tsfmt,
102+
verbose: verbose
97103
})
98104
.then(showResultHandler)
99105
.catch(errorHandler);

lib/index.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -82,22 +82,22 @@ export function processStream(fileName: string, input: NodeJS.ReadableStream, op
8282
export function processString(fileName: string, content: string, opts: Options): Promise<Result> {
8383
"use strict";
8484

85-
let options = createDefaultFormatCodeOptions();
85+
let formatOptions = createDefaultFormatCodeOptions();
8686
let optGenPromises: (ts.FormatCodeOptions | Promise<ts.FormatCodeOptions>)[] = [];
8787
if (opts.tsfmt) {
88-
optGenPromises.push(base(fileName, options));
88+
optGenPromises.push(base(fileName, opts, formatOptions));
8989
}
9090
if (opts.editorconfig) {
91-
optGenPromises.push(editorconfig(fileName, options));
91+
optGenPromises.push(editorconfig(fileName, opts, formatOptions));
9292
}
9393
if (opts.tslint) {
94-
optGenPromises.push(tslintjson(fileName, options));
94+
optGenPromises.push(tslintjson(fileName, opts, formatOptions));
9595
}
9696

9797
return Promise
9898
.all(optGenPromises)
9999
.then(() => {
100-
let formattedCode = formatter(fileName, content, options);
100+
let formattedCode = formatter(fileName, content, formatOptions);
101101
if ((<any>formattedCode).trimRight) {
102102
formattedCode = (<any>formattedCode).trimRight();
103103
formattedCode += "\n";
@@ -122,7 +122,7 @@ export function processString(fileName: string, content: string, opts: Options):
122122

123123
let result: Result = {
124124
fileName: fileName,
125-
options: options,
125+
options: formatOptions,
126126
message: message,
127127
error: error,
128128
src: content,

lib/provider/base.ts

+21-18
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as ts from "typescript";
55
import * as path from "path";
66
import * as fs from "fs";
77

8+
import {Options} from "../";
89
import {getConfigFileName} from "../utils";
910

1011
interface TsfmtSettings {
@@ -33,56 +34,58 @@ interface TsfmtSettings {
3334
convertTabsToSpaces?: boolean;
3435
}
3536

36-
export default function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions {
37+
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
3738
"use strict";
3839

3940
var configFileName = getConfigFileName(path.dirname(path.resolve(fileName)), "tsfmt.json");
4041
if (!configFileName) {
41-
return options;
42+
return formatOptions;
43+
}
44+
45+
if (opts.verbose) {
46+
console.log(`read ${configFileName}`);
4247
}
43-
// console.log("base makeFormatCodeOptions");
44-
// console.log("read " + configFileName);
4548

4649
var config: TsfmtSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));
4750
if (typeof config.insertSpaceAfterCommaDelimiter === "boolean") {
48-
options.InsertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter;
51+
formatOptions.InsertSpaceAfterCommaDelimiter = config.insertSpaceAfterCommaDelimiter;
4952
}
5053
if (typeof config.insertSpaceAfterSemicolonInForStatements === "boolean") {
51-
options.InsertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements;
54+
formatOptions.InsertSpaceAfterSemicolonInForStatements = config.insertSpaceAfterSemicolonInForStatements;
5255
}
5356
if (typeof config.insertSpaceBeforeAndAfterBinaryOperators === "boolean") {
54-
options.InsertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators;
57+
formatOptions.InsertSpaceBeforeAndAfterBinaryOperators = config.insertSpaceBeforeAndAfterBinaryOperators;
5558
}
5659
if (typeof config.insertSpaceAfterKeywordsInControlFlowStatements === "boolean") {
57-
options.InsertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements;
60+
formatOptions.InsertSpaceAfterKeywordsInControlFlowStatements = config.insertSpaceAfterKeywordsInControlFlowStatements;
5861
}
5962
if (typeof config.insertSpaceAfterFunctionKeywordForAnonymousFunctions === "boolean") {
60-
options.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions;
63+
formatOptions.InsertSpaceAfterFunctionKeywordForAnonymousFunctions = config.insertSpaceAfterFunctionKeywordForAnonymousFunctions;
6164
}
6265
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis === "boolean") {
63-
options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
66+
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis;
6467
}
6568
if (typeof config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets === "boolean") {
66-
options.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
69+
formatOptions.InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets = config.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets;
6770
}
6871
if (typeof config.placeOpenBraceOnNewLineForFunctions === "boolean") {
69-
options.PlaceOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions;
72+
formatOptions.PlaceOpenBraceOnNewLineForFunctions = config.placeOpenBraceOnNewLineForFunctions;
7073
}
7174
if (typeof config.placeOpenBraceOnNewLineForControlBlocks === "boolean") {
72-
options.PlaceOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks;
75+
formatOptions.PlaceOpenBraceOnNewLineForControlBlocks = config.placeOpenBraceOnNewLineForControlBlocks;
7376
}
7477
if (typeof config.indentSize === "number") {
75-
options.IndentSize = config.indentSize;
78+
formatOptions.IndentSize = config.indentSize;
7679
}
7780
if (typeof config.tabSize === "number") {
78-
options.TabSize = config.tabSize;
81+
formatOptions.TabSize = config.tabSize;
7982
}
8083
if (typeof config.newLineCharacter === "string") {
81-
options.NewLineCharacter = config.newLineCharacter;
84+
formatOptions.NewLineCharacter = config.newLineCharacter;
8285
}
8386
if (typeof config.convertTabsToSpaces === "boolean") {
84-
options.ConvertTabsToSpaces = config.convertTabsToSpaces;
87+
formatOptions.ConvertTabsToSpaces = config.convertTabsToSpaces;
8588
}
8689

87-
return options;
90+
return formatOptions;
8891
}

lib/provider/editorconfig.ts

+14-11
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,38 @@ import * as ts from "typescript";
44

55
import * as editorconfig from "editorconfig";
66

7-
export default function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
7+
import {Options} from "../";
8+
9+
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
810
"use strict";
911

1012
return editorconfig
1113
.parse(fileName)
1214
.then(config => {
1315
if (Object.keys(config).length === 0) {
14-
return options;
16+
return formatOptions;
17+
}
18+
if (opts.verbose) {
19+
console.log("editorconfig: \n" + "file: " + fileName + "\n" + JSON.stringify(config, null, 2));
1520
}
16-
// console.log("editorconfig makeFormatCodeOptions");
17-
// console.log(config);
1821

1922
if (config.indent_style === "tab") {
20-
options.ConvertTabsToSpaces = false;
23+
formatOptions.ConvertTabsToSpaces = false;
2124
// if (typeof config.tab_width === "number") {
2225
// options.TabSize = config.tab_width;
2326
// }
2427
} else if (typeof config.indent_size === "number") {
25-
options.ConvertTabsToSpaces = true;
26-
options.IndentSize = config.indent_size;
28+
formatOptions.ConvertTabsToSpaces = true;
29+
formatOptions.IndentSize = config.indent_size;
2730
}
2831
if (config.end_of_line === "lf") {
29-
options.NewLineCharacter = "\n";
32+
formatOptions.NewLineCharacter = "\n";
3033
} else if (config.end_of_line === "cr") {
31-
options.NewLineCharacter = "\r";
34+
formatOptions.NewLineCharacter = "\r";
3235
} else if (config.end_of_line === "crlf") {
33-
options.NewLineCharacter = "\r\n";
36+
formatOptions.NewLineCharacter = "\r\n";
3437
}
3538

36-
return options;
39+
return formatOptions;
3740
});
3841
}

lib/provider/tslintjson.ts

+13-11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as ts from "typescript";
55
import * as path from "path";
66
import * as fs from "fs";
77

8+
import {Options} from "../";
89
import {getConfigFileName} from "../utils";
910

1011
interface TslintSettings {
@@ -25,40 +26,41 @@ interface TslintSettings {
2526
};
2627
}
2728

28-
export default function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions {
29+
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
2930
"use strict";
3031

3132
let configFileName = getConfigFileName(path.dirname(path.resolve(fileName)), "tslint.json");
3233
if (!configFileName) {
33-
return options;
34+
return formatOptions;
35+
}
36+
if (opts.verbose) {
37+
console.log(`read ${configFileName} for ${fileName}`);
3438
}
35-
// console.log("tslint makeFormatCodeOptions");
36-
// console.log("read " + configFileName);
3739

3840
let config: TslintSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));
3941
if (!config.rules) {
40-
return options;
42+
return formatOptions;
4143
}
4244
if (config.rules.indent && config.rules.indent[0]) {
43-
options.IndentSize = config.rules.indent[1];
45+
formatOptions.IndentSize = config.rules.indent[1];
4446
}
4547
if (config.rules.whitespace && config.rules.whitespace[0]) {
4648
for (let p in config.rules.whitespace) {
4749
let value = config.rules.whitespace[p];
4850
if (value === "check-branch") {
49-
options.InsertSpaceAfterKeywordsInControlFlowStatements = true;
51+
formatOptions.InsertSpaceAfterKeywordsInControlFlowStatements = true;
5052
} else if (value === "check-decl") {
5153
// none?
5254
} else if (value === "check-operator") {
53-
options.InsertSpaceBeforeAndAfterBinaryOperators = true;
55+
formatOptions.InsertSpaceBeforeAndAfterBinaryOperators = true;
5456
} else if (value === "check-separator") {
55-
options.InsertSpaceAfterCommaDelimiter = true;
56-
options.InsertSpaceAfterSemicolonInForStatements = true;
57+
formatOptions.InsertSpaceAfterCommaDelimiter = true;
58+
formatOptions.InsertSpaceAfterSemicolonInForStatements = true;
5759
} else if (value === "check-type") {
5860
// none?
5961
}
6062
}
6163
}
6264

63-
return options;
65+
return formatOptions;
6466
}

0 commit comments

Comments
 (0)