fedux_org-stdlib 0.7.21 → 0.7.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +3 -0
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +23 -19
  5. data/Rakefile +16 -0
  6. data/config/rubocop/exclude.yml +44 -0
  7. data/config/rubocop/include.yml +0 -0
  8. data/fedux_org-stdlib.gemspec +9 -9
  9. data/fixtures/plugin-load-app/fedux_org_stdlib-fixtures-plugin_manager-plugin-load.gemspec +11 -11
  10. data/fixtures/plugin-no_load-app/fedux_org_stdlib-fixtures-plugin_manager-plugin-no_load.gemspec +11 -11
  11. data/lib/fedux_org_stdlib.rb +2 -1
  12. data/lib/fedux_org_stdlib/app_config.rb +22 -21
  13. data/lib/fedux_org_stdlib/colors/html_color.rb +8 -2
  14. data/lib/fedux_org_stdlib/command.rb +1 -0
  15. data/lib/fedux_org_stdlib/command/command_result.rb +1 -0
  16. data/lib/fedux_org_stdlib/command/run_command.rb +6 -5
  17. data/lib/fedux_org_stdlib/command/which.rb +17 -17
  18. data/lib/fedux_org_stdlib/core_ext/array/list.rb +6 -1
  19. data/lib/fedux_org_stdlib/core_ext/hash/list.rb +6 -1
  20. data/lib/fedux_org_stdlib/core_ext/hash/options.rb +1 -0
  21. data/lib/fedux_org_stdlib/core_ext/shellwords/clean.rb +8 -0
  22. data/lib/fedux_org_stdlib/core_ext/string/underline.rb +9 -1
  23. data/lib/fedux_org_stdlib/environment.rb +6 -4
  24. data/lib/fedux_org_stdlib/file_template.rb +8 -10
  25. data/lib/fedux_org_stdlib/filesystem.rb +30 -29
  26. data/lib/fedux_org_stdlib/filesystem/exceptions.rb +1 -1
  27. data/lib/fedux_org_stdlib/gem_plugins/exceptions.rb +1 -0
  28. data/lib/fedux_org_stdlib/gem_plugins/no_plugin.rb +1 -2
  29. data/lib/fedux_org_stdlib/gem_plugins/plugin.rb +6 -6
  30. data/lib/fedux_org_stdlib/gem_plugins/plugin_manager.rb +6 -7
  31. data/lib/fedux_org_stdlib/list.rb +24 -2
  32. data/lib/fedux_org_stdlib/logging.rb +3 -2
  33. data/lib/fedux_org_stdlib/logging/logger.rb +7 -7
  34. data/lib/fedux_org_stdlib/logging/severity.rb +3 -0
  35. data/lib/fedux_org_stdlib/logic_converters.rb +1 -0
  36. data/lib/fedux_org_stdlib/logic_converters/exceptions.rb +2 -2
  37. data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +9 -8
  38. data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +5 -4
  39. data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +3 -3
  40. data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +3 -3
  41. data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +4 -3
  42. data/lib/fedux_org_stdlib/models/base_model.rb +24 -25
  43. data/lib/fedux_org_stdlib/models/class_based_model.rb +15 -14
  44. data/lib/fedux_org_stdlib/models/exceptions.rb +14 -15
  45. data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +12 -15
  46. data/lib/fedux_org_stdlib/process_environment.rb +11 -1
  47. data/lib/fedux_org_stdlib/project.rb +0 -1
  48. data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +11 -10
  49. data/lib/fedux_org_stdlib/project/logger.rb +1 -0
  50. data/lib/fedux_org_stdlib/project/plan.rb +1 -1
  51. data/lib/fedux_org_stdlib/project/report.rb +8 -9
  52. data/lib/fedux_org_stdlib/rake/project.rb +4 -4
  53. data/lib/fedux_org_stdlib/rake/project_task.rb +2 -3
  54. data/lib/fedux_org_stdlib/rake/shell_task.rb +7 -7
  55. data/lib/fedux_org_stdlib/rake/sub_task.rb +2 -2
  56. data/lib/fedux_org_stdlib/rake/task.rb +7 -6
  57. data/lib/fedux_org_stdlib/rake/version_bump_task.rb +6 -7
  58. data/lib/fedux_org_stdlib/rake_tasks/console.rb +0 -1
  59. data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +2 -2
  60. data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +1 -1
  61. data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +1 -1
  62. data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +1 -2
  63. data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +1 -2
  64. data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +1 -1
  65. data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +1 -1
  66. data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +1 -1
  67. data/lib/fedux_org_stdlib/rake_tasks/software_version/bump.rb +1 -1
  68. data/lib/fedux_org_stdlib/rake_tasks/software_version/restore.rb +1 -1
  69. data/lib/fedux_org_stdlib/rake_tasks/software_version/show.rb +2 -3
  70. data/lib/fedux_org_stdlib/rake_tasks/software_version/show_shortcut.rb +1 -1
  71. data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +0 -1
  72. data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +1 -1
  73. data/lib/fedux_org_stdlib/require_files.rb +5 -4
  74. data/lib/fedux_org_stdlib/roles/typable.rb +2 -3
  75. data/lib/fedux_org_stdlib/roles/versionable.rb +3 -2
  76. data/lib/fedux_org_stdlib/shell_language_detector.rb +21 -2
  77. data/lib/fedux_org_stdlib/shell_language_detector/language.rb +9 -1
  78. data/lib/fedux_org_stdlib/support_information.rb +60 -55
  79. data/lib/fedux_org_stdlib/template_directory.rb +8 -11
  80. data/lib/fedux_org_stdlib/version.rb +1 -1
  81. data/lib/fedux_org_stdlib/version_management/library_builder.rb +3 -2
  82. data/lib/fedux_org_stdlib/version_management/ruby_library.rb +2 -2
  83. data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +3 -3
  84. data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +5 -5
  85. data/lib/fedux_org_stdlib/version_management/software_version.rb +4 -3
  86. data/lib/fedux_org_stdlib/version_management/version_builder.rb +1 -0
  87. data/rakefiles/default.rake +16 -0
  88. data/script/terminal +5 -5
  89. data/spec/app_config_spec.rb +6 -6
  90. data/spec/colors/html_color_spec.rb +1 -1
  91. data/spec/core_ext/array/list_spec.rb +8 -8
  92. data/spec/core_ext/hash/options_spec.rb +17 -17
  93. data/spec/core_ext/shellwords/clean_spec.rb +1 -1
  94. data/spec/environment_spec.rb +7 -5
  95. data/spec/examples/models/class_based/invalid_2.rb +1 -1
  96. data/spec/examples/models/class_based/valid_2.rb +1 -0
  97. data/spec/gem_plugins/plugin_manager_spec.rb +1 -1
  98. data/spec/logger/logger_spec.rb +1 -1
  99. data/spec/models/base_model_spec.rb +22 -22
  100. data/spec/models/class_based_model_spec.rb +66 -66
  101. data/spec/models/filesystem_based_model_spec.rb +28 -28
  102. data/spec/project/plan_spec.rb +1 -1
  103. data/spec/project/report_spec.rb +2 -2
  104. data/spec/project/taskjuggler_spec.rb +4 -4
  105. data/spec/spec_helper.rb +1 -3
  106. data/spec/support/rspec.rb +1 -1
  107. data/spec/version_management/library_builder_spec.rb +2 -2
  108. data/spec/version_management/ruby_library_spec.rb +2 -2
  109. data/spec/version_management/rubygem_version_file_parser_spec.rb +8 -8
  110. data/spec/version_management/rubygem_version_file_spec.rb +8 -8
  111. data/spec/version_management/software_version_spec.rb +1 -1
  112. 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(verbose)
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{ json rake rake/tasklib shellwords active_support/core_ext/object/blank active_support/core_ext/string/inflections}
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? and running_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(verbose); end
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 get_binding
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 set_version(new_version)
40
- raise Exception, "You need to define a version via \"VERSION=<version>\" or \"version=<version>\"." if new_version.blank?
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
@@ -8,4 +8,3 @@ FeduxOrgStdlib::Rake::ShellTask.new(
8
8
  command: 'script/console',
9
9
  define_in_ci_mode: false
10
10
  )
