Skip to content

Opens a πŸ“ text editor, waits until closed & captures πŸ”¬ file content.

License

Notifications You must be signed in to change notification settings

vsnthdev/read-file-input

Repository files navigation

read-file-input

Opens a πŸ“ text editor, waits until closed & captures πŸ”¬ file content.


Allows you to capture user input by opening a text editor instead of stdin. Manually passing large amounts of data through stdin is cumbersome and not widely supported as it depends on the terminal emulator.

This module creates a temporary file and opens it with the configured text editor. When the user saves the file and quits the editor, we read back the file while optionally deleting it.

Since most text editors support UTF-8, any emojis and special characters will be handled safely instead of replying on the terminal.

Tweet @vsnthdev, I would love to know your opinion & experience on this project 😍

✨ Features

  1. Cross platform
  2. Supports graphical & terminal editors
  3. Prefills the file with content

πŸ’Ώ Installation

npm module badge

npm i read-file-input

πŸš€ Quick Start

After read-file-input as a dependency using the above command, you can use it in the following way:

// import readFileInput from 'read-file-input'
import readFi from '../dist/read-file-input.js'

// read from the user with zero configuration
const read = await readFi()

// print the input we have read
console.log('Read input as:')
console.log(read)

πŸ§ͺ Configuration

export interface ConfigImpl {
    // the name of the file created, defaults to "[id].txt"
    // where [id] is replaced with a random 5 character string
    // to prevent conflicts
    name?: string

    // a custom editor command which defaults to notepad.exe on Windows
    // and uses the $VISUAL & $EDITOR environment variables on Linux & macOS
    editor?: string

    // whether to delete the file after the input has been read
    // defaults to true and recommended to keep it that way
    cleanup?: boolean

    // do not wait for the editor to be closed, just return
    // as soon as the editor has opened, useful to just show
    // some content rather than taking inputs
    noWait?: boolean

    // the content that the temporary file should be pre-filled with
    // undefined by default
    content?: {
        // the string of data which will be pre-filled onto the
        // temporary file, will override the file setting
        data?: string

        // path to a file from which the content will be read
        // for generating the temporary file
        // useful for passing large amount of data for the temporary file
        file?: string
    }
}

πŸ’» Building & Dev Setup

You need to be at least on Node.js v17 or above and follow the below instructions to build the project πŸ‘‡

  • STEP 1️⃣ Clone this project
  • STEP 2️⃣ Run npm install to get all dependencies
  • STEP 3️⃣ To build the TypeScript project run npm run build

Now you should have a dist folder in the project directory.

⚑ Running Examples

Once you have successfully built the project, to run a basic example πŸ‘‡

node examples/basic.js

Checkout other examples to know more on different use cases and configuration of options of read-file-input.

πŸ› οΈ Writing Code

This project follows Vasanth's Commit Style for commit messages.

πŸ“° License

The read-file-input project is released under the MIT license.
Developed & maintained By Vasanth Srivatsa. Copyright 2023 Β© Vasanth Developer.


vsnth.dev Β Β·Β  YouTube @vasanthdeveloper Β Β·Β  Twitter @vsnthdev Β Β·Β  Discord Vasanth Developer