Skip to content

Commit e9f8c98

Browse files
committed
feat(tslint): add support to read extended tslint.json
Closes: vvakame#123
1 parent 89f6990 commit e9f8c98

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

lib/provider/tslintjson.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export interface AdditionalFormatSettings {
2929
$noConsecutiveBlankLines: boolean;
3030
}
3131

32-
export function makeFormatCodeOptions(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): ts.FormatCodeSettings {
32+
export async function makeFormatCodeOptions(fileName: string, opts: Options, formatSettings: ts.FormatCodeSettings): Promise<ts.FormatCodeSettings> {
3333

3434
let baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
3535
let configFileName: string | null;
@@ -46,20 +46,25 @@ export function makeFormatCodeOptions(fileName: string, opts: Options, formatSet
4646
console.log(`read ${configFileName} for ${fileName}`);
4747
}
4848

49-
let config: TslintSettings = parseJSON(fs.readFileSync(configFileName, "utf-8"));
50-
if (!config.rules) {
49+
const { Configuration } = await import("tslint");
50+
const { rules } = Configuration.loadConfigurationFromPath(configFileName);
51+
52+
if (!rules) {
5153
return formatSettings;
5254
}
53-
if (config.rules.indent && config.rules.indent[0]) {
54-
if (config.rules.indent[1] === "spaces") {
55+
const indent = rules.get("indent");
56+
const whitespace = rules.get("whitespace");
57+
58+
if (indent && indent.ruleArguments) {
59+
if (indent.ruleArguments[0] === "spaces") {
5560
formatSettings.convertTabsToSpaces = true;
56-
} else if (config.rules.indent[1] === "tabs") {
61+
} else if (indent.ruleArguments[0] === "tabs") {
5762
formatSettings.convertTabsToSpaces = false;
5863
}
5964
}
60-
if (config.rules.whitespace && config.rules.whitespace[0]) {
61-
for (let p in config.rules.whitespace) {
62-
let value = config.rules.whitespace[p];
65+
if (whitespace && whitespace.ruleArguments) {
66+
for (let p in whitespace.ruleArguments) {
67+
let value = whitespace.ruleArguments[p];
6368
if (value === "check-branch") {
6469
formatSettings.insertSpaceAfterKeywordsInControlFlowStatements = true;
6570
} else if (value === "check-decl") {

0 commit comments

Comments
 (0)