flyctl
v1.2.6
Published
A convenient Node.js wrapper to interact with fly.io
Downloads
2,101
Readme
flyctl
A convenient Node.js wrapper to interact with fly.io CLI.
Install
$ npm install flyctl --saveUsage
First, call the library passig the app name of your project:
const fly = require('flyctl')('teslahunt-api')Once initialized, you can interact with any fly CLI command via Node.js.
You can run a one-off command:
const { stdout } = await fly('scale show')
console.log(stdout)or pipe directly into your Node.js process using fly.stream():
fly.stream('logs')Additionally, you can use fly.json() to return a JSON payload of the command.
This is convenient for combining multiple command and create your own commands:
const CPU_CORES = 1
const CPU_KIND = 'shared'
const MEMORY_IN_BYTES = 768
const RESTART_POLICY = 'always'
const machineList = await fly.json('machine list')
const machines = machineList.map(({ id, config }) => ({ id, zone: config.env.FLY_PROCESS_GROUP }))
for (const { id } of machines) {
await fly(`machine update ${id} --vm-cpus ${CPU_CORES} --vm-cpu-kind ${CPU_KIND} --vm-memory=${MEMORY_IN_BYTES} --restart ${RESTART_POLICY} --yes`)
}See examples.
API
constructor(appName, [options])
appName
Required
Type: string
The name of your fly.io application.
options
verbose
Type: boolean
Default: true
Print the raw fly command every time it's executed.
binaryPath
Type: string
Default: process.env.FLY_PATH
It sets where is the flyctl binary path.
fly(cmd, spawnOpts)
It runs the command provided and buffer the output.
It accepts a second argument to be passed to child_process.spawn#options.
fly.stream(cmd)
It runs the command provided, streaming the output to the parent process.
fly.json(cmd)
It runs the command provided, parsing the stdout into a JSON.
License
flyctl © Kiko Beats, released under the MIT License. Authored and maintained by Kiko Beats with help from contributors.
kikobeats.com · GitHub Kiko Beats · Twitter @kikobeats
