Skip to content

Kikobeats/flyctl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

flyctl

Last version NPM Status

A convenient Node.js wrapper to interact with fly.io CLI.

Install

$ npm install flyctl --save

Usage

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

About

A convenient Node.js wrapper to interact with fly.io CLI.

Resources

License

Stars

1 star

Watchers

1 watching

Forks

Packages

 
 
 

Contributors