node package manager
Love JavaScript? Your insights can make it even better. Take the 2017 JavaScript Ecosystem Survey ¬Ľ

kmder


kmder

kmder Build Status

Kmder is a CLI runner that aims to make writing, executing and distributing CLI commands a breeze. ūüĆī

Features

  • ‚úŹÔłŹ Simple, often declarative command definitions
  • ūüď¶ Out of the box support for HTTP, SQL, Elasticsearch and more
  • ūüėć Build shareable commands - easily distribute directly or in a repo
  • ūüď° Built-in reporting - log your CLI output as a table, pretty-json, etc

Install

Install with yarn:

yarn global add kmder

or with npm:

npm install kmder --global

CLI Usage

> kmd help
  <kmd> <..args>     Execute kmd
  ls                 List available kmd(s)
  help               Display help
  source             Manage kmd sources
  version            List kmd version
  reset              Reset sources and settings

Examples

Browse kmder-kmds for additional command examples.

ūüĆé HTTP / API

The following defines the declarative fx command which retrieves current exchange rates for the given currencies:

// fx.json
{
    "type": "http",
    "url": "https://api.fixer.io/latest?base={0}&symbols={1}",
    "jp": "$.rates.{1}"
}
> kmd fx USD GPB
0.73792


ūüź¨ MySQL

// user.json
{
  "type": "mysql",
  "connection": {
    "host": "db.example.com",
    "user": "kmdertest",
    "password": "kmder-test",
    "database": "kmdertest"
  },
  "query": "SELECT user_name, first, last FROM `users` WHERE `user_name` LIKE '%{0}%'"
}
> kmd user bsmith
----------------------------
user_name | first   | last |
----------------------------
bsmith    | Brandon | Smith


ūüďź Custom

The following defines the max command which returns the maximum value passed to the command. This example shows that a command can be custom, arbitrary JavaScript:

// max.js
module.exports.run = (args) => {
  return Math.max(...args)
}
> kmd max -5 5 9 99 -99
99

Documentation

Browse the wiki for full documentation:

  • Managing command sources (folders, repositories, etc)
  • Available strategies (http, mysql, mssql, es, etc) and their options
  • Command definitions (method hooks, types, dependencies)
  • Persistent data storage for commands
  • And more!

License

MIT © Brandon Smith