itchyny / gojo

Yet another Go implementation of jo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

gojo

CI Status Go Report Card MIT License release pkg.go.dev

Yet another Go implementation of jo

This is an implementation of jo command written in Go language.

Usage

 $ gojo foo=bar qux=quux
{"foo":"bar","qux":"quux"}
 $ gojo -p foo=bar qux=quux
{
  "foo": "bar",
  "qux": "quux"
}
 $ gojo -a foo bar baz
["foo","bar","baz"]
 $ seq 10 | gojo -a
[1,2,3,4,5,6,7,8,9,10]
 $ gojo -p foo=$(gojo bar=$(gojo baz=100))
{
  "foo": {
    "bar": {
      "baz": 100
    }
  }
}
 $ gojo -p foo[bar][baz][qux][quux]=128
{
  "foo": {
    "bar": {
      "baz": {
        "qux": {
          "quux": 128
        }
      }
    }
  }
}
 $ gojo -p res[foo][][id]=10 res[foo][][id]=20 res[cnt]=2
{
  "res": {
    "foo": [
      {
        "id": 10
      },
      {
        "id": 20
      }
    ],
    "cnt": 2
  }
}
 $ gojo -y res[foo][][id]=10 res[foo][][id]=20 res[cnt]=2
res:
  foo:
    - id: 10
    - id: 20
  cnt: 2
 $ gojo foo=@testdata/file.txt    # read contents from file
{"foo":"a\nb\nc\nd\ne"}
 $ gojo foo=:testdata/file1.json  # json value of file
{"foo":{"x":1,"z":2,"y":3}}
 $ gojo foo=%testdata/file.txt    # base64 of file contents
{"foo":"YQpiCmMKZAplCg=="}

Installation

Homebrew

brew install itchyny/tap/gojo

Build from source

go install github.com/itchyny/gojo/cmd/gojo@latest

Difference to jo

  • Implemented in Go and Go-gettable, also useful for library usage.
  • Implements nested paths (example: foo[x][y][z]=1, foo[][][]=1).
  • Implements YAML output option -y (example: gojo -y foo=1 outputs foo: 1).
  • Drops support of k@v syntax (use k=true or k=false) and type guessing flags.
  • Does not print duplicate keys (although duplicate key in JSON is valid, it's not that useful and overwritten by the latter).

Bug Tracker

Report bug at Issues・itchyny/gojo - GitHub.

Author

itchyny (https://github.com/itchyny)

License

This software is released under the MIT License, see LICENSE.

About

Yet another Go implementation of jo

License:MIT License


Languages

Language:Go 91.8%Language:Makefile 8.2%