fedux_org-stdlib 0.7.21 → 0.7.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +23 -19
- data/Rakefile +16 -0
- data/config/rubocop/exclude.yml +44 -0
- data/config/rubocop/include.yml +0 -0
- data/fedux_org-stdlib.gemspec +9 -9
- data/fixtures/plugin-load-app/fedux_org_stdlib-fixtures-plugin_manager-plugin-load.gemspec +11 -11
- data/fixtures/plugin-no_load-app/fedux_org_stdlib-fixtures-plugin_manager-plugin-no_load.gemspec +11 -11
- data/lib/fedux_org_stdlib.rb +2 -1
- data/lib/fedux_org_stdlib/app_config.rb +22 -21
- data/lib/fedux_org_stdlib/colors/html_color.rb +8 -2
- data/lib/fedux_org_stdlib/command.rb +1 -0
- data/lib/fedux_org_stdlib/command/command_result.rb +1 -0
- data/lib/fedux_org_stdlib/command/run_command.rb +6 -5
- data/lib/fedux_org_stdlib/command/which.rb +17 -17
- data/lib/fedux_org_stdlib/core_ext/array/list.rb +6 -1
- data/lib/fedux_org_stdlib/core_ext/hash/list.rb +6 -1
- data/lib/fedux_org_stdlib/core_ext/hash/options.rb +1 -0
- data/lib/fedux_org_stdlib/core_ext/shellwords/clean.rb +8 -0
- data/lib/fedux_org_stdlib/core_ext/string/underline.rb +9 -1
- data/lib/fedux_org_stdlib/environment.rb +6 -4
- data/lib/fedux_org_stdlib/file_template.rb +8 -10
- data/lib/fedux_org_stdlib/filesystem.rb +30 -29
- data/lib/fedux_org_stdlib/filesystem/exceptions.rb +1 -1
- data/lib/fedux_org_stdlib/gem_plugins/exceptions.rb +1 -0
- data/lib/fedux_org_stdlib/gem_plugins/no_plugin.rb +1 -2
- data/lib/fedux_org_stdlib/gem_plugins/plugin.rb +6 -6
- data/lib/fedux_org_stdlib/gem_plugins/plugin_manager.rb +6 -7
- data/lib/fedux_org_stdlib/list.rb +24 -2
- data/lib/fedux_org_stdlib/logging.rb +3 -2
- data/lib/fedux_org_stdlib/logging/logger.rb +7 -7
- data/lib/fedux_org_stdlib/logging/severity.rb +3 -0
- data/lib/fedux_org_stdlib/logic_converters.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters/exceptions.rb +2 -2
- data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +9 -8
- data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +5 -4
- data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +3 -3
- data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +3 -3
- data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +4 -3
- data/lib/fedux_org_stdlib/models/base_model.rb +24 -25
- data/lib/fedux_org_stdlib/models/class_based_model.rb +15 -14
- data/lib/fedux_org_stdlib/models/exceptions.rb +14 -15
- data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +12 -15
- data/lib/fedux_org_stdlib/process_environment.rb +11 -1
- data/lib/fedux_org_stdlib/project.rb +0 -1
- data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +11 -10
- data/lib/fedux_org_stdlib/project/logger.rb +1 -0
- data/lib/fedux_org_stdlib/project/plan.rb +1 -1
- data/lib/fedux_org_stdlib/project/report.rb +8 -9
- data/lib/fedux_org_stdlib/rake/project.rb +4 -4
- data/lib/fedux_org_stdlib/rake/project_task.rb +2 -3
- data/lib/fedux_org_stdlib/rake/shell_task.rb +7 -7
- data/lib/fedux_org_stdlib/rake/sub_task.rb +2 -2
- data/lib/fedux_org_stdlib/rake/task.rb +7 -6
- data/lib/fedux_org_stdlib/rake/version_bump_task.rb +6 -7
- data/lib/fedux_org_stdlib/rake_tasks/console.rb +0 -1
- data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +2 -2
- data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +1 -2
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +1 -2
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/software_version/bump.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/software_version/restore.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/software_version/show.rb +2 -3
- data/lib/fedux_org_stdlib/rake_tasks/software_version/show_shortcut.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +0 -1
- data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +1 -1
- data/lib/fedux_org_stdlib/require_files.rb +5 -4
- data/lib/fedux_org_stdlib/roles/typable.rb +2 -3
- data/lib/fedux_org_stdlib/roles/versionable.rb +3 -2
- data/lib/fedux_org_stdlib/shell_language_detector.rb +21 -2
- data/lib/fedux_org_stdlib/shell_language_detector/language.rb +9 -1
- data/lib/fedux_org_stdlib/support_information.rb +60 -55
- data/lib/fedux_org_stdlib/template_directory.rb +8 -11
- data/lib/fedux_org_stdlib/version.rb +1 -1
- data/lib/fedux_org_stdlib/version_management/library_builder.rb +3 -2
- data/lib/fedux_org_stdlib/version_management/ruby_library.rb +2 -2
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +3 -3
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +5 -5
- data/lib/fedux_org_stdlib/version_management/software_version.rb +4 -3
- data/lib/fedux_org_stdlib/version_management/version_builder.rb +1 -0
- data/rakefiles/default.rake +16 -0
- data/script/terminal +5 -5
- data/spec/app_config_spec.rb +6 -6
- data/spec/colors/html_color_spec.rb +1 -1
- data/spec/core_ext/array/list_spec.rb +8 -8
- data/spec/core_ext/hash/options_spec.rb +17 -17
- data/spec/core_ext/shellwords/clean_spec.rb +1 -1
- data/spec/environment_spec.rb +7 -5
- data/spec/examples/models/class_based/invalid_2.rb +1 -1
- data/spec/examples/models/class_based/valid_2.rb +1 -0
- data/spec/gem_plugins/plugin_manager_spec.rb +1 -1
- data/spec/logger/logger_spec.rb +1 -1
- data/spec/models/base_model_spec.rb +22 -22
- data/spec/models/class_based_model_spec.rb +66 -66
- data/spec/models/filesystem_based_model_spec.rb +28 -28
- data/spec/project/plan_spec.rb +1 -1
- data/spec/project/report_spec.rb +2 -2
- data/spec/project/taskjuggler_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -3
- data/spec/support/rspec.rb +1 -1
- data/spec/version_management/library_builder_spec.rb +2 -2
- data/spec/version_management/ruby_library_spec.rb +2 -2
- data/spec/version_management/rubygem_version_file_parser_spec.rb +8 -8
- data/spec/version_management/rubygem_version_file_spec.rb +8 -8
- data/spec/version_management/software_version_spec.rb +1 -1
- metadata +5 -2
|
@@ -18,7 +18,7 @@ module FeduxOrgStdlib
|
|
|
18
18
|
# @param [Array] sub_tasks
|
|
19
19
|
# A list of sub tasks, e.g. 'namespace1:task1', 'task2'
|
|
20
20
|
def initialize(
|
|
21
|
-
sub_tasks:,
|
|
21
|
+
sub_tasks:,
|
|
22
22
|
**args
|
|
23
23
|
)
|
|
24
24
|
super(**args)
|
|
@@ -27,7 +27,7 @@ module FeduxOrgStdlib
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
# @private
|
|
30
|
-
def run_task(
|
|
30
|
+
def run_task(_verbose)
|
|
31
31
|
sub_tasks.each { |t| ::Rake::Task[t].invoke }
|
|
32
32
|
end
|
|
33
33
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
require 'fedux_org_stdlib/require_files'
|
|
3
|
-
require_library %w
|
|
3
|
+
require_library %w(json rake rake/tasklib shellwords active_support/core_ext/object/blank active_support/core_ext/string/inflections)
|
|
4
4
|
|
|
5
5
|
require 'fedux_org_stdlib/rake/exceptions'
|
|
6
6
|
require 'fedux_org_stdlib/logging/logger'
|
|
@@ -59,7 +59,7 @@ module FeduxOrgStdlib
|
|
|
59
59
|
# @param [Array] dependencies
|
|
60
60
|
# An array of other tasks this task depends on.
|
|
61
61
|
#
|
|
62
|
-
# @yield
|
|
62
|
+
# @yield
|
|
63
63
|
# A block which is called before the "run_task"-method is called. The
|
|
64
64
|
# parameters it taskes depends on the number of parameters the block
|
|
65
65
|
# can take. If the block is defined which two parameters, it takes two
|
|
@@ -81,8 +81,9 @@ module FeduxOrgStdlib
|
|
|
81
81
|
@logger = FeduxOrgStdlib::Logging::Logger.new
|
|
82
82
|
@working_directory = Dir.getwd
|
|
83
83
|
@activate_ci_mode = activate_ci_mode
|
|
84
|
+
@define_in_ci_mode = define_in_ci_mode
|
|
84
85
|
|
|
85
|
-
if dependencies.blank?
|
|
86
|
+
if dependencies.blank?
|
|
86
87
|
@name = name
|
|
87
88
|
else
|
|
88
89
|
@name = {
|
|
@@ -93,7 +94,7 @@ module FeduxOrgStdlib
|
|
|
93
94
|
after_initialize
|
|
94
95
|
|
|
95
96
|
define_task unless running_in_ci_mode?
|
|
96
|
-
define_task if define_in_ci_mode?
|
|
97
|
+
define_task if define_in_ci_mode? && running_in_ci_mode?
|
|
97
98
|
end
|
|
98
99
|
|
|
99
100
|
private
|
|
@@ -124,7 +125,7 @@ module FeduxOrgStdlib
|
|
|
124
125
|
end
|
|
125
126
|
|
|
126
127
|
# Run code if task is executed
|
|
127
|
-
def run_task(
|
|
128
|
+
def run_task(_verbose); end
|
|
128
129
|
|
|
129
130
|
# Should this task be defined in continous integration mode
|
|
130
131
|
def define_in_ci_mode?
|
|
@@ -144,7 +145,7 @@ module FeduxOrgStdlib
|
|
|
144
145
|
public
|
|
145
146
|
|
|
146
147
|
# Binding to instance
|
|
147
|
-
def
|
|
148
|
+
def instance_binding
|
|
148
149
|
binding
|
|
149
150
|
end
|
|
150
151
|
|
|
@@ -8,19 +8,19 @@ module FeduxOrgStdlib
|
|
|
8
8
|
#
|
|
9
9
|
# @example Create new version task for bumping the major number X.0.0
|
|
10
10
|
# FeduxOrgStdlib::Rake::VersionBumpTask.new(
|
|
11
|
-
# name: 'version:bump:major',
|
|
11
|
+
# name: 'version:bump:major',
|
|
12
12
|
# description: 'Bump major version part'
|
|
13
13
|
# ) { |t| t.bump_version :major }
|
|
14
14
|
#
|
|
15
15
|
# @example Create new version task for bumping the minor number 0.X.0
|
|
16
16
|
# FeduxOrgStdlib::Rake::VersionBumpTask.new(
|
|
17
|
-
# name: 'version:bump:minor',
|
|
17
|
+
# name: 'version:bump:minor',
|
|
18
18
|
# description: 'Bump minor version part'
|
|
19
19
|
# ) { |t| t.bump_version :minor }
|
|
20
20
|
#
|
|
21
21
|
# @example Create new version task for bumping the tiny number 0.0.X
|
|
22
22
|
# FeduxOrgStdlib::Rake::VersionBumpTask.new(
|
|
23
|
-
# name: 'version:bump:tiny',
|
|
23
|
+
# name: 'version:bump:tiny',
|
|
24
24
|
# description: 'Bump tiny version part'
|
|
25
25
|
# ) { |t| t.bump_version :tiny }
|
|
26
26
|
#
|
|
@@ -31,13 +31,13 @@ module FeduxOrgStdlib
|
|
|
31
31
|
# @private
|
|
32
32
|
def bump_version(type)
|
|
33
33
|
version_update do |file|
|
|
34
|
-
file.bump(type)
|
|
34
|
+
file.bump(type)
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
# @private
|
|
39
|
-
def
|
|
40
|
-
|
|
39
|
+
def version(new_version)
|
|
40
|
+
fail Exception, "You need to define a version via \"VERSION=<version>\" or \"version=<version>\"." if new_version.blank?
|
|
41
41
|
|
|
42
42
|
begin
|
|
43
43
|
version_update do |file|
|
|
@@ -58,7 +58,6 @@ module FeduxOrgStdlib
|
|
|
58
58
|
sh "git commit -m 'Version bump to #{version}'"
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
|
|
62
61
|
def version_update(&block)
|
|
63
62
|
file = FeduxOrgStdlib::VersionManagement::RubygemVersionFile.read(version_file)
|
|
64
63
|
old_version = file.version
|
|
@@ -3,8 +3,7 @@ require 'fedux_org_stdlib/rake/project_task'
|
|
|
3
3
|
|
|
4
4
|
FeduxOrgStdlib::Rake::ProjectTask.new(
|
|
5
5
|
name: 'project:report:open',
|
|
6
|
-
description: 'Open generated report for project plan'
|
|
6
|
+
description: 'Open generated report for project plan'
|
|
7
7
|
) do |t|
|
|
8
8
|
t.report.open
|
|
9
9
|
end
|
|
10
|
-
|
|
@@ -5,4 +5,4 @@ require 'fedux_org_stdlib/rake/version_bump_task'
|
|
|
5
5
|
FeduxOrgStdlib::Rake::VersionBumpTask.new(name: 'version:bump:major', description: 'Bump major version part') { |t| t.bump_version :major }
|
|
6
6
|
FeduxOrgStdlib::Rake::VersionBumpTask.new(name: 'version:bump:minor', description: 'Bump minor version part') { |t| t.bump_version :minor }
|
|
7
7
|
FeduxOrgStdlib::Rake::VersionBumpTask.new(name: 'version:bump:tiny', description: 'Bump tiny version part') { |t| t.bump_version :tiny }
|
|
8
|
-
FeduxOrgStdlib::Rake::VersionBumpTask.new(name: 'version:bump', description: 'Bump version to ENV["VERSION"] or ENV["version"]') { |t| t.
|
|
8
|
+
FeduxOrgStdlib::Rake::VersionBumpTask.new(name: 'version:bump', description: 'Bump version to ENV["VERSION"] or ENV["version"]') { |t| t.version ENV['VERSION'] || ENV['version'] }
|
|
@@ -6,6 +6,6 @@ require 'fedux_org_stdlib/rake/shell_task'
|
|
|
6
6
|
task = FeduxOrgStdlib::Rake::ShellTask.new(
|
|
7
7
|
name: 'version:restore',
|
|
8
8
|
description: 'Restore version file from repository',
|
|
9
|
-
command:
|
|
9
|
+
command: 'git checkout <%= version_file %>'
|
|
10
10
|
)
|
|
11
11
|
task.include FeduxOrgStdlib::Roles::Versionable
|
|
@@ -5,8 +5,7 @@ require 'fedux_org_stdlib/rake/task'
|
|
|
5
5
|
task = FeduxOrgStdlib::Rake::Task.new(
|
|
6
6
|
name: 'version:show',
|
|
7
7
|
description: 'Show version'
|
|
8
|
-
) do |
|
|
9
|
-
$stderr.puts FeduxOrgStdlib::VersionManagement::RubygemVersionFile.read(version_file).version
|
|
8
|
+
) do |_t|
|
|
9
|
+
$stderr.puts FeduxOrgStdlib::VersionManagement::RubygemVersionFile.read(version_file).version
|
|
10
10
|
end
|
|
11
11
|
task.include FeduxOrgStdlib::Roles::Versionable
|
|
12
|
-
|
|
@@ -6,6 +6,6 @@ require 'fedux_org_stdlib/rake_tasks/test/cucumber'
|
|
|
6
6
|
FeduxOrgStdlib::Rake::SubTask.new(
|
|
7
7
|
name: 'test:travis',
|
|
8
8
|
description: 'Runs rspec and cucumber on travis',
|
|
9
|
-
sub_tasks: %w
|
|
9
|
+
sub_tasks: %w(test:rspec test:cucumber),
|
|
10
10
|
activate_ci_mode: true
|
|
11
11
|
)
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
require 'fedux_org_stdlib/core_ext/array'
|
|
3
3
|
|
|
4
4
|
module FeduxOrgStdlib
|
|
5
|
+
# Helper
|
|
5
6
|
module RequireFiles
|
|
6
7
|
def require_library(libraries, message_template = 'You need to install %s to make "%s" work.')
|
|
7
8
|
libraries = Array(libraries)
|
|
@@ -9,17 +10,17 @@ module FeduxOrgStdlib
|
|
|
9
10
|
begin
|
|
10
11
|
libraries.each { |l| require l }
|
|
11
12
|
rescue LoadError => e
|
|
12
|
-
$stderr.puts format(message_template, libraries.map { |l| l.split(
|
|
13
|
+
$stderr.puts format(message_template, libraries.map { |l| l.split(/\//).first }.uniq.to_list, caller[1].split(/:/)[0, 2].join(':'))
|
|
13
14
|
$stderr.puts
|
|
14
15
|
$stderr.puts e.message
|
|
15
|
-
exit 1
|
|
16
|
+
exit 1
|
|
16
17
|
end
|
|
17
18
|
end
|
|
18
19
|
|
|
19
|
-
def require_installed_gem(gems,
|
|
20
|
+
def require_installed_gem(gems, _message_template = 'You need to install %s to make "%s" work.')
|
|
20
21
|
gems = Array(gems)
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
fail LoadError, JSON.dump(gems: gems) if gems.any? { |name| Gem::Specification.find_all_by_name(name).blank? }
|
|
23
24
|
end
|
|
24
25
|
end
|
|
25
26
|
end
|
|
@@ -9,7 +9,7 @@ module FeduxOrgStdlib
|
|
|
9
9
|
# a `Pathname`.
|
|
10
10
|
#
|
|
11
11
|
# @example
|
|
12
|
-
#
|
|
12
|
+
#
|
|
13
13
|
# class MyClass
|
|
14
14
|
# include FeduxOrgStdlib::Roles::Typeable
|
|
15
15
|
#
|
|
@@ -32,7 +32,6 @@ module FeduxOrgStdlib
|
|
|
32
32
|
# object.image? # => false
|
|
33
33
|
# object.stylesheet? # => true
|
|
34
34
|
module Typable
|
|
35
|
-
|
|
36
35
|
def source_path
|
|
37
36
|
fail NoMethodError, :source_path
|
|
38
37
|
end
|
|
@@ -129,7 +128,7 @@ module FeduxOrgStdlib
|
|
|
129
128
|
def font?
|
|
130
129
|
font_by_path? || font_by_extension?
|
|
131
130
|
end
|
|
132
|
-
|
|
131
|
+
|
|
133
132
|
private
|
|
134
133
|
|
|
135
134
|
# Is font by path?
|
|
@@ -3,14 +3,15 @@ require 'fedux_org_stdlib/rake/exceptions'
|
|
|
3
3
|
|
|
4
4
|
module FeduxOrgStdlib
|
|
5
5
|
module Roles
|
|
6
|
+
# Versionable
|
|
6
7
|
module Versionable
|
|
7
8
|
def version_file(working_directory = Dir.getwd)
|
|
8
9
|
paths = []
|
|
9
10
|
paths << File.join(working_directory, 'lib', '**', 'version.rb')
|
|
10
11
|
|
|
11
|
-
file = Dir.glob(paths.shift).first while !paths.blank?
|
|
12
|
+
file = Dir.glob(paths.shift).first while !paths.blank? && file.blank?
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
fail FeduxOrgStdlib::Rake::Exceptions::VersionFileNotFound, JSON.dump(message: 'Cannot find version file') unless file
|
|
14
15
|
|
|
15
16
|
file
|
|
16
17
|
end
|
|
@@ -3,6 +3,25 @@ require 'fedux_org_stdlib/process_environment'
|
|
|
3
3
|
require 'fedux_org_stdlib/shell_language_detector/language'
|
|
4
4
|
|
|
5
5
|
module FeduxOrgStdlib
|
|
6
|
+
# Detect language of shell
|
|
7
|
+
#
|
|
8
|
+
# @example Simple Usage
|
|
9
|
+
#
|
|
10
|
+
# detector = ShellLanguageDetector.new
|
|
11
|
+
# lang = detector.detect
|
|
12
|
+
# puts lang.language_code
|
|
13
|
+
# puts lang.country_code
|
|
14
|
+
# puts lang.encoding
|
|
15
|
+
#
|
|
16
|
+
# @example Overwrite detected lang
|
|
17
|
+
#
|
|
18
|
+
# detector = ShellLanguageDetector.new
|
|
19
|
+
# lang = detector.detect(overwrite: [:de, :de, :utf_8]
|
|
20
|
+
#
|
|
21
|
+
# @example Allowed languages
|
|
22
|
+
#
|
|
23
|
+
# detector = ShellLanguageDetector.new
|
|
24
|
+
# lang = detector.detect(allowed: [:de, :en])
|
|
6
25
|
class ShellLanguageDetector
|
|
7
26
|
private
|
|
8
27
|
|
|
@@ -27,8 +46,8 @@ module FeduxOrgStdlib
|
|
|
27
46
|
overwrite = Array(overwrite).map(&:to_sym)
|
|
28
47
|
|
|
29
48
|
lang = environment.fetch 'LANG'
|
|
30
|
-
language_code, country_code, encoding = lang.scan(/([^_-]+)[_-]([^.]+)\.([A-Za-z0-9_-]*)/i).flatten.map(&:downcase).map { |e| e.gsub('-', '_') }.map { |e| e.to_sym
|
|
31
|
-
language_code, country_code, encoding = *overwrite if !overwrite.blank? && overwrite.none?
|
|
49
|
+
language_code, country_code, encoding = lang.scan(/([^_-]+)[_-]([^.]+)\.([A-Za-z0-9_-]*)/i).flatten.map(&:downcase).map { |e| e.gsub('-', '_') }.map { |e| e.to_sym unless e.nil? }
|
|
50
|
+
language_code, country_code, encoding = *overwrite if !overwrite.blank? && overwrite.none?(&:blank?)
|
|
32
51
|
|
|
33
52
|
return Language.new(language_code: language_code, country_code: country_code, encoding: encoding) if language_code && (allowed.blank? || allowed.include?(language_code))
|
|
34
53
|
Language.new(language_code: default_language_code, country_code: default_country_code, encoding: default_encoding)
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
module FeduxOrgStdlib
|
|
3
3
|
class ShellLanguageDetector
|
|
4
|
+
# The detected langauge
|
|
4
5
|
class Language
|
|
5
|
-
|
|
6
|
+
# @!attribute [r] language_code
|
|
7
|
+
# The language code, e.g de_DE.utf-8 => de
|
|
8
|
+
#
|
|
9
|
+
# @!attribute [r] country_code
|
|
10
|
+
# The country code, e.g de_DE.utf-8 => DE
|
|
11
|
+
#
|
|
12
|
+
# @!attribute [r] encoding
|
|
13
|
+
# The country code, e.g de_DE.utf-8 => utf-8
|
|
6
14
|
attr_reader :language_code, :country_code, :encoding
|
|
7
15
|
|
|
8
16
|
def initialize(language_code:, country_code:, encoding: nil)
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
# encoding: utf-8
|
|
2
2
|
require 'fedux_org_stdlib/require_files'
|
|
3
3
|
require 'fedux_org_stdlib/core_ext/string/underline'
|
|
4
|
-
require_library %w
|
|
4
|
+
require_library %w(facter)
|
|
5
5
|
|
|
6
6
|
module FeduxOrgStdlib
|
|
7
|
+
# Gather support information
|
|
8
|
+
#
|
|
9
|
+
# @example Gather information
|
|
10
|
+
#
|
|
11
|
+
# info = SupportInformation.new
|
|
12
|
+
# puts info
|
|
7
13
|
class SupportInformation
|
|
8
14
|
private
|
|
9
15
|
|
|
@@ -28,30 +34,30 @@ module FeduxOrgStdlib
|
|
|
28
34
|
|
|
29
35
|
result << headlines.fetch(:system_information, 'System Information').underline(character: underline_character)
|
|
30
36
|
result << format("%#{max_field_length}s | %s", 'Information', 'Value')
|
|
31
|
-
result << format(
|
|
32
|
-
result.concat system_information.sort_by { |key,
|
|
37
|
+
result << format('%s + %s', '-' * max_field_length, '-' * 40)
|
|
38
|
+
result.concat system_information.sort_by { |key, _value| key }.map { |key, value| format("%#{max_field_length}s | %s", key, value) }
|
|
33
39
|
|
|
34
|
-
result <<
|
|
35
|
-
result <<
|
|
36
|
-
result <<
|
|
40
|
+
result << ''
|
|
41
|
+
result << ''
|
|
42
|
+
result << ''
|
|
37
43
|
|
|
38
44
|
max_field_length = determine_max_field_length(rubygems_information.keys)
|
|
39
45
|
|
|
40
46
|
result << headlines.fetch(:rubygems_information, 'Rubygems Information').underline(character: underline_character)
|
|
41
47
|
result << format("%#{max_field_length}s | %s", 'Information', 'Value')
|
|
42
|
-
result << format(
|
|
43
|
-
result.concat rubygems_information.sort_by { |key,
|
|
48
|
+
result << format('%s + %s', '-' * max_field_length, '-' * 40)
|
|
49
|
+
result.concat rubygems_information.sort_by { |key, _value| key }.map { |key, value| format("%#{max_field_length}s | %s", key, value) }
|
|
44
50
|
|
|
45
|
-
result <<
|
|
46
|
-
result <<
|
|
47
|
-
result <<
|
|
51
|
+
result << ''
|
|
52
|
+
result << ''
|
|
53
|
+
result << ''
|
|
48
54
|
|
|
49
55
|
max_field_length = determine_max_field_length(installed_rubygems.keys)
|
|
50
56
|
|
|
51
57
|
result << headlines.fetch(:installed_rubygems, 'Installed Rubygems').underline(character: underline_character)
|
|
52
58
|
result << format("%#{max_field_length}s | %s", 'Name', 'version')
|
|
53
|
-
result << format(
|
|
54
|
-
result.concat installed_rubygems.sort_by { |key,
|
|
59
|
+
result << format('%s + %s', '-' * max_field_length, '-' * 40)
|
|
60
|
+
result.concat installed_rubygems.sort_by { |key, _value| key }.map { |key, value| format("%#{max_field_length}s | %s", key, value) }
|
|
55
61
|
|
|
56
62
|
result.join "\n"
|
|
57
63
|
end
|
|
@@ -76,8 +82,8 @@ module FeduxOrgStdlib
|
|
|
76
82
|
end
|
|
77
83
|
|
|
78
84
|
def system_information
|
|
79
|
-
Timeout
|
|
80
|
-
Facter.to_hash.keep_if { |key,_| facter_fields.include?(key.to_s) }
|
|
85
|
+
Timeout.timeout(10) do
|
|
86
|
+
Facter.to_hash.keep_if { |key, _| facter_fields.include?(key.to_s) }
|
|
81
87
|
end
|
|
82
88
|
rescue Timeout::Error
|
|
83
89
|
logger.warn 'Getting environment information took to long. Please make sure the name resolver is available. This might cause the latency.'
|
|
@@ -85,49 +91,48 @@ module FeduxOrgStdlib
|
|
|
85
91
|
end
|
|
86
92
|
|
|
87
93
|
def determine_max_field_length(list)
|
|
88
|
-
list.
|
|
94
|
+
list.reduce(0) { |a, e| e.size > a ? e.size : a }
|
|
89
95
|
end
|
|
90
96
|
|
|
91
97
|
def facter_fields
|
|
92
|
-
%w
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
98
|
+
%w(
|
|
99
|
+
architecture
|
|
100
|
+
filesystems
|
|
101
|
+
hardwareisa
|
|
102
|
+
hardwaremodel
|
|
103
|
+
is_virtual
|
|
104
|
+
kernel
|
|
105
|
+
kernelmajversion
|
|
106
|
+
kernelrelease
|
|
107
|
+
kernelversion
|
|
108
|
+
memoryfree
|
|
109
|
+
memoryfree_mb
|
|
110
|
+
memorysize
|
|
111
|
+
memorysize_mb
|
|
112
|
+
memorytotal
|
|
113
|
+
operatingsystem
|
|
114
|
+
operatingsystemrelease
|
|
115
|
+
osfamily
|
|
116
|
+
path
|
|
117
|
+
physicalprocessorcount
|
|
118
|
+
processor0
|
|
119
|
+
processor1
|
|
120
|
+
processorcount
|
|
121
|
+
ps
|
|
122
|
+
rubysitedir
|
|
123
|
+
rubyversion
|
|
124
|
+
selinux
|
|
125
|
+
swapfree
|
|
126
|
+
swapfree_mb
|
|
127
|
+
swapsize
|
|
128
|
+
swapsize_mb
|
|
129
|
+
timezone
|
|
130
|
+
uptime
|
|
131
|
+
uptime_days
|
|
132
|
+
uptime_hours
|
|
133
|
+
uptime_seconds
|
|
134
|
+
virtual
|
|
135
|
+
)
|
|
130
136
|
end
|
|
131
|
-
|
|
132
137
|
end
|
|
133
138
|
end
|