Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vsnthdev/read-file-input

Opens a ๐Ÿ“ text editor, waits until closed & captures ๐Ÿ”ฌ file content.
https://github.com/vsnthdev/read-file-input

cli command-line editor input prompt prompts readline stdin terminal

Last synced: about 20 hours ago
JSON representation

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

Awesome Lists containing this project

README

        


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:

```javascript
// 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

```typescript
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](https://github.com/vsnthdev/read-file-input/tree/main/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](https://vas.cx/commits) for commit messages.

## ๐Ÿ“ฐ License
> The **read-file-input** project is released under the [MIT license](https://github.com/vsnthdev/read-file-input/blob/main/LICENSE.md).
Developed & maintained By Vasanth Srivatsa. Copyright 2023 ยฉ Vasanth Developer.


> vsnth.dev ย ยทย 
> YouTube @vasanthdeveloper ย ยทย 
> Twitter @vsnthdev ย ยทย 
> Discord Vasanth Developer