#!/bin/sh -e # # 2017 Ľubomír Kučera # # This file is part of cdist. # # cdist is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # cdist is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with cdist. If not, see . # systemctl_present=$(cat "${__object}/explorer/systemctl-present") if [ "${systemctl_present}" -ne 0 ]; then echo "systemctl does not seem to be present on this system" >&2 exit 1 fi name="${__object_id}" source=$(cat "${__object}/parameter/source") state=$(cat "${__object}/parameter/state") enablement_state=$(cat "${__object}/parameter/enablement-state") # The unit must be disabled before removing its unit file. The unit file is # therefore removed by gencode-remote of this type, not here. if [ -z "${source}" ] || [ "${state}" = "absent" ]; then exit 0 fi # stdin is not propagated automatically to sub-objects if [ "${source}" = "-" ]; then source="${__object}/stdin" fi unitfile_state="${state}" if [ "${enablement_state}" = "masked" ]; then # Masking creates a symlink from /etc/systemd/system/ to /dev/null. # This process fails with "Failed to execute operation: Invalid argument" # if file /etc/systemd/system/ already exists. We must therefore # remove it. unitfile_state="absent" fi __config_file "/etc/systemd/system/${name}" \ --mode 644 \ --onchange "systemctl daemon-reload" \ --source "${source}" \ --state "${unitfile_state}"