mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
71 lines
3.0 KiB
Markdown
71 lines
3.0 KiB
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 & ramda |
|
|
| **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(''))
|
|
```
|