///
import map from 'map-stream';
import path from 'path';
import fancyLog from 'fancy-log';
import colors from 'ansi-colors';
import * as stream from 'stream';
import * as vinyl from 'vinyl';
export interface FormatFunction {
(filepath: string): string;
}
export interface LogFunction {
(message: string): void;
}
let log: LogFunction = fancyLog;
export function setLogFunction(fn: LogFunction): void {
log = fn;
}
export default function gulpPrint(format?: FormatFunction): stream.Stream {
if (!format) {
format = (filepath: string): string => filepath;
}
function mapFile(file: vinyl, cb: map.INewDataCallback): void {
const filepath = colors.magenta(path.relative(process.cwd(), file.path));
const formatted = format(filepath);
if (formatted) {
log(formatted);
}
cb(null, file);
}
return map(mapFile);
}