From 4c106752f1cc6fb381178def90b9fa47da96b610 Mon Sep 17 00:00:00 2001 From: Darko Poljak Date: Fri, 22 Jul 2016 08:12:18 +0200 Subject: [PATCH] Add new types, __keyboard and __locale_system, contributed by Carlos Ortigoza. --- cdist/conf/type/__keyboard/man.rst | 37 ++++++++++++++ cdist/conf/type/__keyboard/manifest | 50 +++++++++++++++++++ cdist/conf/type/__keyboard/parameter/required | 1 + cdist/conf/type/__keyboard/singleton | 0 cdist/conf/type/__locale_system/man.rst | 45 +++++++++++++++++ cdist/conf/type/__locale_system/manifest | 43 ++++++++++++++++ .../__locale_system/parameter/default/locale | 1 + .../type/__locale_system/parameter/optional | 1 + cdist/conf/type/__locale_system/singleton | 0 9 files changed, 178 insertions(+) create mode 100644 cdist/conf/type/__keyboard/man.rst create mode 100644 cdist/conf/type/__keyboard/manifest create mode 100644 cdist/conf/type/__keyboard/parameter/required create mode 100644 cdist/conf/type/__keyboard/singleton create mode 100644 cdist/conf/type/__locale_system/man.rst create mode 100644 cdist/conf/type/__locale_system/manifest create mode 100644 cdist/conf/type/__locale_system/parameter/default/locale create mode 100644 cdist/conf/type/__locale_system/parameter/optional create mode 100644 cdist/conf/type/__locale_system/singleton diff --git a/cdist/conf/type/__keyboard/man.rst b/cdist/conf/type/__keyboard/man.rst new file mode 100644 index 00000000..0eb4cde9 --- /dev/null +++ b/cdist/conf/type/__keyboard/man.rst @@ -0,0 +1,37 @@ +cdist-type__keyboard(7) +======================= + +NAME +---- +cdit-type__keyboard - Set keyboard layout + + +DESCRIPTION +----------- +This cdist type allows you to modify keyboard layout. + + +REQUIRED PARAMETERS +------------------- +type + Any valid type, for example "us" + + +EXAMPLES +-------- + +.. code-block:: sh + + # Set keyboard type to "us" + __keyboard --type "us" + + +AUTHORS +------- +Carlos Ortigoza + + +COPYING +------- +Copyright \(C) 2016 Carlos Ortigoza. Free use of this software is +granted under the terms of the GNU General Public License v3 or later (GPLv3+). diff --git a/cdist/conf/type/__keyboard/manifest b/cdist/conf/type/__keyboard/manifest new file mode 100644 index 00000000..3bfddf0b --- /dev/null +++ b/cdist/conf/type/__keyboard/manifest @@ -0,0 +1,50 @@ +#!/bin/sh +# +# Carlos Ortigoza (carlos.ortigoza at ungleich.ch) +# +# 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 . +# +# +# Configure keyboard type by modifying /etc/sysconfig/keyboard file. +# + +os=$(cat "$__global/explorer/os") +keyboard_type="$(cat "$__object/parameter/type")" + +case "$os" in + centos) + __file /etc/sysconfig/keyboard \ + --owner root --group root --mode 644 \ + --state exists + + require="__file/etc/sysconfig/keyboard" \ + __key_value KEYTABLE \ + --file /etc/sysconfig/keyboard \ + --delimiter '=' \ + --value "\"$keyboard_type\"" + + require="__file/etc/sysconfig/keyboard" \ + __key_value LAYOUT \ + --file /etc/sysconfig/keyboard \ + --delimiter '=' \ + --value "\"$keyboard_type\"" + ;; + *) + echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 + echo "Please contribute an implementation for it if you can." >&2 + exit 1 + ;; +esac diff --git a/cdist/conf/type/__keyboard/parameter/required b/cdist/conf/type/__keyboard/parameter/required new file mode 100644 index 00000000..c3dc0520 --- /dev/null +++ b/cdist/conf/type/__keyboard/parameter/required @@ -0,0 +1 @@ +type \ No newline at end of file diff --git a/cdist/conf/type/__keyboard/singleton b/cdist/conf/type/__keyboard/singleton new file mode 100644 index 00000000..e69de29b diff --git a/cdist/conf/type/__locale_system/man.rst b/cdist/conf/type/__locale_system/man.rst new file mode 100644 index 00000000..8eaa5868 --- /dev/null +++ b/cdist/conf/type/__locale_system/man.rst @@ -0,0 +1,45 @@ +cdist-type__locale_system(7) +============================ + +NAME +---- +cdit-type__locale_system - Set system-wide locale + + +DESCRIPTION +----------- +This cdist type allows you to modify system-wide locale. + + +OPTIONAL PARAMETERS +------------------- +locale + Any valid locale, defaults to en_US.UTF-8 + + +EXAMPLES +-------- + +.. code-block:: sh + + # Set system locale to en_US.UTF-8 + __locale_system + + # Same as above, but more explicit + __locale_system --locale en_US.UTF-8 + + +SEE ALSO +-------- +:strong:`locale`\ (1), :strong:`localedef`\ (1) + + +AUTHORS +------- +Carlos Ortigoza + + +COPYING +------- +Copyright \(C) 2016 Carlos Ortigoza. Free use of this software is +granted under the terms of the GNU General Public License v3 or later (GPLv3+). diff --git a/cdist/conf/type/__locale_system/manifest b/cdist/conf/type/__locale_system/manifest new file mode 100644 index 00000000..065b33c3 --- /dev/null +++ b/cdist/conf/type/__locale_system/manifest @@ -0,0 +1,43 @@ +#!/bin/sh +# +# Carlos Ortigoza (carlos.ortigoza at ungleich.ch) +# +# 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 . +# +# +# Configure system-wide locale by modifying i18n file. +# + +os=$(cat "$__global/explorer/os") +locale="$(cat "$__object/parameter/locale")" + +case "$os" in + centos) + __file /etc/sysconfig/i18n \ + --owner root --group root --mode 644 \ + --state exists + require="__file/etc/sysconfig/i18n" \ + __key_value LANG \ + --file /etc/sysconfig/i18n \ + --delimiter '=' \ + --value "\"$locale\"" + ;; + *) + echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2 + echo "Please contribute an implementation for it if you can." >&2 + exit 1 + ;; +esac diff --git a/cdist/conf/type/__locale_system/parameter/default/locale b/cdist/conf/type/__locale_system/parameter/default/locale new file mode 100644 index 00000000..927508f3 --- /dev/null +++ b/cdist/conf/type/__locale_system/parameter/default/locale @@ -0,0 +1 @@ +en_US.UTF-8 diff --git a/cdist/conf/type/__locale_system/parameter/optional b/cdist/conf/type/__locale_system/parameter/optional new file mode 100644 index 00000000..1fc74d6c --- /dev/null +++ b/cdist/conf/type/__locale_system/parameter/optional @@ -0,0 +1 @@ +locale \ No newline at end of file diff --git a/cdist/conf/type/__locale_system/singleton b/cdist/conf/type/__locale_system/singleton new file mode 100644 index 00000000..e69de29b