# Maintainer: Simon Rupf <simon@rupf.net>
pkgname=convert2json
pkgver=2.2.2
pkgrel=0
pkgdesc="Utilities to convert BSON, CBOR, CSV, INI, MessagePack, Plist, RSV, TOML, XML & YAML to JSON, including jq/jaq wrappers."
url="https://github.com/simonrupf/convert2json"
# s390x: blocked by jaq
arch="all !s390x"
license="MIT"
depends="$pkgname-json $pkgname-jaq"
makedepends="
	cargo
	cargo-auditable
	clang-dev
	"
subpackages="
	$pkgname-doc
	$pkgname-json
	$pkgname-jaq
	$pkgname-bson
	$pkgname-bson-json:bson_json
	$pkgname-bson-jaq:bson_jaq
	$pkgname-cbor
	$pkgname-cbor-json:cbor_json
	$pkgname-cbor-jaq:cbor_jaq
	$pkgname-csv
	$pkgname-csv-json:csv_json
	$pkgname-csv-jaq:csv_jaq
	$pkgname-ini
	$pkgname-ini-json:ini_json
	$pkgname-ini-jaq:ini_jaq
	$pkgname-messagepack
	$pkgname-messagepack-json:messagepack_json
	$pkgname-messagepack-jaq:messagepack_jaq
	$pkgname-plist
	$pkgname-plist-json:plist_json
	$pkgname-plist-jaq:plist_jaq
	$pkgname-toml
	$pkgname-toml-json:toml_json
	$pkgname-toml-jaq:toml_jaq
	$pkgname-rsv
	$pkgname-rsv-json:rsv_json
	$pkgname-rsv-jaq:rsv_jaq
	$pkgname-xml
	$pkgname-xml-json:xml_json
	$pkgname-xml-jaq:xml_jaq
	$pkgname-yaml
	$pkgname-yaml-json:yaml_json
	$pkgname-yaml-jaq:yaml_jaq
	"
source="https://github.com/simonrupf/convert2json/archive/$pkgver/convert2json-$pkgver.tar.gz"
options="net"

prepare() {
	default_prepare
	cargo fetch --target="$CTARGET" --locked
}

build() {
	cargo auditable build --release --frozen
}

check() {
	cargo test --frozen
}

package() {
	arch="noarch"
	install -Dm644 LICENSE.md "$pkgdir"/usr/share/licenses/$pkgname/LICENSE.md
	install -Dm644 README.md "$pkgdir"/usr/share/doc/$pkgname/README.md
}

json() {
	pkgdesc="Utilities to convert BSON, CBOR, CSV, INI, MessagePack, Plist, RSV, TOML, XML & YAML to JSON."
	depends="
		$pkgname-bson-json
		$pkgname-cbor-json
		$pkgname-csv-json
		$pkgname-ini-json
		$pkgname-messagepack-json
		$pkgname-plist-json
		$pkgname-toml-json
		$pkgname-rsv-json
		$pkgname-xml-json
		$pkgname-yaml-json
		"
	_submk
}

jaq() {
	pkgdesc="Utilities to convert BSON, CBOR, CSV, INI, MessagePack, Plist, RSV, TOML, XML & YAML to JSON and query it using jq/jaq."
	depends="
		$pkgname-bson-jaq
		$pkgname-cbor-jaq
		$pkgname-csv-jaq
		$pkgname-ini-jaq
		$pkgname-messagepack-jaq
		$pkgname-plist-jaq
		$pkgname-toml-jaq
		$pkgname-rsv-jaq
		$pkgname-xml-jaq
		$pkgname-yaml-jaq
		"
	_submk
}

bson() {
	pkgdesc="Utilities to convert BSON to JSON, including jq/jaq wrappers."
	depends="$pkgname-bson-json $pkgname-bson-jaq"
	_submk
}

bson_json() {
	pkgdesc="Utility to convert BSON to JSON."
	_submv bson2json
}

bson_jaq() {
	pkgdesc="Utility to convert BSON to JSON and query it using jq/jaq."
	depends="jaq"
	_submv bsonq
}

cbor() {
	pkgdesc="Utilities to convert CBOR to JSON, including jq/jaq wrappers."
	depends="$pkgname-cbor-json $pkgname-cbor-jaq"
	_submk
}

cbor_json() {
	pkgdesc="Utility to convert CBOR to JSON."
	_submv cbor2json
}

