system change

This commit is contained in:
Philipp Kunz 2018-03-03 13:57:55 +01:00
parent 48a9affa47
commit 96a5142409
4 changed files with 44 additions and 46 deletions

View File

@ -1 +1 @@
export * from './smartgulp.gulpapi' export * from './smartgulp.gulpapi';

View File

@ -1,12 +1,12 @@
// this file contains the code to generate and handle the stream // this file contains the code to generate and handle the stream
import * as plugins from './smartgulp.plugins' import * as plugins from './smartgulp.plugins';
import { Smartfile } from 'smartfile' import { Smartfile } from 'smartfile';
import { Transform } from 'stream' import { Transform } from 'stream';
export class GulpStream { export class GulpStream {
stream = new Transform({ objectMode: true }) stream = new Transform({ objectMode: true });
/** /**
* allows you to pipe a SmartfileArray into the stream * allows you to pipe a SmartfileArray into the stream
@ -14,17 +14,17 @@ export class GulpStream {
async pipeSmartfileArray(smartfileArray: Smartfile[]) { async pipeSmartfileArray(smartfileArray: Smartfile[]) {
// ensure what we get is an array // ensure what we get is an array
if (!Array.isArray(smartfileArray)) { if (!Array.isArray(smartfileArray)) {
throw new Error('fileArg has unknown format') throw new Error('fileArg has unknown format');
} }
for (let smartfile of smartfileArray) { for (let smartfile of smartfileArray) {
let hasWritten = this.stream.push(smartfile) let hasWritten = this.stream.push(smartfile);
if (!hasWritten) { if (!hasWritten) {
await plugins.smartevent.once(this.stream, 'drain') await plugins.smartevent.once(this.stream, 'drain');
} else { } else {
// iterate // iterate
} }
}; }
// signal end of stream; // signal end of stream;
this.stream.push(null) this.stream.push(null);
} }
} }

View File

@ -1,35 +1,39 @@
// this file contains the implementation of the standard gulp api // this file contains the implementation of the standard gulp api
import * as plugins from './smartgulp.plugins' import * as plugins from './smartgulp.plugins';
import { GulpStream } from './smartgulp.classes.gulpstream' import { GulpStream } from './smartgulp.classes.gulpstream';
import { Transform } from 'stream' import { Transform } from 'stream';
import { Smartfile } from 'smartfile' import { Smartfile } from 'smartfile';
export let src = (minimatchPathArrayArg: string[]): Transform => { export let src = (minimatchPathArrayArg: string[]): Transform => {
let gulpStream = new GulpStream() let gulpStream = new GulpStream();
let handleFiles = async () => { let handleFiles = async () => {
let smartfileArray: Smartfile[] = [] let smartfileArray: Smartfile[] = [];
for (let minimatchPath of minimatchPathArrayArg) { for (let minimatchPath of minimatchPathArrayArg) {
let localSmartfileArray = await plugins.smartfile.fs.fileTreeToObject(process.cwd(), minimatchPath) let localSmartfileArray = await plugins.smartfile.fs.fileTreeToObject(
smartfileArray = plugins.lodash.concat(smartfileArray, localSmartfileArray) process.cwd(),
minimatchPath
);
smartfileArray = plugins.lodash.concat(smartfileArray, localSmartfileArray);
} }
gulpStream.pipeSmartfileArray(smartfileArray) gulpStream.pipeSmartfileArray(smartfileArray);
} };
handleFiles().catch(err => { handleFiles().catch(err => {
console.log(err) console.log(err);
}) });
return gulpStream.stream return gulpStream.stream;
} };
export let dest = (dirArg: string) => { export let dest = (dirArg: string) => {};
}
export let replace = () => { export let replace = () => {
return plugins.through2.obj(async (file: Smartfile, enc, cb) => { return plugins.through2.obj(
await file.write() async (file: Smartfile, enc, cb) => {
cb(null, file) await file.write();
}, (cb) => { cb(null, file);
cb() },
}) cb => {
} cb();
}
);
};

View File

@ -1,13 +1,7 @@
import * as smartevent from 'smartevent' import * as smartevent from 'smartevent';
import * as smartfile from 'smartfile' import * as smartfile from 'smartfile';
import * as smartstream from 'smartstream' import * as smartstream from 'smartstream';
import * as lodash from 'lodash' import * as lodash from 'lodash';
import * as through2 from 'through2' import * as through2 from 'through2';
export { export { lodash, smartevent, smartfile, smartstream, through2 };
lodash,
smartevent,
smartfile,
smartstream,
through2
}