Skip to content

Commit b69c4b6

Browse files
committed
feat(api): add baseDir options closes #23
1 parent c425bac commit b69c4b6

File tree

5 files changed

+21
-5
lines changed

5 files changed

+21
-5
lines changed

lib/cli.ts

+7-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ let packageJson = JSON.parse(fs.readFileSync(__dirname + "/../package.json").toS
1212
interface RootOptions {
1313
replace: boolean;
1414
verify: boolean;
15+
baseDir: string[];
1516
stdin: boolean;
1617
tslint: boolean;
1718
editorconfig: boolean;
@@ -28,6 +29,7 @@ let root = commandpost
2829
.version(packageJson.version, "-v, --version")
2930
.option("-r, --replace", "replace .ts file")
3031
.option("--verify", "checking file format")
32+
.option("--baseDir <path>", "config file lookup from <path>")
3133
.option("--stdin", "get formatting content from stdin")
3234
.option("--no-tslint", "don't read a tslint.json")
3335
.option("--no-editorconfig", "don't read a .editorconfig")
@@ -36,6 +38,7 @@ let root = commandpost
3638
.action((opts, args) => {
3739
let replace = !!opts.replace;
3840
let verify = !!opts.verify;
41+
let baseDir = opts.baseDir ? opts.baseDir[0] : null;
3942
let stdin = !!opts.stdin;
4043
let tslint = !!opts.tslint;
4144
let editorconfig = !!opts.editorconfig;
@@ -45,7 +48,7 @@ let root = commandpost
4548
let files = args.files;
4649
let useTsconfig = false;
4750
if (files.length === 0) {
48-
let configFileName = getConfigFileName(process.cwd(), "tsconfig.json");
51+
let configFileName = getConfigFileName(baseDir || process.cwd(), "tsconfig.json");
4952
if (configFileName) {
5053
files = readFilesFromTsconfig(configFileName);
5154
if (verbose) {
@@ -63,6 +66,7 @@ let root = commandpost
6366
if (verbose) {
6467
console.log("replace: " + (replace ? "ON" : "OFF"));
6568
console.log("verify: " + (verify ? "ON" : "OFF"));
69+
console.log("baseDir: " + (baseDir ? baseDir : process.cwd()));
6670
console.log("stdin: " + (stdin ? "ON" : "OFF"));
6771
console.log("tsconfig: " + (useTsconfig ? "ON" : "OFF"));
6872
console.log("tslint: " + (tslint ? "ON" : "OFF"));
@@ -79,6 +83,7 @@ let root = commandpost
7983
.processStream(files[0] || "temp.ts", process.stdin, {
8084
replace: replace,
8185
verify: verify,
86+
baseDir: baseDir,
8287
tslint: tslint,
8388
editorconfig: editorconfig,
8489
tsfmt: tsfmt,
@@ -96,6 +101,7 @@ let root = commandpost
96101
.processFiles(files, {
97102
replace: replace,
98103
verify: verify,
104+
baseDir: baseDir,
99105
tslint: tslint,
100106
editorconfig: editorconfig,
101107
tsfmt: tsfmt,

lib/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import tslintjson from "./provider/tslintjson";
1313
export interface Options {
1414
dryRun?: boolean;
1515
verbose?: boolean;
16+
baseDir?: string;
1617
replace: boolean;
1718
verify: boolean;
1819
tslint: boolean;

lib/provider/base.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,14 @@ interface TsfmtSettings {
3737
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
3838
"use strict";
3939

40-
var configFileName = getConfigFileName(path.dirname(path.resolve(fileName)), "tsfmt.json");
40+
let baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
41+
let configFileName = getConfigFileName(baseDir, "tsfmt.json");
4142
if (!configFileName) {
4243
return formatOptions;
4344
}
4445

4546
if (opts.verbose) {
46-
console.log(`read ${configFileName}`);
47+
console.log(`read ${configFileName} for ${fileName}`);
4748
}
4849

4950
var config: TsfmtSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));

lib/provider/editorconfig.ts

+7
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,16 @@ import * as editorconfig from "editorconfig";
66

77
import {Options} from "../";
88

9+
let emitBaseDirWarning = false;
10+
911
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): Promise<ts.FormatCodeOptions> {
1012
"use strict";
1113

14+
if (opts.verbose && opts.baseDir && !emitBaseDirWarning) {
15+
console.log("editorconfig is not supported baseDir options");
16+
emitBaseDirWarning = true;
17+
}
18+
1219
return editorconfig
1320
.parse(fileName)
1421
.then(config => {

lib/provider/tslintjson.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ interface TslintSettings {
2929
export default function makeFormatCodeOptions(fileName: string, opts: Options, formatOptions: ts.FormatCodeOptions): ts.FormatCodeOptions {
3030
"use strict";
3131

32-
let configFileName = getConfigFileName(path.dirname(path.resolve(fileName)), "tslint.json");
32+
let baseDir = opts.baseDir ? path.resolve(opts.baseDir) : path.dirname(path.resolve(fileName));
33+
let configFileName = getConfigFileName(baseDir, "tslint.json");
3334
if (!configFileName) {
3435
return formatOptions;
3536
}
3637
if (opts.verbose) {
37-
console.log(`read ${configFileName} for ${fileName}`);
38+
console.log(`read ${configFileName} for ${fileName}`);
3839
}
3940

4041
let config: TslintSettings = JSON.parse(<any>fs.readFileSync(configFileName, "utf-8"));

0 commit comments

Comments
 (0)