Tools Overview - prompt
& Inquirer.js,
Commander.js, Vorpal, gluegun
| Tool | Type | Goal | Features |
|---|---|---|---|
| prompt | utility | Command-line prompt | prompt |
| inquirer.js | utility | A collection of common interactive command line user interfaces. | error feedback, asking questions, parsing input, validating answers, hierarchical prompts |
| commander.js | toolkit | The complete solution for node.js command-line interfaces, inspired by Ruby's commander. | $1 |
| gluegun | toolkit | Gluegun is a delightful toolkit for building Node-based command-line interfaces (CLIs) in TypeScript or modern JavaScript | parameters, patching, filesystem, system, http, prompt, print, semver, strings |
| vorpal | framework | Vorpal is Node's framework for building interactive CLI applications. Based on commander.js and inquirer.js | required/optional args, prompts, generator, piped commands, persistent command history, auto-gen docs/help, autocomplete |
| oclif | framework | Framework for building CLIs | Flag/Argument parsing, prompts, fast, generator, testing helpers, auto-gen docs/help, plugins, hooks, TS, auto-updating installers, autocomplete |
Educational Open Source Project to practice with JavaScript, TypeScript, Node, oclif, Git, Web Components, and Project Management
Goal
Write series of applications to create, edit, delete, and manage notes. Notes are structured in a user defined folders structure as a Git repo. Each note is saved with the git commit command. The tool is and easily extendable with plugins.
Organizational Structure
with mermaid syntax
graph TD
CLI --> CLI:G(GitHub)
CLI --> CLI:A(Architecture)
CLI:A --> CLI:Lang(TypeScript)
CLI:A --> CLI:Git(Git)
CLI:A --> CLI:MD(Markdown)
CLI:A --> CLI:Overview(Frameworks Overview)
CLI:Overview -->
CLI:Overview:Article1>Basic CLI in Node.js]
CLI:Overview:Article1 -->
CLI:Overview:Article2>CLI Tools Overview]
CLI:Overview:Article2 -->
CLI:Overview:Article3>CLI in TypeScrpipt]
Features
Glossary
note - single commit with text data
notebook - a collection of notes inside a folder
Overview
- Add, edit, delete note and notebook
- List note with user interaction (add an item)
- Print a note to PDF
Examples
note notebook ideas "Store all ideas" # add folder *ideas* with a file *README.md* title *Store all ideas* # ideas # ├── README.md note ideas list "A list of ideas" idea # add a list *idea* inside *ideas/README.md* note ideas/idea "Write a CLI for notes" # add an *idea* list item inside *ideas/README.md*
Where a content of a ideas/README.md file will be
# About Store all ideas # Table Of Contents - [A list of ideas](#idea) # <a href="#idea">Idea</a> - Write a CLI for notes
Originally, a user can commit with an empty git repository modification
git commit --allow-empty -m "My Note"Links
Articles
Books
-
Linux Command Line and Shell Scripting Bible, 3rd Edition by Richard Blum, Christine Bresnahan
-
The CLI Book: Writing Successful Command Line Interfaces with Node.js by Robert Kowalski
