提交 023af41a 编写于 作者: M Martin Aeschlimann

chickodarservice: setVerboseLogging & stop

上级 0c0d368e
......@@ -45,7 +45,8 @@ export class ChokidarWatcherService implements IWatcherService {
private _watchers: { [watchPath: string]: IWatcher };
private _watcherCount: number;
private _options: IWatcherOptions & IChockidarWatcherOptions;
private _pollingInterval: number;
private _verboseLogging: boolean;
private spamCheckStartTime: number;
private spamWarningLogged: boolean;
......@@ -54,13 +55,19 @@ export class ChokidarWatcherService implements IWatcherService {
private _onWatchEvent = new Emitter<watcherCommon.IRawFileChange[] | IWatchError>();
readonly onWatchEvent = this._onWatchEvent.event;
watch(options: IWatcherOptions & IChockidarWatcherOptions): Event<watcherCommon.IRawFileChange[] | IWatchError> {
this._options = options;
public watch(options: IWatcherOptions & IChockidarWatcherOptions): Event<watcherCommon.IRawFileChange[] | IWatchError> {
this._verboseLogging = options.verboseLogging;
this._pollingInterval = options.pollingInterval;
this._watchers = Object.create(null);
this._watcherCount = 0;
return this.onWatchEvent;
}
public setVerboseLogging(enabled: boolean): TPromise<void> {
this._verboseLogging = enabled;
return TPromise.as(null);
}
public setRoots(requests: IWatcherRequest[]): TPromise<void> {
const watchers = Object.create(null);
const newRequests = [];
......@@ -97,11 +104,11 @@ export class ChokidarWatcherService implements IWatcherService {
}
private _watch(basePath: string, requests: IWatcherRequest[]): IWatcher {
if (this._options.verboseLogging) {
if (this._verboseLogging) {
console.log(`Start watching: ${basePath}]`);
}
const pollingInterval = this._options.pollingInterval || 1000;
const pollingInterval = this._pollingInterval || 1000;
const watcherOpts: chokidar.IOptions = {
ignoreInitial: true,
......@@ -144,7 +151,7 @@ export class ChokidarWatcherService implements IWatcherService {
requests,
stop: () => {
try {
if (this._options.verboseLogging) {
if (this._verboseLogging) {
console.log(`Stop watching: ${basePath}]`);
}
if (chokidarWatcher) {
......@@ -206,7 +213,7 @@ export class ChokidarWatcherService implements IWatcherService {
let event = { type: eventType, path };
// Logging
if (this._options.verboseLogging) {
if (this._verboseLogging) {
console.log(`${eventType === FileChangeType.ADDED ? '[ADDED]' : eventType === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${path}`);
}
......@@ -233,7 +240,7 @@ export class ChokidarWatcherService implements IWatcherService {
this._onWatchEvent.fire(res);
// Logging
if (this._options.verboseLogging) {
if (this._verboseLogging) {
res.forEach(r => {
console.log(` >> normalized ${r.type === FileChangeType.ADDED ? '[ADDED]' : r.type === FileChangeType.DELETED ? '[DELETED]' : '[CHANGED]'} ${r.path}`);
});
......
......@@ -25,4 +25,6 @@ export interface IWatchError {
export interface IWatcherService {
watch(options: IWatcherOptions): Event<IRawFileChange[] | IWatchError>;
setRoots(roots: IWatcherRequest[]): TPromise<void>;
setVerboseLogging(enabled: boolean): TPromise<void>;
stop(): TPromise<void>;
}
\ No newline at end of file
......@@ -16,6 +16,7 @@ export interface IWatcherChannel extends IChannel {
listen<T>(event: string, arg?: any): Event<T>;
call(command: 'setRoots', request: IWatcherRequest[]): TPromise<void>;
call(command: 'setVerboseLogging', request: boolean): TPromise<void>;
call<T>(command: string, arg?: any): TPromise<T>;
}
......@@ -30,9 +31,11 @@ export class WatcherChannel implements IWatcherChannel {
throw new Error('No events');
}
call(command: string, arg: any): TPromise<any> {
call(command: string, arg?: any): TPromise<any> {
switch (command) {
case 'setRoots': return this.service.setRoots(arg);
case 'setVerboseLogging': return this.service.setVerboseLogging(arg);
case 'stop': return this.service.stop();
}
return undefined;
}
......@@ -46,7 +49,15 @@ export class WatcherChannelClient implements IWatcherService {
return this.channel.listen('watch', options);
}
setVerboseLogging(enable: boolean): TPromise<void> {
return this.channel.call('setVerboseLogging', enable);
}
setRoots(roots: IWatcherRequest[]): TPromise<void> {
return this.channel.call('setRoots', roots);
}
stop(): TPromise<void> {
return this.channel.call('stop');
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册