11
-
@@ -4,7 +4,7 @@ require 'fedux_org_stdlib/ci'
4
4
 
5
5
  unless ci?
6
6
  require 'fedux_org_stdlib/require_files'
7
- require_library %w{ yard }
7
+ require_library %w(yard)
8
8
 
9
- YARD::Rake::YardocTask.new()
9
+ YARD::Rake::YardocTask.new
10
10
  end
@@ -4,6 +4,6 @@ require 'fedux_org_stdlib/ci'
4
4
 
5
5
  unless ci?
6
6
  namespace :gem do
7
- require_library %w{ bundler/gem_tasks }
7
+ require_library %w(bundler/gem_tasks)
8
8
  end
9
9
  end
@@ -4,6 +4,6 @@ require 'fedux_org_stdlib/ci'
4
4
 
5
5
  unless ci?
6
6
  namespace :gem do
7
- require_library %w{ rubygems/package_task }
7
+ require_library %w(rubygems/package_task)
8
8
  end
9
9
  end
@@ -3,8 +3,7 @@ require 'fedux_org_stdlib/rake/project_task'
3
3
 
4
4
  FeduxOrgStdlib::Rake::ProjectTask.new(
5
5
  name: 'project:report:generate',
6
- description: 'Generate report for project plan',
6
+ description: 'Generate report for project plan'
7
7
  ) do |t|
