1.5.0 • Published 3 years ago

inquirer-fs-selector v1.5.0

Weekly downloads
3
License
MIT
Repository
github
Last release
3 years ago

inquirer-fs-selector

A filesystem prompt selector plugin for Inquirer.js.

npm version dependency status npm downloads

Installation

npm install --save inquirer-fs-selector

Features

  • Support for symlinked files
  • Vim style navigation
  • Search for file with / key
  • Customize (or disable) file and directory icons
  • Select file (optionally) or directory
  • Define the initial pointer position

Key Maps

  • Press / key to enter search mode
  • Press - key to go up (back) a directory
  • Press . key to select the current directory

Usage

This prompt is anonymous, meaning you can register this prompt with the type name you please:

inquirer.registerPrompt('fs-selector', require('inquirer-fs-selector'));
inquirer.prompt({
  type: 'fs-selector',
  // ...
})

Change fs-selector to whatever you might prefer.

Parameters

Note: allowed options written inside square brackets ([]) are optional. Others are required.

Takes type, name, message, basePath[, default, options ] properties.

See inquirer.js README for meaning of all except basePath and default.

Which are:

  • basePath the relative path from your current working directory
  • default the name of the item (string) where the pointer will be initially positioned (default: '.')

Return

An object with the following shape

{
  isDirectory: Boolean
  isFile: Boolean
  path: String // path to selected file/directory
}

Example

const inquirer = require('inquirer')
inquirer.registerPrompt('fs', require('inquirer-fs-selector'))
// ...
inquirer.prompt([{
  type: 'directory',
  name: 'fs',
  message: 'Choose a file or directory',
  basePath: './',
  options: {
    displayHidden: true,
    displayFiles: true,
    canSelectFile: true,
    icons: {
      currentDir: '\u{1F4C2}',
      // dir: '\u{1F4C1}',
      // file: '\u{1F4C4}',
    },
    // icons: false, // Do not display icons
    shouldDisplayItem: (isDir, isFile, path) => true, // display file/directory
  }
}]).then((answers) => {
  console.log(answers.fs)
})

See also example.js for a working example.

asciicast demo

Options

keydefaultdescription
displayFilestrueSet this to false if you need to hide files
displayHiddenfalseSet this to true if you to display hidden folders (and displayFiles === true)
canSelectFiletrue (if displayFiles === true)Set this to false to disable files selection
icons.currentDir'\u{1F4C2}' (📂)Set an icon for current directory
icons.dir'\u{1F4C1}' (📁)Set an icon for other directories
icons.file'\u{1F4C4}' (📄)Set an icon for files
shouldDisplayItemundefined (same as passing () => true)A callback function with the following signature: (isDirectory: boolean, isFile: boolean, fullPath: string) => boolean. Should return true to prompt the item on the list

TIP: To disable prompt icons, make icons === false.

License

MIT