commit:     568bb3ee5558b4d025df691bfeb12065afdef01e
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 27 14:25:08 2015 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Tue Dec  1 22:07:17 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=568bb3ee

systemd.eclass: Introduce a common getter for systemd directories

Add a _systemd_get_dir function that serves as a common getter for
all directories returned by the eclass. Add proper error handling for
the variable getter.

 eclass/systemd.eclass | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/eclass/systemd.eclass b/eclass/systemd.eclass
index 278d319..245e803 100644
--- a/eclass/systemd.eclass
+++ b/eclass/systemd.eclass
@@ -34,16 +34,32 @@ esac
 
 DEPEND="virtual/pkgconfig"
 
-# @FUNCTION: _systemd_get_unitdir
+# @FUNCTION: _systemd_get_dir
+# @USAGE: <variable-name> <fallback-directory>
 # @INTERNAL
 # @DESCRIPTION:
-# Get unprefixed unitdir.
-_systemd_get_unitdir() {
+# Try to obtain the <variable-name> variable from systemd.pc.
+# If pkg-config or systemd is not installed, return <fallback-directory>
+# instead.
+_systemd_get_dir() {
+       [[ ${#} -eq 2 ]] || die "Usage: ${FUNCNAME} <variable-name> 
<fallback-directory>"
+       local variable=${1} fallback=${2} d
+
        if $(tc-getPKG_CONFIG) --exists systemd; then
-               echo "$($(tc-getPKG_CONFIG) --variable=systemdsystemunitdir 
systemd)"
+               d=$($(tc-getPKG_CONFIG) --variable="${variable}" systemd) || die
        else
-               echo /usr/lib/systemd/system
+               d=${fallback}
        fi
+
+       echo "${d}"
+}
+
+# @FUNCTION: _systemd_get_unitdir
+# @INTERNAL
+# @DESCRIPTION:
+# Get unprefixed unitdir.
+_systemd_get_unitdir() {
+       _systemd_get_dir systemdsystemunitdir /usr/lib/systemd/system
 }
 
 # @FUNCTION: systemd_get_unitdir
@@ -62,11 +78,7 @@ systemd_get_unitdir() {
 # @DESCRIPTION:
 # Get unprefixed userunitdir.
 _systemd_get_userunitdir() {
-       if $(tc-getPKG_CONFIG) --exists systemd; then
-               echo "$($(tc-getPKG_CONFIG) --variable=systemduserunitdir 
systemd)"
-       else
-               echo /usr/lib/systemd/user
-       fi
+       _systemd_get_dir systemduserunitdir /usr/lib/systemd/user
 }
 
 # @FUNCTION: systemd_get_userunitdir
@@ -86,11 +98,7 @@ systemd_get_userunitdir() {
 # @DESCRIPTION:
 # Get unprefixed utildir.
 _systemd_get_utildir() {
-       if $(tc-getPKG_CONFIG) --exists systemd; then
-               echo "$($(tc-getPKG_CONFIG) --variable=systemdutildir systemd)"
-       else
-               echo /usr/lib/systemd
-       fi
+       _systemd_get_dir systemdutildir /usr/lib/systemd
 }
 
 # @FUNCTION: systemd_get_utildir

Reply via email to