Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jzelinskie/faq

Format Agnostic jQ -- process various formats with libjq
https://github.com/jzelinskie/faq

bencode bson command-line jq json plist toml xml yaml

Last synced: 5 days ago
JSON representation

Format Agnostic jQ -- process various formats with libjq

Awesome Lists containing this project

README

        

# faq

[![Go Report Card](https://goreportcard.com/badge/github.com/jzelinskie/faq?style=flat-square)](https://goreportcard.com/report/github.com/jzelinskie/faq)
[![Build Status](https://img.shields.io/github/workflow/status/jzelinskie/faq/build?style=flat-square&label=build&logo=github)](https://github.com/jzelinskie/faq/actions?query=workflow%3Abuild)
[![Godoc](https://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/jzelinskie/faq)
[![Releases](https://img.shields.io/github/release/jzelinskie/faq/all.svg?style=flat-square)](https://github.com/jzelinskie/faq/releases)
[![LICENSE](https://img.shields.io/github/license/jzelinskie/faq.svg?style=flat-square)](https://github.com/coreos/etcd/blob/master/LICENSE)

faq is a tool intended to be a more flexible [jq], supporting additional formats.
The additional formats are converted into JSON and processed with [libjq].

Supported formats:
- BSON
- Bencode
- JSON
- Property Lists
- TOML
- XML
- YAML

How do you pronounce faq? The same way you would insult a particularly nasty structured document: "F♥︎♥︎♥︎ You".

For example usage, read [the examples doc].

[releases]: https://github.com/jzelinskie/faq/releases
[jq]: https://github.com/stedolan/jq
[libjq]: https://github.com/stedolan/jq/wiki/C-API:-libjq
[the examples doc]: /docs/examples.md

## Installation

The `master` branch may be in an *unstable or even broken state* during development.
Please use [releases] instead of the `master` branch in order to get stable binaries.

Behavior such as command-line flags may change causing shell scripts using faq to break after upgrading.
jq programs are stable and should be considered a bug if it does not match jq behavior.

- Statically compiled binaries are available on the [releases] page: just download the binary for your platform, and make it executable.
- A [Homebrew] formula can be installed with `brew install jzelinskie/faq/faq`
- On macOS, you can also install through [MacPorts](https://www.macports.org): `sudo port install faq` ([info](https://ports.macports.org/port/faq/))
- RPMs are available via a [COPR repository].
- There's an [AUR PKGBUILD] for Arch Linux that can be installed with your favorite [AUR tooling].

[Homebrew]: https://brew.sh
[COPR repository]: https://copr.fedorainfracloud.org/coprs/ecnahc515/faq
[AUR PKGBUILD]: https://aur.archlinux.org/packages/faq/
[AUR tooling]: https://wiki.archlinux.org/index.php/AUR_helpers

## Development

In order to compile the project, the [latest stable version of Go] and knowledge of a [working Go environment] are required.
A version of [jq] greater than 1.6-rc2 that includes the libjq header files must also be installed on the system.

```sh
git clone [email protected]:jzelinskie/faq.git
cd faq
make all
```

With Docker and [buildx bake](https://github.com/docker/buildx/blob/master/docs/reference/buildx_bake.md#description):

```shell
# build docker image and output to docker with faq:local tag (default)
docker buildx bake image-local

# create builder for multi-arch build (see below)
docker buildx create --name faq-builder

# build multi-platform image
docker buildx bake image-all

# create the artifact matching your current platform in ./dist
docker buildx bake artifact

# create artifacts for many platforms in ./dist
docker buildx bake artifact-all

# run tests
docker buildx bake test

# lint
docker buildx bake lint
```

[latest stable version of Go]: https://golang.org/dl
[working Go environment]: https://golang.org/doc/code.html
[jq]: https://stedolan.github.io/jq

## License

faq is made available under the Apache 2.0 license.
See the [LICENSE](LICENSE) file for details.