UNPKG

1.87 kBJavaScriptView Raw
1#!/usr/bin/env node
2var async = require('async')
3var aws = require('aws-sdk')
4var region = process.env.AWS_REGION || 'us-east-1'
5var lambda = new aws.Lambda({region:region})
6var chalk = require('chalk')
7var lodash = require('lodash')
8var startsWith = lodash.startsWith
9var padEnd = lodash.padEnd
10var padStart = lodash.padStart
11var filtering = process.argv[2] || ''
12
13function info(txt) {
14 console.log(chalk.green(' λ ') + chalk.cyan.underline.dim(txt))
15}
16
17function list(callback) {
18 lambda.listFunctions({}, (err, fns)=> {
19 console.log(chalk.green(' λ ') + chalk.grey.dim('listing deployed lambdas'))
20 var name = f=> f.FunctionName
21 var start = name=> startsWith(name, filtering)
22 var names = fns.Functions.map(name).filter(start).sort()
23 callback(err, names)
24 })
25}
26
27function aliases(names, callback) {
28 var handlers = names.map(name=> {
29 return function getAliasesFor(callback) {
30 var params = {
31 FunctionName: name,
32 }
33 lambda.listAliases(params, (err, na)=> {
34 var readable = na.Aliases.map(a=> {
35 return {
36 name:a.Name,
37 version:a.FunctionVersion
38 }
39 })
40 callback(err, {name:name, aliases:readable})
41 })
42 }
43 })
44 /*
45 function done(err, result) {
46 if (err) {
47 callback(err)
48 }
49 else {
50 callback(null, result)
51 }
52 }*/
53 async.parallel(handlers, callback)
54}
55
56async.waterfall([list, aliases], function complete(err, result) {
57 result.forEach(row=> {
58 info(row.name)
59 row.aliases.forEach(a=> {
60 var latest = a.version === '$LATEST'
61 var ver = padStart(a.version, 25, '.')
62 var ca = chalk.green(' λ ')
63 var cb = chalk.grey(' - ' + padEnd(a.name, 10, '.'))
64 var cc = latest? chalk.dim.grey(ver) : chalk.dim.yellow(ver)
65 console.log(ca + cb + cc)
66 })
67 console.log(chalk.green(' λ '))
68 })
69})