8
8
  t.report.generate
9
9
  end
10
-
@@ -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,5 +5,5 @@ require 'fedux_org_stdlib/rake_tasks/project/report/open'
5
5
  FeduxOrgStdlib::Rake::SubTask.new(
6
6
  name: 'project:report',
7
7
  description: 'Open report for generated project plan',
8
- sub_tasks: %w{ project:report:open },
8
+ sub_tasks: %w(project:report:open)
9
9
  )
@@ -9,5 +9,5 @@ FeduxOrgStdlib::Rake::ShellTask.new(
9
9
  description: 'Run rubocop',
10
10
  use_bundler: true,
11
11
  command: 'rubocop',
12
- define_in_ci_mode: false,
12
+ define_in_ci_mode: false
13
13
  )
@@ -9,5 +9,5 @@ FeduxOrgStdlib::Rake::ShellTask.new(
9
9
  description: 'Runs travis-lint to check .travis.yml',
10
10
  use_bundler: true,
11
11
  command: 'travis-lint',
12
- define_in_ci_mode: false,
12
+ define_in_ci_mode: false
13
13
  )
@@ -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.set_version ENV['VERSION'] || ENV['version'] }
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: "git checkout <%= version_file %>"
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 |t|
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
-
@@ -5,5 +5,5 @@ require 'fedux_org_stdlib/rake_tasks/software_version/show'
5
5
  FeduxOrgStdlib::Rake::SubTask.new(
6
6
  name: 'version',
7
7
  description: 'Show version',
8
- sub_tasks: %w{ version:show }
8
+ sub_tasks: %w(version:show)
9
9
  )
@@ -10,4 +10,3 @@ FeduxOrgStdlib::Rake::ShellTask.new(
10
10
  use_bundler: true,
11
11
  command: 'cucumber -p all'
12
12
  )
13
-
@@ -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{ test:rspec test:cucumber },
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(%r{/}).first }.uniq.to_list, caller[1].split(/:/)[0,2].join(':'))
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, message_template = 'You need to install %s to make "%s" work.')
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
- raise LoadError, JSON.dump(gems: gems) if gems.any? { |name| Gem::Specification.find_all_by_name(name).blank? }
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? and file.blank?
12
+ file = Dir.glob(paths.shift).first while !paths.blank? && file.blank?
12
13
 
13
- raise FeduxOrgStdlib::Rake::Exceptions::VersionFileNotFound, JSON.dump(message: 'Cannot find version file') unless file
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 if !e.nil? }
31
- language_code, country_code, encoding = *overwrite if !overwrite.blank? && overwrite.none? { |o| o.blank? }
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{ facter }
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("%s + %s", '-' * max_field_length, '-' * 40)
32
- result.concat system_information.sort_by { |key, value| key }.map { |key, value| format("%#{max_field_length}s | %s", key, value) }
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("%s + %s", '-' * max_field_length, '-' * 40)
43
- result.concat rubygems_information.sort_by { |key, value| key }.map { |key, value| format("%#{max_field_length}s | %s", key, value) }
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("%s + %s", '-' * max_field_length, '-' * 40)
54
- result.concat installed_rubygems.sort_by { |key, value| key }.map { |key, value| format("%#{max_field_length}s | %s", key, value) }
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::timeout(10) do
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.inject(0) { |memo, f| memo = f.size if f.size > memo ; memo}
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
- architecture
94
- filesystems
95
- hardwareisa
96
- hardwaremodel
97
- is_virtual
98
- kernel
99
- kernelmajversion
100
- kernelrelease
101
- kernelversion
102
- memoryfree
103
- memoryfree_mb
104
- memorysize
105
- memorysize_mb
106
- memorytotal
107
- operatingsystem
108
- operatingsystemrelease
109
- osfamily
110
- path
111
- physicalprocessorcount
112
- processor0
113
- processor1
114
- processorcount
115
- ps
116
- rubysitedir
117
- rubyversion
118
- selinux
119
- swapfree
120
- swapfree_mb
121
- swapsize
122
- swapsize_mb
123
- timezone
124
- uptime
125
- uptime_days
126
- uptime_hours
127
- uptime_seconds
128
- virtual
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