Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 1x | import { Service } from '../../container';
import { writeFileSync, existsSync, readdir, stat } from 'fs';
import * as mkdirp from 'mkdirp';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { BootstrapLogger } from '../bootstrap-logger';
import { Injector } from '../../decorators/injector/injector.decorator';
import { resolve } from 'path';
@Service()
export class FileService {
@Injector(BootstrapLogger) private logger: BootstrapLogger;
writeFileSync(folder: string, fileName, moduleName, file) {
return this.mkdirp(folder)
.pipe(
map(() => {
this.logger.logFileService(`Bootstrap: @Service('${fileName}'): Saved inside ${folder}`);
return writeFileSync(`${folder}/${fileName}`, file);
})
);
}
isPresent(path: string) {
return existsSync(path);
}
mkdirp(folder): Observable<boolean> {
return Observable.create(observer => {
mkdirp(folder, (err) => {
if (err) {
console.error(err);
observer.error(false);
}
else {
observer.next(true);
}
});
});
}
public fileWalker(dir): Observable<string[]> {
return Observable.create(observer => {
this.filewalker(dir, (err, result) => {
if (err) {
observer.error(err);
} else {
observer.next(result);
}
});
});
}
private filewalker(dir, done) {
let results = [];
const fileWalker = this.filewalker.bind(this);
readdir(dir, function (err, list) {
if (err) {
return done(err);
}
let pending = list.length;
if (!pending) {
return done(null, results);
}
list.forEach(function (file) {
file = resolve(dir, file);
stat(file, function (err, stat) {
if (stat && stat.isDirectory()) {
results.push(file);
fileWalker(file, function (err, res) {
results = results.concat(res);
if (!--pending) {
done(null, results);
}
});
} else {
results.push(file);
if (!--pending) {
done(null, results);
}
}
});
});
});
}
} |