file-prompt
Version:
An interactive prompt for selecting files from a directory.
1 lines • 4.47 kB
JavaScript
;function _interopRequireDefault(e){return e&&e.__esModule?e:{"default":e}}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _possibleConstructorReturn(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}();Object.defineProperty(exports,"__esModule",{value:!0});var _chalk=require("chalk"),_chalk2=_interopRequireDefault(_chalk),_column=require("../util/column"),_column2=_interopRequireDefault(_column),_dispatcher=require("../streams/dispatcher"),_dispatcher2=_interopRequireDefault(_dispatcher),_dispatch_transform=require("../streams/dispatch_transform"),_dispatch_transform2=_interopRequireDefault(_dispatch_transform),_menu=require("../menu"),_menu2=_interopRequireDefault(_menu),_menu_transform=require("../streams/menu_transform"),_menu_transform2=_interopRequireDefault(_menu_transform),_page=require("../page"),_page2=_interopRequireDefault(_page),_path=require("path"),_path2=_interopRequireDefault(_path),_prompt=require("../prompt"),_prompt2=_interopRequireDefault(_prompt),_queries_transform=require("../streams/queries_transform"),_queries_transform2=_interopRequireDefault(_queries_transform),MENU_OPTIONS=[{id:1,label:"directories",name:"directories",value:"directories"},{id:2,label:"files",name:"files",value:"files"},{id:3,label:"glob",name:"glob",value:"glob"},{id:4,label:"changed",name:"changed",value:"changed"},{id:5,label:"help",name:"help",value:"help"},{id:6,label:"quit",name:"quit",value:"quit"}],MAX_LABEL_WIDTH=6,MAX_HELP_WIDTH=11,IndexPage=function(e){function t(e){_classCallCheck(this,t);var r=_possibleConstructorReturn(this,Object.getPrototypeOf(t).call(this,e));return r.intro="*** COMMANDS ***",r.question="What do you seek?",r.prompt=new _prompt2["default"]({stdin:r.props.stdin,stdout:r.props.stdout}),r.menu=new _menu2["default"]({options:MENU_OPTIONS,stdin:r.props.stdin,stdout:r.props.stdout,app:r.props.app}),r.pipeline=r.createPipeline(),r}return _inherits(t,e),_createClass(t,[{key:"quit",value:function(){this.emit("complete",this.select("files"))}},{key:"route",value:function(e,t){var r=t.data;switch(t.type){case"navigate":switch(t.data){case"blank":e.end(),this.reprompt();break;case"quit":e.end(),this.quit();break;case"help":e.end(),this.showHelp(),this.reprompt();break;default:e.end(),this.navigate(r)}break;case"done":this.reprompt();break;case"error":this.displayError(t.data)}}},{key:"showHelp",value:function(){var e={directories:"Select files & browse directories",files:"Select from a list of all nested files",glob:"Input a glob string then selected from matches",changed:"Select files from git diff --name-only",help:"Uhhh... this thing I guess...",quit:"Forward files along"},t="HELP\n";for(var r in e)if(e.hasOwnProperty(r)){var n=e[r];t+=" "+(0,_column2["default"])(r,MAX_HELP_WIDTH)+" - "+n+"\n"}this.props.stdout.write(_chalk2["default"].bold.red(t))}},{key:"showPrompt",value:function(){return this.prompt.beckon(this.question).pipe(this.pipeline).pipe(new _dispatcher2["default"](this.route))}},{key:"workflow",value:function(){return{query:new _queries_transform2["default"]({maxQueries:1}),menu:new _menu_transform2["default"]({menu:this.menu,canUnselect:!1}),dispatch:new _dispatch_transform2["default"]({store:this.props.store})}}},{key:"renderIntro",value:function(){var e="",t=this.select("files"),r=this.select("config.base");return t.length&&(e+="\n",t.forEach(function(t,n){var i=_path2["default"].relative(r,t),a=n+1+": ";a=(0,_column2["default"])(a,MAX_LABEL_WIDTH),e+=a+" "+i+"\n"}),e+="\n"),e+=_chalk2["default"].white.bold(this.intro)+"\n"}},{key:"renderPrompt",value:function(){return this.showPrompt}},{key:"renderMenu",value:function(){return this.menu.render()+"\n"}}]),t}(_page2["default"]);exports["default"]=IndexPage;