cbor_jaq() {
	pkgdesc="Utility to convert CBOR to JSON and query it using jq/jaq."
	depends="jaq"
	_submv cborq
}

csv() {
	pkgdesc="Utilities to convert CSV to JSON, including jq/jaq wrappers."
	depends="$pkgname-csv-json $pkgname-csv-jaq"
	_submk
}

csv_json() {
	pkgdesc="Utility to convert CSV to JSON."
	_submv csv2json
}

csv_jaq() {
	pkgdesc="Utility to convert CSV to JSON and query it using jq/jaq."
	depends="jaq"
	_submv cq
}

ini() {
	pkgdesc="Utilities to convert INI to JSON, including jq/jaq wrappers."
	depends="$pkgname-ini-json $pkgname-ini-jaq"
	_submk
}

ini_json() {
	pkgdesc="Utility to convert INI to JSON."
	_submv ini2json
}

ini_jaq() {
	pkgdesc="Utility to convert INI to JSON and query it using jq/jaq."
	depends="jaq"
	_submv iq
}

messagepack() {
	pkgdesc="Utilities to convert MessagePack to JSON, including jq/jaq wrappers."
	depends="$pkgname-messagepack-json $pkgname-messagepack-jaq"
	_submk
}

messagepack_json() {
	pkgdesc="Utility to convert MessagePack to JSON."
	_submv msg2json
}

messagepack_jaq() {
	pkgdesc="Utility to convert MessagePack to JSON and query it using jq/jaq."
	depends="jaq"
	_submv msgq
}

plist() {
	pkgdesc="Utilities to convert Plist to JSON, including jq/jaq wrappers."
	depends="$pkgname-plist-json $pkgname-plist-jaq"
	_submk
}

plist_json() {
	pkgdesc="Utility to convert Plist to JSON."
	_submv plist2json
}

plist_jaq() {
	pkgdesc="Utility to convert Plist to JSON and query it using jq/jaq."
	depends="jaq"
	_submv plistq
}

toml() {
	pkgdesc="Utilities to convert TOML to JSON, including jq/jaq wrappers."
	depends="$pkgname-toml-json $pkgname-toml-jaq"
	_submk
}

toml_json() {
	pkgdesc="Utility to convert TOML to JSON."
	_submv toml2json
}

toml_jaq() {
	pkgdesc="Utility to convert TOML to JSON and query it using jq/jaq."
	depends="jaq"
	_submv tq
}

rsv() {
	pkgdesc="Utilities to convert RSV to JSON, including jq/jaq wrappers."
	depends="$pkgname-rsv-json $pkgname-rsv-jaq"
	_submk
}

rsv_json() {
	pkgdesc="Utility to convert RSV to JSON."
	_submv rsv2json
}

rsv_jaq() {
	pkgdesc="Utility to convert RSV to JSON and query it using jq/jaq."
	depends="jaq"
	_submv rq
}

xml() {
	pkgdesc="Utilities to convert XML to JSON, including jq/jaq wrappers."
	depends="$pkgname-xml-json $pkgname-xml-jaq"
	_submk
}

xml_json() {
	pkgdesc="Utility to convert XML to JSON."
	_submv xml2json
}

xml_jaq() {
	pkgdesc="Utility to convert XML to JSON and query it using jq/jaq."
	depends="jaq"
	_submv xq
}

yaml() {
	pkgdesc="Utilities to convert YAML to JSON, including jq/jaq wrappers."
	depends="$pkgname-yaml-json $pkgname-yaml-jaq"
	_submk
}

yaml_json() {
	pkgdesc="Utility to convert YAML to JSON."
	_submv yaml2json
}

yaml_jaq() {
	pkgdesc="Utility to convert YAML to JSON and query it using jq/jaq."
	depends="jaq"
	_submv yq
}

_submk() {
	arch="noarch"
	mkdir -p "$subpkgdir"
}

_submv() {
	mkdir -p "$subpkgdir"/usr/bin
	mv "$srcdir/$pkgname-$pkgver/target/release/$1" "$subpkgdir"/usr/bin
}

sha512sums="
d5b36833adfe96a5c87ad1ad4bb4fb12d53f257872839968f277e9231234c2f3d7a5821a0debd2660db10b3747346a4f6b11566e50f82b95af7fdef734babf31  convert2json-2.2.2.tar.gz
"
