gluegun
Version:
A delightful toolkit for building Node-powered CLIs.
71 lines (58 loc) • 3.11 kB
Markdown
# Inside the Gluegun Toolbox
Let's explore the inside of the famous Gluegun "Toolbox" (or "Context" as it's sometimes called).
```js
module.exports = {
name: 'dostuff',
alias: 'd',
run: async function (toolbox) {
// great! now what?
},
}
```
Here's what's available inside the `toolbox` object you see all over Gluegun.
| name | provides the... | 3rd party |
| ------------------ | -------------------------------------------------- | ------------------------------ |
| **meta** | information about the currently running CLI | |
| **config** | configuration options from the app or plugin | |
| **filesystem** | ability to copy, move & delete files & directories | fs-jetpack |
| **http** | ability to talk to the web | apisauce |
| **parameters** | command line arguments and options | yargs-parser |
| **patching** | manipulating file contents easily | fs-jetpack |
| **print** | tools to print output to the command line | colors, ora |
| **prompt** | tools to acquire extra command line user input | enquirer |
| **semver** | utilities for working with semantic versioning | semver |
| **strings** | some string helpers like case conversion, etc. | lodash |
| **system** | ability to execute | node-which, execa, cross-spawn |
| **template** | code generation from templates | ejs |
| **packageManager** | ability to add or remove packages with Yarn/NPM | |
The `toolbox` has "drawers" full of useful tools for building CLIs. For example, the `toolbox.meta.version` function can be invoked like this:
```js
module.exports = {
name: 'dostuff',
alias: 'd',
run: async function (toolbox) {
// use them like this...
toolbox.print.info(toolbox.meta.version())
// or destructure!
const {
print: { info },
meta: { version },
} = toolbox
info(version())
},
}
```
To learn more about each tool, explore the rest of the `toolbox-*.md` files in this folder.
## Accessing Tools Directly
You can access almost all of Gluegun's toolbox tools without running a command. This is useful when you'd like to use these tools outside of a CLI context or when doing some really specialized CLI.
```js
const { print, filesystem, strings } = require('gluegun')
// or
const { print } = require('gluegun/print')
const { filesystem } = require('gluegun/filesystem')
const { strings } = require('gluegun/strings')
const { packageManager } = require('gluegun/package-manager')
print.info(`Hey, I'm Gluegun!`)
filesystem.dir('/tmp/jamon')
print.error(strings.isBlank(''))
```