import { emptyDir } from 'fs-extra'; import { chmod, lstat, readdir, rmdir, stat, unlink } from 'graceful-fs'; import { Options } from 'rimraf'; import * as rimraf from 'rimraf'; import { Observable, Observer } from 'rxjs'; import { VError } from 'verror'; const opt: Options = { unlink, chmod, stat, lstat, rmdir, readdir }; function _rxDeleteFile(aPath: string): Observable { return Observable.create((o: Observer) => { // dispatch unlink(aPath, rimRafErr => { // test for error if (rimRafErr) { o.error(new VError(rimRafErr, 'Unable to delete file [%s].', aPath)); } else { o.next(aPath); o.complete(); } }); }); } function _rxDeleteDir(aPath: string): Observable { return Observable.create((o: Observer) => { // dispatch rimraf(aPath, opt, rimRafErr => { // test for error if (rimRafErr) { o.error(new VError(rimRafErr, 'Unable to delete directory [%s].', aPath)); } else { o.next(aPath); o.complete(); } }); }); } function _rxEmptyDir(aPath: string): Observable { return Observable.create((o: Observer) => { // dispatch emptyDir(aPath, emptyError => { // test for error if (emptyError) { o.error(new VError(emptyError, 'Unable to empty directory [%s].', aPath)); } else { o.next(aPath); o.complete(); } }); }); } export { _rxDeleteDir as rxDeleteDir, _rxEmptyDir as rxEmptyDir, _rxDeleteFile as rxDeleteFile };