Merge branch 'next' into prevent-compile-loop-relay

This commit is contained in:
Wyatt Johnson
2018-07-04 11:02:08 -06:00
committed by GitHub
5 changed files with 33 additions and 8 deletions
+3 -3
View File
@@ -5,13 +5,13 @@ import { Executor } from "./types";
interface CommandExecutorOptions {
args?: ReadonlyArray<string>;
// If true, allow spawning multiple processes.
/** If true, allow spawning multiple processes. */
spawnMutiple?: boolean;
// Specify the period in which the process is started at max once.
/** Specify the period in which the process is started at max once. */
debounce?: number | false;
// If true, will run command upon initialization.
/** If true, will run command upon initialization. */
runOnInit?: boolean;
}
+1 -1
View File
@@ -6,7 +6,7 @@ import { Executor } from "./types";
interface LongRunningExecutorOptions {
args?: ReadonlyArray<string>;
// Specify the period in which the process is restarted at max once.
/** Specify the period in which the process is restarted at max once. */
debounce?: number;
}
+10 -2
View File
@@ -4,16 +4,24 @@ import program from "commander";
import path from "path";
import watch from "../";
function list(val: string) {
return val.split(",");
}
program
.version("0.1.0")
.usage("<configFile>")
.option("-o, --only <watcher>", "only run the specified watcher", list)
.arguments("<configFile>")
.description("Run watchers defined in <configFile>")
.action(configFile => {
.action((configFile, cmd) => {
const { only = [] } = cmd;
let config: any = require(path.resolve(configFile));
if (config.__esModule) {
config = config.default;
}
watch(config);
watch(config, { only });
})
.parse(process.argv);
+4
View File
@@ -17,6 +17,10 @@ export interface Executor {
execute(filePath: string): void;
}
export interface Options {
only?: string[];
}
export interface Config {
rootDir?: string;
backend?: Watcher;
+15 -2
View File
@@ -2,7 +2,7 @@ import Joi from "joi";
import path from "path";
import ChokidarWatcher from "./ChokidarWatcher";
import { Config, configSchema, WatchConfig, Watcher } from "./types";
import { Config, configSchema, Options, WatchConfig, Watcher } from "./types";
// Polyfill the asyncIterator symbol.
if (Symbol.asyncIterator === undefined) {
@@ -43,9 +43,22 @@ function setupCleanup(config: Config) {
);
}
export default async function watch(config: Config) {
function filterOnly(config: Config, only: string[]) {
for (const key of Object.keys(config.watchers)) {
if (only.indexOf(key) === -1) {
// tslint:disable-next-line:no-console
console.log(`Disabled watcher "${key}"`);
delete config.watchers[key];
}
}
}
export default async function watch(config: Config, options?: Options) {
Joi.assert(config, configSchema);
const watcher = config.backend || new ChokidarWatcher();
if (options && options.only && options.only.length > 0) {
filterOnly(config, options.only);
}
setupCleanup(config);
for (const key of Object.keys(config.watchers)) {
// tslint:disable-next-line:no-console