From 1690c9d8ff0919fc3c0afec5fe09b9b3d20bc380 Mon Sep 17 00:00:00 2001 From: Dominique Roux Date: Tue, 12 May 2015 19:12:49 +0200 Subject: [PATCH] Bugfixes: -Added GPLv3 header -Set correct '=' in man.text -Now uses default values cdist-like -Replace arrays with plain variables -Rewrote the error message --- cdist/conf/type/__pacman_conf/man.text | 2 +- cdist/conf/type/__pacman_conf/manifest | 65 ++++++++++++------- .../type/__pacman_conf/parameter/default/file | 2 + .../__pacman_conf/parameter/default/state | 1 + cdist/conf/type/__pacman_integrate/man.text | 2 +- cdist/conf/type/__pacman_integrate/manifest | 53 +++++++++------ .../parameter/default/state | 1 + 7 files changed, 82 insertions(+), 44 deletions(-) create mode 100644 cdist/conf/type/__pacman_conf/parameter/default/file create mode 100644 cdist/conf/type/__pacman_conf/parameter/default/state create mode 100644 cdist/conf/type/__pacman_integrate/parameter/default/state diff --git a/cdist/conf/type/__pacman_conf/man.text b/cdist/conf/type/__pacman_conf/man.text index b4905111..9762837f 100644 --- a/cdist/conf/type/__pacman_conf/man.text +++ b/cdist/conf/type/__pacman_conf/man.text @@ -1,5 +1,5 @@ cdist-type__pacman_conf(7) -=================== +========================== Dominique Roux diff --git a/cdist/conf/type/__pacman_conf/manifest b/cdist/conf/type/__pacman_conf/manifest index f817b2ca..591218b8 100644 --- a/cdist/conf/type/__pacman_conf/manifest +++ b/cdist/conf/type/__pacman_conf/manifest @@ -1,36 +1,57 @@ +#!/bin/sh +# +# 2015 Dominique Roux (dominique.roux4 at gmail.com) +# +# 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 . +# + #get params section=$(cat "$__object/parameter/section") key=$(cat "$__object/parameter/key") value=$(cat "$__object/parameter/value") -file=$(cat "$__object/parameter/file" 2>/dev/null || echo "") -state=$(cat "$__object/parameter/state" 2>/dev/null || echo "present" ) +file=$(cat "$__object/parameter/file" 2>/dev/null) +state=$(cat "$__object/parameter/state" 2>/dev/null) #path variable default /etc/pacman.d sec_path="/etc/pacman.d" #allowed keys (from man pacman.conf) -allowed_option_keys=( "RootDir" "DBPath" "CacheDir" "GPGDir" "LogFile" "HoldPkg" "IgnorePkg" "IgnoreGroup" "Include" "Architecture" "XferCommand" "NoUpgrade" "NoExtract" "CleanMethod" "SigLevel" "LocalFileSigLevel" "RemoteFileSigLevel" ) -boolean_option_keys=( "UseSyslog" "Color" "UseDelta" "TotalDownload" "CheckSpace" "VerbosePkgLists" ) -allowed_repo_keys=( "Include" "Server" "SigLevel" "Usage" ) +allowed_option_keys="RootDir DBPath CacheDir GPGDir LogFile HoldPkg IgnorePkg IgnoreGroup Include Architecture XferCommand NoUpgrade NoExtract CleanMethod SigLevel LocalFileSigLevel RemoteFileSigLevel" +boolean_option_keys="UseSyslog Color UseDelta TotalDownload CheckSpace VerbosePkgLists" +allowed_repo_keys="Include Server SigLevel Usage" #set global variables -MATH=1 +MATCH=0 #function for check if array contain string contains_element() { - MATCH=1 + MATCH=0 - local passed_array - passed_array=(`echo "$2"`) + target=$1 + keys="${@:2}" - for e in "${passed_array[@]}"; do - if [ "${e}" == "${1}" ]; then - MATCH=0 + + for key in "${keys}"; do + if [ "${key}" == "${target}" ]; then + MATCH=1 return 0 fi done - MATCH=1 + MATCH=0 } if [ "${file}" != "" ]; then @@ -49,7 +70,7 @@ if [ "${file}" != "" ]; then --state absent else - echo "ERROR: State not found" >&2 + echo "ERROR: Unknown state: ${state}" >&2 fi fi @@ -61,9 +82,9 @@ if [ "${section}" == "options" ]; then eof #check if key is valid #check for boolean value - contains_element "${key}" "$(echo ${boolean_option_keys[@]})" + contains_element "${key}" "${boolean_option_keys}" - if [ "${MATCH}" -eq 0 ]; then + if [ "${MATCH}" -eq 1 ]; then if [ "${value}" == "on" ]; then require="__file/${sec_path}/${section}" __line ${key}_${value}\ --file ${sec_path}/${section} --line ${key} @@ -73,13 +94,13 @@ eof fi else - contains_element "${key}" "$(echo ${allowed_option_keys[@]})" + contains_element "${key}" "${allowed_option_keys}" - if [ "${MATCH}" -eq 0 ]; then + if [ "${MATCH}" -eq 1 ]; then require="__file/${sec_path}/${section}" __key_value ${section}_${key}\ --file ${sec_path}/${section} --key ${key} --value ${value} --delimiter ' = ' else - echo "Key is not valid. Have a look at man pacman.conf" >&2 + echo "Key: ${key} is not valid. Have a look at man pacman.conf" >&2 fi fi @@ -91,8 +112,8 @@ eof if [ "${state}" == "present" ]; then #check if key is valid - contains_element "${key}" "$(echo ${allowed_repo_keys[@]})" - if [ ${MATCH} -eq 1 ]; then + contains_element "${key}" "${allowed_repo_keys}" + if [ ${MATCH} -eq 0 ]; then exit fi @@ -105,7 +126,7 @@ eof --state absent else - echo "ERROR: State not found" >&2 + echo "ERROR: Unknown state: ${state}" >&2 fi fi diff --git a/cdist/conf/type/__pacman_conf/parameter/default/file b/cdist/conf/type/__pacman_conf/parameter/default/file new file mode 100644 index 00000000..139597f9 --- /dev/null +++ b/cdist/conf/type/__pacman_conf/parameter/default/file @@ -0,0 +1,2 @@ + + diff --git a/cdist/conf/type/__pacman_conf/parameter/default/state b/cdist/conf/type/__pacman_conf/parameter/default/state new file mode 100644 index 00000000..e7f6134f --- /dev/null +++ b/cdist/conf/type/__pacman_conf/parameter/default/state @@ -0,0 +1 @@ +present diff --git a/cdist/conf/type/__pacman_integrate/man.text b/cdist/conf/type/__pacman_integrate/man.text index d2cf88c1..f65e30ce 100644 --- a/cdist/conf/type/__pacman_integrate/man.text +++ b/cdist/conf/type/__pacman_integrate/man.text @@ -1,5 +1,5 @@ cdist-type__pacman_integrate(7) -=================== +=============================== Dominique Roux diff --git a/cdist/conf/type/__pacman_integrate/manifest b/cdist/conf/type/__pacman_integrate/manifest index 9f0c69c7..5f398c19 100644 --- a/cdist/conf/type/__pacman_integrate/manifest +++ b/cdist/conf/type/__pacman_integrate/manifest @@ -1,46 +1,59 @@ -state=$(cat $__object/parameter/state 2>/dev/null || echo "present" ) +#!/bin/sh +# +# 2015 Dominique Roux (dominique.roux4 at gmail.com +# +# 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 . +# + +state=$(cat $__object/parameter/state 2>/dev/null) + +path="/etc/" if [ "${state}" == "present" ]; then - #__rsync /etc/pacman.conf\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.conf\ + __file /etc/pacman.conf\ --owner root --group root --mode 644 --source $__type/files/pacman.conf.cdist - #__rsync /etc/pacman.d/options\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/options\ + __file /etc/pacman.d/options\ --owner root --group root --mode 644 --source $__type/files/options - #__file /etc/pacman.d/repo_empty_placeholder\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/repo_empty_placeholder\ + __file /etc/pacman.d/repo_empty_placeholder\ --owner root --group root --mode 644 - #__file /etc/pacman.d/plain_file_empty_placeholder\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/plain_file_empty_placeholder\ + __file /etc/pacman.d/plain_file_empty_placeholder\ --owner root --group root --mode 644 elif [ "${state}" == "absent" ]; then - #__rsync /etc/pacman.conf\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.conf\ + __file /etc/pacman.conf\ --owner root --group root --mode 644 --source $__type/files/pacman.conf.pacman - #__rsync /etc/pacman.d/mirrorlist\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/mirrorlist\ + __file /etc/pacman.d/mirrorlist\ --owner root --group root --mode 644 --source $__type/files/mirrorlist - #__rsync /etc/pacman.d/options\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/options\ + __file /etc/pacman.d/options\ --state absent - #__file /etc/pacman.d/repo_empty_placeholder\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/repo_empty_placeholder\ + __file /etc/pacman.d/repo_empty_placeholder\ --state absent - #__file /etc/pacman.d/plain_file_empty_placeholder\ - __file /home/rouxdo/Documents/Work/cdist-dev/pacman.d/plain_file_empty_placeholder\ + __file /etc/pacman.d/plain_file_empty_placeholder\ --state absent else - echo "ERROR: State not found" >&2 + echo "ERROR: Unknown state: ${state}" >&2 fi diff --git a/cdist/conf/type/__pacman_integrate/parameter/default/state b/cdist/conf/type/__pacman_integrate/parameter/default/state new file mode 100644 index 00000000..e7f6134f --- /dev/null +++ b/cdist/conf/type/__pacman_integrate/parameter/default/state @@ -0,0 +1 @@ +present