noe reading correctly
This commit is contained in:
10
ts/index.ts
10
ts/index.ts
@ -1,9 +1 @@
|
||||
import * as plugins from './smartgulp.plugins'
|
||||
|
||||
export let src = () => {
|
||||
|
||||
}
|
||||
|
||||
export let dest = () => {
|
||||
|
||||
}
|
||||
export * from './smartgulp.gulpapi'
|
||||
|
30
ts/smartgulp.classes.gulpstream.ts
Normal file
30
ts/smartgulp.classes.gulpstream.ts
Normal file
@ -0,0 +1,30 @@
|
||||
// this file contains the code to generate and handle the stream
|
||||
|
||||
import * as plugins from './smartgulp.plugins'
|
||||
import { Smartfile } from 'smartfile'
|
||||
|
||||
import { Transform } from 'stream'
|
||||
|
||||
export class GulpStream {
|
||||
stream = new Transform({ objectMode: true })
|
||||
|
||||
/**
|
||||
* allows you to pipe a SmartfileArray into the stream
|
||||
*/
|
||||
async pipeSmartfileArray(smartfileArray: Smartfile[]) {
|
||||
// ensure what we get is an array
|
||||
if (!Array.isArray(smartfileArray)) {
|
||||
throw new Error('fileArg has unknown format')
|
||||
}
|
||||
for (let smartfile of smartfileArray) {
|
||||
let hasWritten = this.stream.push(smartfile)
|
||||
if (!hasWritten) {
|
||||
await plugins.smartevent.once(this.stream, 'drain')
|
||||
} else {
|
||||
// iterate
|
||||
}
|
||||
};
|
||||
// signal end of stream;
|
||||
this.stream.push(null)
|
||||
}
|
||||
}
|
26
ts/smartgulp.gulpapi.ts
Normal file
26
ts/smartgulp.gulpapi.ts
Normal file
@ -0,0 +1,26 @@
|
||||
// this file contains the implementation of the standard gulp api
|
||||
import * as plugins from './smartgulp.plugins'
|
||||
import { GulpStream } from './smartgulp.classes.gulpstream'
|
||||
import { Transform } from 'stream'
|
||||
|
||||
import { Smartfile } from 'smartfile'
|
||||
|
||||
export let src = (minimatchPathArrayArg: string[]): Transform => {
|
||||
let gulpStream = new GulpStream()
|
||||
let handleFiles = async () => {
|
||||
let smartfileArray: Smartfile[] = []
|
||||
for (let minimatchPath of minimatchPathArrayArg) {
|
||||
let localSmartfileArray = await plugins.smartfile.fs.fileTreeToObject(process.cwd(), minimatchPath)
|
||||
smartfileArray = plugins.lodash.concat(smartfileArray, localSmartfileArray)
|
||||
}
|
||||
gulpStream.pipeSmartfileArray(smartfileArray)
|
||||
}
|
||||
handleFiles().catch(err => {
|
||||
console.log(err)
|
||||
})
|
||||
return gulpStream.stream
|
||||
}
|
||||
|
||||
export let dest = () => {
|
||||
|
||||
}
|
@ -1,5 +1,11 @@
|
||||
import * as smartevent from 'smartevent'
|
||||
import * as smartfile from 'smartfile'
|
||||
import * as smartstream from 'smartstream'
|
||||
import * as lodash from 'lodash'
|
||||
|
||||
export {
|
||||
lodash,
|
||||
smartevent,
|
||||
smartfile,
|
||||
smartstream
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user