Skip to content

Commit

Permalink
add regions list command
Browse files Browse the repository at this point in the history
not extremely useful but a nice to have. precursor to updating region select for app env creation
  • Loading branch information
tbeseda committed Jan 22, 2024
1 parent 43e8cdf commit b79f801
Show file tree
Hide file tree
Showing 5 changed files with 120 additions and 1 deletion.
4 changes: 3 additions & 1 deletion src/commands/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ let list = require('./list')
let login = require('./login')
let logout = require('./logout')
let newProj = require('./new')
let regions = require('./regions')
let tail = require('./tail')
let team = require('./team')
let telemetry = require('./telemetry')
Expand All @@ -20,7 +21,8 @@ let update = require('./update')
let version = require('./version')
let commands = [
builds, create, deploy, destroy, dev, domains, envVar, generate, help,
list, login, logout, logs, newProj, tail, team, tokens, telemetry, update, version,
list, login, logout, logs, newProj, regions, tail, team, tokens, telemetry,
update, version,
]

let helper = require('../helper')
Expand Down
34 changes: 34 additions & 0 deletions src/commands/regions/help.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
module.exports = async function (params) {
const {
args: { _: commands },
} = params
const action = commands[1]

if (HELP[action]) return HELP[action]

return {
en: {
usage: [ 'regions <action> <parameters>', '[options]' ],
description: 'Begin regions',
contents: {
header: 'Regions actions',
items: [
{ name: 'list', description: 'List Begin regions' },
],
},
},
}
}

const HELP = {
list: {
en: {
usage: [ 'regions list', '[options]' ],
description: 'List Begin regions',
contents: {
header: 'List Begin regions',
example: 'begin regions list',
},
},
},
}
34 changes: 34 additions & 0 deletions src/commands/regions/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
const names = { en: [ 'regions' ] }
const subcommands = [ 'list' ]
const aliases = { ls: 'list' }
const defaultCommand = 'list'
const help = require('./help').bind({})

async function action (params) {
const { args } = params
const { _ } = args
let subcommand = _[1] || defaultCommand
const alias = Object.keys(aliases).includes(subcommand) && aliases[subcommand]
subcommand = alias || subcommand

if (subcommands.includes(subcommand)) {
const lib = require('../../lib')
const { getConfig } = lib
const { action } = require(`./${subcommand}`)

const config = getConfig(params)
return action({
config,
...params
})
}
else {
return help(params)
}
}

module.exports = {
names,
action,
help,
}
22 changes: 22 additions & 0 deletions src/commands/regions/list.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
async function action (params) {
let client = require('@begin/api')
let f = require('../../lib/format')()
let collumns = require('../../lib/columns')
let { config } = params
let { access_token: token, stagingAPI: _staging } = config

let regions = await client.regions({ token, _staging })

if (!regions) return Error('No regions found!')

return [
f.bold('Available regions:'),
collumns(Object.entries(regions).map(([ k, v ]) => [ v, k ]), 2)
].join('\n')
}

module.exports = {
name: 'list',
description: 'List Begin regions',
action,
}
27 changes: 27 additions & 0 deletions src/lib/columns.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/**
*
* @param {Array<Array<string>>} arrays
* @param {Number} padding
* @returns {string} mluti-line string
*/
function columns (arrays, padding = 1) {
const colLengths = []
arrays.forEach(row => {
row.forEach((item, colI) => {
colLengths[colI] = Math.max(colLengths[colI] || 0, item.length)
})
})

const lines = []
arrays.forEach(row => {
let line = row.map((item, colI) => {
return item.padEnd(colLengths[colI] + padding, ' ')
}).join('').trim()

lines.push(line)
})

return lines.join('\n')
}

module.exports = columns

0 comments on commit b79f801

Please sign in to comment.