Add new type: __locale_system
Merge the best of the proposals from Steven and Carlos
This commit is contained in:
		
					parent
					
						
							
								d2997baf0b
							
						
					
				
			
			
				commit
				
					
						06d0eabb5f
					
				
			
		
					 5 changed files with 125 additions and 0 deletions
				
			
		
							
								
								
									
										66
									
								
								cdist/conf/type/__locale_system/man.rst
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								cdist/conf/type/__locale_system/man.rst
									
										
									
									
									
										Normal 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+). | ||||
							
								
								
									
										55
									
								
								cdist/conf/type/__locale_system/manifest
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								cdist/conf/type/__locale_system/manifest
									
										
									
									
									
										Normal 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")" | ||||
							
								
								
									
										1
									
								
								cdist/conf/type/__locale_system/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__locale_system/parameter/default/state
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| present | ||||
							
								
								
									
										1
									
								
								cdist/conf/type/__locale_system/parameter/default/value
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								cdist/conf/type/__locale_system/parameter/default/value
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| en_US.UTF-8 | ||||
							
								
								
									
										2
									
								
								cdist/conf/type/__locale_system/parameter/optional
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								cdist/conf/type/__locale_system/parameter/optional
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| state | ||||
| value | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue