summaryrefslogtreecommitdiff
blob: c6cde0b43c8835df57eca1b4d59a107b0e690410 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# Copyright 2020-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit go-module systemd

# git rev-parse --short HEAD
MY_GIT_COMMIT="b683756d"

DESCRIPTION="Minimalist and opinionated feed reader"
HOMEPAGE="https://miniflux.app https://github.com/miniflux/v2"
SRC_URI="https://github.com/${PN}/v2/archive/${PV}.tar.gz -> ${P}.tar.gz"
SRC_URI+=" https://dev.gentoo.org/~concord/distfiles/${P}-deps.tar.xz"

S="${WORKDIR}/v2-${PV}"

LICENSE="Apache-2.0 BSD BSD-2 MIT"
SLOT="0"
KEYWORDS="~amd64 ~ppc64 ~riscv"

RESTRICT="test" # requires network access

DEPEND="acct-user/miniflux"
RDEPEND="${DEPEND}
	>=dev-db/postgresql-9.5
"

src_compile() {
	ego build -ldflags="
		-s -w
		-X 'miniflux.app/v2/internal/version.Version=${PV}'
		-X 'miniflux.app/v2/internal/version.Commit=${MY_GIT_COMMIT}'
		-X 'miniflux.app/v2/internal/version.BuildDate=$(date +%FT%T%z)'
		" -o miniflux main.go
}

src_install() {
	dobin miniflux

	insinto /etc
	doins "${FILESDIR}/${PN}.conf"

	newconfd "${FILESDIR}/${PN}.confd" ${PN}

	newinitd "${FILESDIR}/${PN}.initd-r1" ${PN}
	systemd_dounit "${FILESDIR}/${PN}.service"

	fowners miniflux:root /etc/${PN}.conf
	fperms o-rwx /etc/${PN}.conf

	local DOCS=(
		ChangeLog
		README.md
		"${FILESDIR}"/README.gentoo
	)

	# Makefile has no install target, so call einstalldocs directly
	einstalldocs

	doman "${PN}".1
}

pkg_postinst() {
	if [[ -z "${REPLACING_VERSIONS}" ]]; then
		# This is a new installation

		echo
		elog "Before using miniflux, you must first create and initialize the database"
		elog "and enable the hstore extension for it."
		elog ""
		elog "Afterwards, create your first admin user by running:"
		elog "  miniflux -create-admin"
	else
		# This is an existing installation

		echo
		elog "If you are upgrading from a previous version, schema migrations must be performed."
		elog "To perform the migrations, stop the daemon, backup your database, and run:"
		elog "  emerge --config =${PF}"
	fi

	echo
	elog "Please read"
	elog ""
	elog "  ${EPREFIX}/usr/share/doc/${PF}/README.gentoo*"
	elog ""
	elog "for more information."
}

pkg_config() {
	# To be safe, avoid doing migrations if miniflux is running
	if pgrep miniflux; then
		die "miniflux appears to be running, refusing to continue."
	fi

	# Extract the database URL variable instead of just sourcing the config file
	# because miniflux itself may interpret quotes as part of the URL
	local DATABASE_URL="$(sed -n 's/^DATABASE_URL=\(.*\)/\1/p' "${EROOT}/etc/${PN}.conf")"
	[[ -n "${DATABASE_URL}" ]] || die "Failed getting DATABASE_URL from config file"

	DATABASE_URL="${DATABASE_URL}" "${EROOT}"/usr/bin/miniflux -migrate \
		|| die "miniflux -migrate failed. Please check the above output for errors."

	echo
	elog "Database migrations complete."
}