gulp-choose-files
Advanced tools
+30
-52
| 'use strict'; | ||
| var through = require('through2'); | ||
| var extend = require('extend-shallow'); | ||
| var Prompt = require('prompt-checkbox'); | ||
| const through = require('through2'); | ||
| const { prompt } = require('enquirer'); | ||
| module.exports = function(options) { | ||
| var opts = extend({key: 'relative', save: false}, options); | ||
| var msg = opts.message || 'Which files do you want to write?'; | ||
| var paths = []; | ||
| var files = {}; | ||
| const fileKey = (file, options) => { | ||
| if (typeof options.key === 'string') return file[options.key]; | ||
| if (typeof options.key === 'function') return options.key(file); | ||
| return file.relative; | ||
| }; | ||
| return through.obj(function(file, enc, next) { | ||
| module.exports = options => { | ||
| const opts = Object.assign({ key: 'relative' }, options); | ||
| const message = opts.message || 'Which files do you want to write?'; | ||
| const predefined = [].concat(opts.paths || []); | ||
| const choices = []; | ||
| const files = {}; | ||
| return through.obj((file, enc, next) => { | ||
| if (opts.skip) { | ||
@@ -19,23 +25,16 @@ next(null, file); | ||
| var key = fileKey(file, opts); | ||
| paths.push(key); | ||
| files[key] = file; | ||
| next(); | ||
| }, function(next) { | ||
| var stream = this; | ||
| if (typeof opts.choices === 'string') { | ||
| opts.choices = [opts.choices]; | ||
| let key = fileKey(file, opts); | ||
| if (predefined.length && predefined.includes(key)) { | ||
| next(null, file); | ||
| return; | ||
| } | ||
| if (Array.isArray(opts.choices)) { | ||
| opts.choices.forEach(function(filepath) { | ||
| stream.push(files[filepath]); | ||
| }); | ||
| next(); | ||
| return; | ||
| if (!predefined.length) { | ||
| choices.push(key); | ||
| files[key] = file; | ||
| } | ||
| if (paths.length === 0) { | ||
| next(); | ||
| }, function(next) { | ||
| if (!choices.length) { | ||
| next(); | ||
@@ -45,32 +44,11 @@ return; | ||
| var answers = {}; | ||
| var prompt = new Prompt({ | ||
| name: 'files', | ||
| message: msg, | ||
| type: 'checkbox', | ||
| choiceObject: true, | ||
| radio: true, | ||
| choices: paths | ||
| }); | ||
| prompt.run(answers) | ||
| .then(function(answers) { | ||
| answers.forEach(function(filepath) { | ||
| stream.push(files[filepath]); | ||
| }); | ||
| prompt({ type: 'multiselect', name: 'paths', message, choices, ...options }) | ||
| .then(answers => { | ||
| if (answers.paths && answers.paths.length) { | ||
| answers.paths.forEach(filename => this.push(files[filename])); | ||
| } | ||
| next(); | ||
| }) | ||
| .catch(next); | ||
| }); | ||
| }; | ||
| function fileKey(file, opts) { | ||
| if (typeof opts.key === 'string') { | ||
| return file[opts.key]; | ||
| } | ||
| if (typeof opts.key === 'function') { | ||
| return opts.key(file); | ||
| } | ||
| return file.relative; | ||
| } |
+1
-1
| The MIT License (MIT) | ||
| Copyright (c) 2016-2017, Jon Schlinkert | ||
| Copyright (c) 2016-present, Jon Schlinkert. | ||
@@ -5,0 +5,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy |
+6
-13
| { | ||
| "name": "gulp-choose-files", | ||
| "description": "Gulp plugin that prompts you to choose the files to pass through the stream.", | ||
| "version": "1.0.0", | ||
| "version": "2.0.0", | ||
| "homepage": "https://github.com/generate/gulp-choose-files", | ||
@@ -17,3 +17,3 @@ "author": "Jon Schlinkert (https://github.com/jonschlinkert)", | ||
| "engines": { | ||
| "node": ">=0.10.0" | ||
| "node": ">=8" | ||
| }, | ||
@@ -24,11 +24,8 @@ "scripts": { | ||
| "dependencies": { | ||
| "extend-shallow": "^2.0.1", | ||
| "prompt-checkbox": "^0.5.0", | ||
| "through2": "^2.0.3" | ||
| "enquirer": "^2.3.0", | ||
| "through2": "^3.0.1" | ||
| }, | ||
| "devDependencies": { | ||
| "assemble": "^0.23.0", | ||
| "engine-handlebars": "^0.8.2", | ||
| "gulp": "^3.9.1", | ||
| "gulp-format-md": "^0.1.12" | ||
| "gulp": "^4.0.0", | ||
| "gulp-format-md": "^2.0.0" | ||
| }, | ||
@@ -67,6 +64,2 @@ "keywords": [ | ||
| }, | ||
| "reflinks": [ | ||
| "verb", | ||
| "verb-readme-generator" | ||
| ], | ||
| "lint": { | ||
@@ -73,0 +66,0 @@ "reflinks": true |
2
-33.33%2
-50%7533
-5.15%44
-29.03%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated