UNPKG

taskerify

Version:

A task-builder based on Laravel-Elixir.

86 lines (64 loc) 2.18 kB
'use strict'; var p = require('path'); var gutils = require('gulp-util'); var parsePath = require('parse-filepath'); var GulpPaths = function GulpPaths() {}; GulpPaths.prototype.src = function (src, prefix) { var self = this; src = this.prefix(src, prefix); if (Array.isArray(src)) { src = src.map(function (path) { if (self.parse(path).isDir) { path += '/**/*'; } return path; }); this.src = { path: src, baseDir: prefix }; } else { this.src = this.parse(src); this.src.isDir && (this.src.path += '/**/*'); } return this; }; GulpPaths.prototype.output = function (output, defaultName) { this.output = this.parse(output); if (!this.output.name && defaultName) { if (!Array.isArray(this.src.path) && this.src.name.indexOf('*') == -1) { defaultName = this.changeExtension(this.src.name, this.parse(defaultName).extension); } this.output = this.parse(p.join(output, defaultName)); } return this; }; GulpPaths.prototype.changeExtension = function (path, newExtension) { return gutils.replaceExtension(path, newExtension); }; GulpPaths.prototype.prefix = function (path, prefix) { if (!prefix) return path; var prefixOne = function prefixOne(path) { if (path.indexOf('./') == 0) { return path; } if (path.indexOf('!') == 0) { path = '!' + p.join(prefix, path.substring(1)); } else { path = p.join(prefix, path); } return path.replace(/\/\//g, '/').replace(/\/\//g, '/').replace(p.join(prefix, prefix), prefix); }; if (Array.isArray(path)) { return path.map(prefixOne); } return prefixOne(path); }; GulpPaths.prototype.parse = function (path) { var segments = parsePath(path); return { path: path, name: segments.extname ? segments.basename : '', extension: segments.extname, isDir: !!!segments.extname, baseDir: segments.extname ? segments.dirname : p.join(segments.dirname, segments.basename) }; }; module.exports = GulpPaths;