From 8d8491232c4e2a90861c023161b10a6dabc4283b Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 15 Mar 2011 16:41:04 +0100 Subject: [PATCH] add template for type __directory Signed-off-by: Nico Schottelius --- conf/type/__directory/explorer/exists | 34 ++++++++++++ conf/type/__directory/gencode | 63 ++++++++++++++++++++++ conf/type/__directory/man.text | 69 ++++++++++++++++++++++++ conf/type/__directory/parameter/optional | 5 ++ conf/type/__directory/parameter/required | 1 + 5 files changed, 172 insertions(+) create mode 100755 conf/type/__directory/explorer/exists create mode 100755 conf/type/__directory/gencode create mode 100644 conf/type/__directory/man.text create mode 100644 conf/type/__directory/parameter/optional create mode 100644 conf/type/__directory/parameter/required diff --git a/conf/type/__directory/explorer/exists b/conf/type/__directory/explorer/exists new file mode 100755 index 00000000..b0be82fc --- /dev/null +++ b/conf/type/__directory/explorer/exists @@ -0,0 +1,34 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# 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 . +# +# +# Check whether file exists or not +# + +if [ -f "$__object/parameter/destination" ]; then + destination="$(cat "$__object/parameter/destination")" +else + destination="/$__object_id" +fi + +if [ -e "$destination" ]; then + echo yes +else + echo no +fi diff --git a/conf/type/__directory/gencode b/conf/type/__directory/gencode new file mode 100755 index 00000000..08429b14 --- /dev/null +++ b/conf/type/__directory/gencode @@ -0,0 +1,63 @@ +#!/bin/sh +# +# 2011 Nico Schottelius (nico-cdist at schottelius.org) +# +# 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 . +# +# +# Handle directories +# + +# If destination was specified, do not use the id +if [ -f "$__object/parameter/destination" ]; then + destination="$(cat "$__object/parameter/destination")" +else + # If no destination has been supplied, the id is the destination + # Prepend /, which got lost in the object id (and relative paths + # don't make sense) + destination="/$__object_id" +fi + +# Ensure we have an absolute path +if ! $(echo "$destination" | grep -q ^/); then + echo "Error: Destination ($destination) of $__object_id is not absolute." >&2 + exit 1 +fi + +if [ -f "$__object/parameter/source" ]; then + echo "Source not supported for directory currently - FIXME" >&2 + exit 1 +else + if [ no = "$(cat "$__object/explorer/exists")" ]; then + echo mkdir \"$destination\" + fi +fi + + +# Mode settings +if [ -f "$__object/parameter/mode" ]; then + echo chmod \"$(cat "$__object/parameter/mode")\" \"$destination\" +fi + +# Group +if [ -f "$__object/parameter/group" ]; then + echo chgrp \"$(cat "$__object/parameter/group")\" \"$destination\" +fi + +# Owner +if [ -f "$__object/parameter/owner" ]; then + echo chown \"$(cat "$__object/parameter/owner")\" \"$destination\" +fi diff --git a/conf/type/__directory/man.text b/conf/type/__directory/man.text new file mode 100644 index 00000000..c60ada44 --- /dev/null +++ b/conf/type/__directory/man.text @@ -0,0 +1,69 @@ +cdist-type__file(7) +=================== +Nico Schottelius + + +NAME +---- +cdist-type__file - Create files + + +DESCRIPTION +----------- +This cdist type allows you to create files on the target. + + +REQUIRED PARAMETERS +------------------- +type:: + Specifies the type of file to be created. Either "directory" or "file" + + +OPTIONAL PARAMETERS +------------------- +destination:: + If supplied, use this as the destination on the target. Otherwise the + object_id is used. + +group:: + Group to chgrp to. + +mode:: + Unix permissions, suitable for chmod. + +owner:: + User to chown to. + +source:: + If supplied, copy this file from the host running cdist to the target. + If not supplied, an empty file or directory will be created. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Create /etc/cdist-configured as an empty file +__file /etc/cdist-configured --type file + +# Same but with a different object id +__file cdist-marker --type file --destination /etc/cdist-configured + +# Use __file from another type +__file /etc/issue --source "$__type/files/archlinux" --type file + +# Supply some more settings +__file /etc/shadow --source "$__type/files/shadow" --type file \ + --owner root --group shadow --mode 0640 +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Nico Schottelius. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__directory/parameter/optional b/conf/type/__directory/parameter/optional new file mode 100644 index 00000000..0c30f4be --- /dev/null +++ b/conf/type/__directory/parameter/optional @@ -0,0 +1,5 @@ +group +mode +owner +source +destination diff --git a/conf/type/__directory/parameter/required b/conf/type/__directory/parameter/required new file mode 100644 index 00000000..aa80e646 --- /dev/null +++ b/conf/type/__directory/parameter/required @@ -0,0 +1 @@ +type