beaker-i18n_helper 1.0.1 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/CHANGELOG.md +11 -0
- data/README.md +7 -7
- data/lib/beaker/i18n_helper.rb +52 -4
- data/lib/beaker/i18n_helper/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b6547b333dd953c1304275229cf57bf3c2107d7
|
4
|
+
data.tar.gz: 1ea4ff06d011413473f5bd517867238ed46d87a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: df767bbe65daf3f8132d7ab1c8843f6476bc09a410218df49db34916885cd758c41fae858d1106940e8a0f49cd9af7dac01523168983e259e7357294c0f8a255
|
7
|
+
data.tar.gz: a333af940775587c403166fcce537d2710751bcb58e8162174832b5cda384e41f9fc0c671bc94c524733d9023bd568743ca31890366a19679232a01513ecd426
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,16 @@
|
|
3
3
|
All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
4
4
|
and this project adheres to [Semantic Versioning](http://semver.org).
|
5
5
|
|
6
|
+
## [1.1.0]
|
7
|
+
### Summary
|
8
|
+
This release contains a fix and a public API change.
|
9
|
+
|
10
|
+
#### Changed
|
11
|
+
- `install_language_pack_on` method is now called `install_language_on`
|
12
|
+
|
13
|
+
#### Fixed
|
14
|
+
- issue where language packs aren't available on Debian. Installs 'locales-all' instead.
|
15
|
+
|
6
16
|
## [1.0.1]
|
7
17
|
### Summary
|
8
18
|
This release fixes the `change_locale_on` method and makes some README updates.
|
@@ -14,5 +24,6 @@ This release fixes the `change_locale_on` method and makes some README updates.
|
|
14
24
|
### Summary
|
15
25
|
This is the first release of this gem.
|
16
26
|
|
27
|
+
[1.1.0]:https://github.com/puppetlabs/beaker-i18n_helper/compare/1.0.1...1.1.0
|
17
28
|
[1.0.1]:https://github.com/puppetlabs/beaker-i18n_helper/compare/1.0.0...1.0.1
|
18
29
|
[1.0.0]:https://github.com/puppetlabs/beaker-i18n_helper/tags/1.0.0
|
data/README.md
CHANGED
@@ -25,7 +25,7 @@ c.before :suite do
|
|
25
25
|
# Required for binding tests.
|
26
26
|
if fact('osfamily') == 'Debian'
|
27
27
|
#install language pack on debian systems
|
28
|
-
|
28
|
+
install_language_on(host, "ja_JP.utf-8")
|
29
29
|
end
|
30
30
|
if fact('osfamily') == 'RedHat'
|
31
31
|
if fact('operatingsystemmajrelease') =~ /7/ || fact('operatingsystem') =~ /Fedora/
|
@@ -42,21 +42,21 @@ end
|
|
42
42
|
|
43
43
|
## Reference
|
44
44
|
|
45
|
-
####
|
45
|
+
#### install_language_on(hosts, lang)
|
46
46
|
|
47
|
-
Uses Beaker's `install_package` to install a language pack for the desired language. Takes
|
47
|
+
Uses Beaker's `install_package` to install a language pack for the desired language. Takes a hosts array and `lang`, a POSIX locale identifier ([lang]_[region].[charset])
|
48
48
|
|
49
49
|
```ruby
|
50
|
-
|
50
|
+
install_language_on(hosts, 'ja_JP.utf-8')
|
51
51
|
```
|
52
52
|
Usually only needed for Debian systems, RHEL installs all language packs by default.
|
53
53
|
|
54
|
-
#### change_locale_on(
|
54
|
+
#### change_locale_on(hosts, lang)
|
55
55
|
|
56
|
-
Takes in a POSIX locale identifier, `lang`, and sets $LANG, $LANGUAGE, and on the target
|
56
|
+
Takes in a POSIX locale identifier, `lang`, and sets $LANG, $LANGUAGE, and on the target hosts to `#{lang}`.
|
57
57
|
|
58
58
|
```ruby
|
59
|
-
change_locale_on(
|
59
|
+
change_locale_on(hosts, "de_DE.utf-8")
|
60
60
|
```
|
61
61
|
|
62
62
|
## Limitations
|
data/lib/beaker/i18n_helper.rb
CHANGED
@@ -1,16 +1,26 @@
|
|
1
1
|
require 'beaker'
|
2
2
|
|
3
|
-
#
|
3
|
+
# Beaker i18n Helper
|
4
4
|
module Beaker::I18nHelper # rubocop:disable Style/ClassAndModuleChildren
|
5
5
|
include Beaker::DSL
|
6
6
|
include Beaker::DSL::Helpers::FacterHelpers
|
7
7
|
|
8
|
+
# Validates POSIX locale identifier format
|
9
|
+
#
|
10
|
+
# @param lang [String] the identifier as a string, e.g. 'ja_JP.utf8'
|
11
|
+
# @return [Boolean] true if it's a valid identifier
|
12
|
+
#
|
8
13
|
def valid_lang_string?(lang)
|
9
14
|
lang_regex = %r{^[a-zA-Z][a-zA-Z](\_|\-)[a-zA-Z][a-zA-Z](\..*)?$}
|
10
15
|
raise "Please use correct format for lang: #{lang_regex}" unless lang.match lang_regex
|
11
16
|
true
|
12
17
|
end
|
13
18
|
|
19
|
+
# Parses a given POSIX locale identifier into parts for the other functions to consume
|
20
|
+
#
|
21
|
+
# @param lang [String] the identifier as a string, e.g. 'ja_JP.utf8'
|
22
|
+
# @return [Array] the identifier as an array of [{lang},{region},{charset}]
|
23
|
+
#
|
14
24
|
def parse_lang(lang)
|
15
25
|
lang = lang.split('.')[0] if lang =~ %r{\.\S}
|
16
26
|
|
@@ -23,20 +33,36 @@ module Beaker::I18nHelper # rubocop:disable Style/ClassAndModuleChildren
|
|
23
33
|
lang
|
24
34
|
end
|
25
35
|
|
26
|
-
|
36
|
+
# Installs the language pack on each host for a given language (if necessary)
|
37
|
+
#
|
38
|
+
# @param hsts [Array] beaker hosts array
|
39
|
+
# @param lang [String] the POSIX locale identifier as a string, e.g. 'ja_JP.utf8'
|
40
|
+
# @return [nil]
|
41
|
+
#
|
42
|
+
def install_language_on(hsts, lang)
|
27
43
|
valid_lang_string?(lang)
|
28
44
|
lang = parse_lang(lang)
|
29
45
|
|
30
46
|
Array(hsts).each do |host|
|
31
47
|
begin
|
32
|
-
|
33
|
-
|
48
|
+
case fact('operatingsystem')
|
49
|
+
when 'Debian'
|
50
|
+
install_locales_all_on(host)
|
51
|
+
when 'Ubuntu'
|
52
|
+
install_language_pack_on(host, lang)
|
53
|
+
end
|
34
54
|
rescue RuntimeError
|
35
55
|
raise "Unable to install language pack for #{lang[0]} on #{host}"
|
36
56
|
end
|
37
57
|
end
|
38
58
|
end
|
39
59
|
|
60
|
+
# Changes the locale on each host to the given language
|
61
|
+
#
|
62
|
+
# @param hsts [Array] beaker hosts array
|
63
|
+
# @param lang [String] the POSIX locale identifier as a string, e.g. 'ja_JP.utf8'
|
64
|
+
# @return [nil]
|
65
|
+
#
|
40
66
|
def change_locale_on(hsts, lang)
|
41
67
|
valid_lang_string?(lang)
|
42
68
|
Array(hsts).each do |host|
|
@@ -50,6 +76,28 @@ module Beaker::I18nHelper # rubocop:disable Style/ClassAndModuleChildren
|
|
50
76
|
end
|
51
77
|
end
|
52
78
|
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
# Installs the 'locales-all' package on the target host unless it is already installed
|
83
|
+
#
|
84
|
+
# @param host [Beaker::Host] beaker host
|
85
|
+
# @return [nil]
|
86
|
+
#
|
87
|
+
def install_locales_all_on(host)
|
88
|
+
install_package(host, 'locales-all') unless check_for_package(host, 'locales-all')
|
89
|
+
end
|
90
|
+
|
91
|
+
# Installs the language pack on the target host for a given language (if necessary)
|
92
|
+
#
|
93
|
+
# @param host [Beaker::Host] beaker host
|
94
|
+
# @param lang [String] the POSIX locale identifier as a string, e.g. 'ja_JP.utf8'
|
95
|
+
# @return [nil]
|
96
|
+
#
|
97
|
+
def install_language_pack_on(host, lang)
|
98
|
+
install_package(host, "language-pack-#{lang[0]}")
|
99
|
+
install_package(host, 'systemd-services') unless shell('file /sbin/init').stdout =~ %r{systemd}
|
100
|
+
end
|
53
101
|
end
|
54
102
|
|
55
103
|
include Beaker::I18nHelper
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: beaker-i18n_helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Putnam
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|