# Copyright 1999-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7
inherit go-module systemd
EGIT_COMMIT=21bc8a0d5a1f6abe344d0aa148238656a25b8ea3

DESCRIPTION="Prometheus Exporter for Redis Metrics. Supports Redis 2.x, 3.x and 4.x"
HOMEPAGE="https://github.com/oliver006/redis_exporter"
EGO_SUM=(
"cloud.google.com/go v0.34.0/go.mod"
"github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod"
"github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod"
"github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod"
"github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod"
"github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod"
"github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod"
"github.com/beorn7/perks v1.0.0/go.mod"
"github.com/beorn7/perks v1.0.1"
"github.com/beorn7/perks v1.0.1/go.mod"
"github.com/cespare/xxhash/v2 v2.1.1"
"github.com/cespare/xxhash/v2 v2.1.1/go.mod"
"github.com/davecgh/go-spew v1.1.0/go.mod"
"github.com/davecgh/go-spew v1.1.1"
"github.com/davecgh/go-spew v1.1.1/go.mod"
"github.com/go-kit/kit v0.8.0/go.mod"
"github.com/go-kit/kit v0.9.0/go.mod"
"github.com/go-kit/log v0.1.0/go.mod"
"github.com/go-logfmt/logfmt v0.3.0/go.mod"
"github.com/go-logfmt/logfmt v0.4.0/go.mod"
"github.com/go-logfmt/logfmt v0.5.0/go.mod"
"github.com/go-stack/stack v1.8.0/go.mod"
"github.com/gogo/protobuf v1.1.1/go.mod"
"github.com/golang/protobuf v1.2.0/go.mod"
"github.com/golang/protobuf v1.3.1/go.mod"
"github.com/golang/protobuf v1.3.2/go.mod"
"github.com/golang/protobuf v1.4.0-rc.1/go.mod"
"github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod"
"github.com/golang/protobuf v1.4.0-rc.2/go.mod"
"github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod"
"github.com/golang/protobuf v1.4.0/go.mod"
"github.com/golang/protobuf v1.4.2/go.mod"
"github.com/golang/protobuf v1.4.3"
"github.com/golang/protobuf v1.4.3/go.mod"
"github.com/gomodule/redigo v1.8.5"
"github.com/gomodule/redigo v1.8.5/go.mod"
"github.com/google/go-cmp v0.3.0/go.mod"
"github.com/google/go-cmp v0.3.1/go.mod"
"github.com/google/go-cmp v0.4.0/go.mod"
"github.com/google/go-cmp v0.5.4/go.mod"
"github.com/google/go-cmp v0.5.5"
"github.com/google/go-cmp v0.5.5/go.mod"
"github.com/google/gofuzz v1.0.0/go.mod"
"github.com/jpillora/backoff v1.0.0/go.mod"
"github.com/json-iterator/go v1.1.6/go.mod"
"github.com/json-iterator/go v1.1.10/go.mod"
"github.com/json-iterator/go v1.1.11/go.mod"
"github.com/julienschmidt/httprouter v1.2.0/go.mod"
"github.com/julienschmidt/httprouter v1.3.0/go.mod"
"github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod"
"github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod"
"github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod"
"github.com/kr/pretty v0.1.0"
"github.com/kr/pretty v0.1.0/go.mod"
"github.com/kr/pty v1.1.1/go.mod"
"github.com/kr/text v0.1.0"
"github.com/kr/text v0.1.0/go.mod"
"github.com/matttproud/golang_protobuf_extensions v1.0.1"
"github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod"
"github.com/mna/redisc v1.1.7"
"github.com/mna/redisc v1.1.7/go.mod"
"github.com/mna/redisc v1.3.2"
"github.com/mna/redisc v1.3.2/go.mod"
"github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod"
"github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod"
"github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod"
"github.com/modern-go/reflect2 v1.0.1/go.mod"
"github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod"
"github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod"
"github.com/pkg/errors v0.8.0/go.mod"
"github.com/pkg/errors v0.8.1/go.mod"
"github.com/pkg/errors v0.9.1/go.mod"
"github.com/pmezard/go-difflib v1.0.0"
"github.com/pmezard/go-difflib v1.0.0/go.mod"
"github.com/prometheus/client_golang v0.9.1/go.mod"
"github.com/prometheus/client_golang v1.0.0/go.mod"
"github.com/prometheus/client_golang v1.7.1/go.mod"
"github.com/prometheus/client_golang v1.11.0"
"github.com/prometheus/client_golang v1.11.0/go.mod"
"github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod"
"github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod"
"github.com/prometheus/client_model v0.2.0"
"github.com/prometheus/client_model v0.2.0/go.mod"
"github.com/prometheus/common v0.4.1/go.mod"
"github.com/prometheus/common v0.10.0/go.mod"
"github.com/prometheus/common v0.26.0"
"github.com/prometheus/common v0.26.0/go.mod"
"github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod"
"github.com/prometheus/procfs v0.0.2/go.mod"
"github.com/prometheus/procfs v0.1.3/go.mod"
"github.com/prometheus/procfs v0.6.0"
"github.com/prometheus/procfs v0.6.0/go.mod"
"github.com/sirupsen/logrus v1.2.0/go.mod"
"github.com/sirupsen/logrus v1.4.2/go.mod"
"github.com/sirupsen/logrus v1.6.0/go.mod"
"github.com/sirupsen/logrus v1.8.1"
"github.com/sirupsen/logrus v1.8.1/go.mod"
"github.com/stretchr/objx v0.1.0/go.mod"
"github.com/stretchr/objx v0.1.1/go.mod"
"github.com/stretchr/testify v1.2.2/go.mod"
"github.com/stretchr/testify v1.3.0/go.mod"
"github.com/stretchr/testify v1.4.0/go.mod"
"github.com/stretchr/testify v1.5.1"
"github.com/stretchr/testify v1.5.1/go.mod"
"github.com/stretchr/testify v1.7.0/go.mod"
"golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod"
"golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod"
"golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod"
"golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod"
"golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod"
"golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod"
"golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod"
"golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod"
"golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod"
"golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod"
"golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod"
"golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod"
"golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod"
"golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod"
"golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod"
"golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod"
"golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod"
"golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod"
"golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod"
"golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod"
"golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod"
"golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod"
"golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod"
"golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod"
"golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod"
"golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40"
"golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod"
"golang.org/x/text v0.3.0/go.mod"
"golang.org/x/text v0.3.2/go.mod"
"golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod"
"golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543"
"golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod"
"google.golang.org/appengine v1.4.0/go.mod"
"google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod"
"google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod"
"google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod"
"google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod"
"google.golang.org/protobuf v1.21.0/go.mod"
"google.golang.org/protobuf v1.23.0/go.mod"
"google.golang.org/protobuf v1.26.0-rc.1"
"google.golang.org/protobuf v1.26.0-rc.1/go.mod"
"gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod"
"gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod"
"gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15"
"gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod"
"gopkg.in/yaml.v2 v2.2.1/go.mod"
"gopkg.in/yaml.v2 v2.2.2/go.mod"
"gopkg.in/yaml.v2 v2.2.4/go.mod"
"gopkg.in/yaml.v2 v2.2.5/go.mod"
"gopkg.in/yaml.v2 v2.3.0"
"gopkg.in/yaml.v2 v2.3.0/go.mod"
"gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod"
)
go-module_set_globals
SRC_URI="https://github.com/oliver006/redis_exporter/archive/v${PV}.tar.gz -> ${P}.tar.gz
	${EGO_SUM_SRC_URI}"

LICENSE="MIT Apache-2.0 BSD"
SLOT="0"
KEYWORDS="~amd64"
IUSE=""
RDEPEND="
	acct-user/redis_exporter
	acct-group/redis_exporter"
DEPEND="${RDEPEND}"
RESTRICT+=" test"

src_prepare() {
	default
	sed -e "s|\(^[[:space:]]*VERSION[[:space:]]*=[[:space:]]*\).*|\1\"${PV}\"|" \
		-e "s|\(^[[:space:]]*BUILD_DATE[[:space:]]*=[[:space:]]*\).*|\1\"$(LC_ALL=C date -u)\"|" \
		-e "s|\(^[[:space:]]*COMMIT_SHA1[[:space:]]*=[[:space:]]*\).*|\1\"${EGIT_COMMIT}\"|" \
		-i main.go || die
}

src_compile() {
	export GOBIN="${S}/bin"
	go install \
		-ldflags="-X main.BuildVersion=${PV} -X main.BuildCommitSha=${EGIT_COMMIT} -X main.BuildDate=$(date +%F-%T)" \
		./... || die
}

src_test() {
	go test -work ./... || die
}

src_install() {
	dobin "${GOBIN}/redis_exporter"
	dodoc README.md
	local dir
	for dir in /var/{lib,log}/${PN}; do
		keepdir "${dir}"
		fowners ${PN}:${PN} "${dir}"
	done
	newinitd "${FILESDIR}"/${PN}.initd ${PN}
	newconfd "${FILESDIR}"/${PN}.confd ${PN}
	insinto /etc/logrotate.d
	newins "${FILESDIR}/${PN}.logrotated" "${PN}"
	systemd_dounit "${FILESDIR}/${PN}.service"
}