Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Jun 23, 2018
Jun 23, 2018
Jun 22, 2018
Mar 9, 2019

gofx Build Status

fx-like command-line JSON processing tool. This is implementation of some functionality of fx tool.

Features

  • Don't need to learn new syntax
  • Written in Go
  • Formatting and highlighting

Differences

  • Only ES5 (no arrow functions, no spread)
  • Small binary size
  • Can't use npm packages

Install

$ go get github.com/antonmedv/gofx

Or download precompiled binary from releases page.

Usage

Pipe into gofx any JSON and JS code for reducing it.

$ gofx [code ...]

Pretty print JSON without passing any arguments:

$ echo '{"key":"value"}' | gofx
{
    "key": "value"
}

This Binding

You can get access to JSON by this keyword:

$ echo '{"foo": [{"bar": "value"}]}' | gofx 'this.foo[0].bar'
value

Dot

It is possible to omit this keyword:

$ echo '{"foo": [{"bar": "value"}]}' | gofx .foo[0].bar
value

Chain

You can pass any number of code blocks for reducing JSON:

$ echo '{"foo": [{"bar": "value"}]}' | gofx 'this.foo' 'this[0]' 'this.bar'
value

Formatting

If you need something different then JSON (for example arguments for xargs) do not return anything from reducer. undefined value printed into stderr by default.

$ echo '[]' | gofx 'void 0'
undefined
$ echo '[1,2,3]' | gofx 'this.forEach(function (x) { console.log(x) })' 2>/dev/null | xargs echo
1 2 3

Modifying

To modify object use command separated by comma , and return this as the end.

$ echo '{"a": 2}' | gofx 'this["b"] = Math.pow(this.a, 10), this'
{
  "a": 2,
  "b": 1024
}

Object keys

Get all object keys:

$ echo '{"foo": 1, "bar": 2}' | gofx 'Object.keys(this)'
[
  "foo",
  "bar"
]

By the way, gofx has shortcut for Object.keys(this). Previous example can be rewritten as:

$ echo '{"foo": 1, "bar": 2}' | gofx ?

Related

  • fx ā€“ original fx package
  • ymlx - fx-like YAML cli processor

License

MIT