diff --git a/lib/cli.ts b/lib/cli.ts index 4d29456..f4eaa11 100644 --- a/lib/cli.ts +++ b/lib/cli.ts @@ -5,6 +5,7 @@ import commandpost = require("commandpost"); import path = require("path"); import lib = require("./index"); +import utils = require("./utils"); var packageJson = JSON.parse(fs.readFileSync(__dirname + "/../package.json").toString()); @@ -41,8 +42,13 @@ var root = commandpost var tsfmt = !!opts.tsfmt; var files = args.files; - if (files.length === 0 && fs.existsSync("tsconfig.json")) { - files = readFilesFromTsconfig("tsconfig.json"); + var useTsconfig = false; + if (files.length === 0) { + var configFileName = utils.getConfigFileName(process.cwd(), "tsconfig.json"); + if (configFileName) { + files = readFilesFromTsconfig(configFileName); + useTsconfig = true; + } } if (files.length === 0 && !opts.stdin) { @@ -54,6 +60,7 @@ var root = commandpost console.log("replace: " + (replace ? "ON" : "OFF")); console.log("verify: " + (verify ? "ON" : "OFF")); console.log("stdin: " + (stdin ? "ON" : "OFF")); + console.log("tsconfig: " + (useTsconfig ? "ON" : "OFF")); console.log("tslint: " + (tslint ? "ON" : "OFF")); console.log("editorconfig: " + (editorconfig ? "ON" : "OFF")); console.log("tsfmt: " + (tsfmt ? "ON" : "OFF")); diff --git a/lib/provider/base.ts b/lib/provider/base.ts index 0da5274..96edfc2 100644 --- a/lib/provider/base.ts +++ b/lib/provider/base.ts @@ -5,21 +5,7 @@ import ts = require("typescript"); import path = require("path"); import fs = require("fs"); -function getConfigFileName(baseFileName: string, configFileName: string): string { - "use strict"; - - var baseDir = path.dirname(baseFileName); - - if (fs.existsSync(baseDir + path.sep + configFileName)) { - return baseDir + path.sep + configFileName; - } - - if (baseDir.length === path.dirname(baseDir).length) { - return null; - } - - return getConfigFileName(baseDir, configFileName); -} +import utils = require("../utils"); interface TsfmtSettings { // from FormatCodeOptions @@ -50,7 +36,7 @@ interface TsfmtSettings { export function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions { "use strict"; - var configFileName = getConfigFileName(path.resolve(fileName), "tsfmt.json"); + var configFileName = utils.getConfigFileName(path.dirname(path.resolve(fileName)), "tsfmt.json"); if (!configFileName) { return options; } diff --git a/lib/provider/tslintjson.ts b/lib/provider/tslintjson.ts index b2f017d..fd29b49 100644 --- a/lib/provider/tslintjson.ts +++ b/lib/provider/tslintjson.ts @@ -5,21 +5,7 @@ import ts = require("typescript"); import path = require("path"); import fs = require("fs"); -function getConfigFileName(baseFileName: string, configFileName: string): string { - "use strict"; - - var baseDir = path.dirname(baseFileName); - - if (fs.existsSync(baseDir + path.sep + configFileName)) { - return baseDir + path.sep + configFileName; - } - - if (baseDir.length === path.dirname(baseDir).length) { - return null; - } - - return getConfigFileName(baseDir, configFileName); -} +import utils = require("../utils"); interface TslintSettings { rules: { @@ -42,7 +28,7 @@ interface TslintSettings { export function makeFormatCodeOptions(fileName: string, options: ts.FormatCodeOptions): ts.FormatCodeOptions { "use strict"; - var configFileName = getConfigFileName(path.resolve(fileName), "tslint.json"); + var configFileName = utils.getConfigFileName(path.dirname(path.resolve(fileName)), "tslint.json"); if (!configFileName) { return options; } diff --git a/lib/utils.ts b/lib/utils.ts index d7686b9..9ff4bb4 100644 --- a/lib/utils.ts +++ b/lib/utils.ts @@ -2,6 +2,9 @@ import ts = require("typescript"); +import fs = require("fs"); +import path = require("path"); + export function createDefaultFormatCodeOptions(): ts.FormatCodeOptions { "use strict"; @@ -21,3 +24,18 @@ export function createDefaultFormatCodeOptions(): ts.FormatCodeOptions { PlaceOpenBraceOnNewLineForControlBlocks: false }; } + +export function getConfigFileName(baseDir: string, configFileName: string): string { + "use strict"; + + var configFilePath = path.resolve(baseDir, configFileName); + if (fs.existsSync(configFilePath)) { + return configFilePath; + } + + if (baseDir.length === path.dirname(baseDir).length) { + return null; + } + + return getConfigFileName(path.resolve(baseDir, "../"), configFileName); +} diff --git a/tsconfig.json b/tsconfig.json index 0322da2..a465f54 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -41,4 +41,4 @@ "./typings/power-assert/power-assert.d.ts", "./node_modules/typescript/lib/lib.es6.d.ts" ] -} \ No newline at end of file +}