Add new type: __locale_system

Merge the best of the proposals from Steven and Carlos
This commit is contained in:
Nico Schottelius 2016-08-02 00:58:07 +02:00
parent d2997baf0b
commit 06d0eabb5f
5 changed files with 125 additions and 0 deletions

View file

@ -0,0 +1,66 @@
cdist-type__locale_system(7)
============================
NAME
----
cdist-type__locale_system - Set system-wide locale
DESCRIPTION
-----------
This cdist type allows you to modify system-wide locale.
The name of the locale category is given as the object id
(usually you are probably interested in using LANG)
OPTIONAL PARAMETERS
-------------------
state
present or absent, defaults to present.
If present, sets the locale category to the given value.
If absent, removes the locale category from the system file.
value
The value for the locale category.
Defaults to en_US.UTF-8.
EXAMPLES
--------
.. code-block:: sh
# Set LANG to en_US.UTF-8
__locale_system LANG
# Same as above, but more explicit
__locale_system LANG --value en_US.UTF-8
# Set category LC_MESSAGES to de_CH.UTF-8
__locale_system LC_MESSAGES --value de_CH.UTF-8
# Remove setting for LC_ALL
__locale_system LC_ALL --state absent
SEE ALSO
--------
:strong:`locale`\ (1)
:strong:`localedef`\ (1)
:strong:`cdist-type__locale`\ (7)
AUTHORS
-------
Steven Armstrong <steven-cdist--@--armstrong.cc>,
Carlos Ortigoza <carlos.ortigoza--@--ungleich.ch>,
Nico Schottelius <nico.schottelius--@--ungleich.ch>
COPYING
-------
Copyright \(C) 2016 Nico Schottelius. Free use of this software is
granted under the terms of the GNU General Public License version 3 or
later (GPLv3+).

View file

@ -0,0 +1,55 @@
#!/bin/sh
#
# 2012-2016 Steven Armstrong (steven-cdist at armstrong.cc)
# 2016 Carlos Ortigoza (carlos.ortigoza at ungleich.ch)
# 2016 Nico Schottelius (nico.schottelius 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 <http://www.gnu.org/licenses/>.
#
#
# Configure system-wide locale by modifying i18n file.
#
os=$(cat "$__global/explorer/os")
case "$os" in
debian|ubuntu)
locale_conf="/etc/default/locale"
;;
archlinux)
locale_conf="/etc/locale.conf"
;;
redhat|centos)
locale_conf="/etc/sysconfig/i18n"
;;
*)
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
__file "$locale_conf" \
--owner root --group root --mode 644 \
--state exists
require="__file/$locale_conf" \
__key_value "$locale_conf:$__object_id" \
--file "$locale_conf" \
--key "$__object_id" \
--delimiter = \
--state "$(cat "$__object/parameter/state")" \
--value "$(cat "$__object/parameter/value")"

View file

@ -0,0 +1 @@
present

View file

@ -0,0 +1 @@
en_US.UTF-8

View file

@ -0,0 +1,2 @@
state
value