i18n-tasks 1.0.9 → 1.0.10
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/README.md +14 -1
- data/i18n-tasks.gemspec +7 -4
- data/lib/i18n/tasks/cli.rb +4 -4
- data/lib/i18n/tasks/command/options/common.rb +0 -1
- data/lib/i18n/tasks/command/options/data.rb +1 -1
- data/lib/i18n/tasks/configuration.rb +11 -6
- data/lib/i18n/tasks/data/adapter/yaml_adapter.rb +2 -2
- data/lib/i18n/tasks/data/file_formats.rb +1 -1
- data/lib/i18n/tasks/data/router/pattern_router.rb +1 -1
- data/lib/i18n/tasks/data/tree/node.rb +1 -1
- data/lib/i18n/tasks/data/tree/nodes.rb +5 -7
- data/lib/i18n/tasks/data/tree/siblings.rb +1 -1
- data/lib/i18n/tasks/html_keys.rb +2 -2
- data/lib/i18n/tasks/references.rb +2 -2
- data/lib/i18n/tasks/reports/base.rb +1 -1
- data/lib/i18n/tasks/reports/terminal.rb +2 -2
- data/lib/i18n/tasks/scanners/ast_matchers/base_matcher.rb +3 -3
- data/lib/i18n/tasks/scanners/pattern_mapper.rb +1 -1
- data/lib/i18n/tasks/scanners/pattern_scanner.rb +1 -1
- data/lib/i18n/tasks/scanners/relative_keys.rb +2 -2
- data/lib/i18n/tasks/scanners/results/occurrence.rb +1 -1
- data/lib/i18n/tasks/scanners/ruby_ast_scanner.rb +1 -2
- data/lib/i18n/tasks/scanners/ruby_key_literals.rb +2 -2
- data/lib/i18n/tasks/split_key.rb +1 -1
- data/lib/i18n/tasks/translators/base_translator.rb +1 -1
- data/lib/i18n/tasks/translators/deepl_translator.rb +2 -2
- data/lib/i18n/tasks/used_keys.rb +1 -1
- data/lib/i18n/tasks/version.rb +1 -1
- metadata +15 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1ae937151395c0958e2cab91b89bca5b4b97fb12d307940a9e75bb005f41e2e
|
4
|
+
data.tar.gz: 7dd9cbac5bc49401c15df858adae478c63d49f69e91c3a34b8ee7732793efb4c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b918580b7971a2843bf170277195e9bb59019b2040d2a8403f400ef41e718b25d5545b29a2b8b34f050db753d2f9067bc9a8b892c3b2c491403d80ecf0dfab6
|
7
|
+
data.tar.gz: 254c3e547b8d06b684900f1dc3551ed1f52079a6623e5f572fb9bf9ec31c4eaa30b43eb9b2e0aeecd5287b69643a0ed23976bdd8886b42c5b7625bf879fb62ab
|
data/README.md
CHANGED
@@ -24,7 +24,7 @@ i18n-tasks can be used with any project using the ruby [i18n gem][i18n-gem] (def
|
|
24
24
|
Add i18n-tasks to the Gemfile:
|
25
25
|
|
26
26
|
```ruby
|
27
|
-
gem 'i18n-tasks', '~> 1.0.
|
27
|
+
gem 'i18n-tasks', '~> 1.0.10'
|
28
28
|
```
|
29
29
|
|
30
30
|
Copy the default [configuration file](#configuration):
|
@@ -436,6 +436,18 @@ See [i18n-tasks wiki: CSV import and export tasks](https://github.com/glebm/i18n
|
|
436
436
|
Tasks that come with the gem are defined in [lib/i18n/tasks/command/commands](lib/i18n/tasks/command/commands).
|
437
437
|
Custom tasks can be added easily, see the examples [on the wiki](https://github.com/glebm/i18n-tasks/wiki#custom-tasks).
|
438
438
|
|
439
|
+
# Development
|
440
|
+
|
441
|
+
- Install dependencies using `bundle install`
|
442
|
+
- Run tests using `bundle exec rspec`
|
443
|
+
- Install [Overcommit](overcommit) by running `overcommit --install`
|
444
|
+
|
445
|
+
## Skip Overcommit-hooks
|
446
|
+
|
447
|
+
- `SKIP=RuboCop git commit`
|
448
|
+
- `OVERCOMMIT_DISABLE=1 git commit`
|
449
|
+
|
450
|
+
|
439
451
|
[MIT license]: /LICENSE.txt
|
440
452
|
[ci]: https://github.com/glebm/i18n-tasks/actions/workflows/tests.yml
|
441
453
|
[badge-ci]: https://github.com/glebm/i18n-tasks/actions/workflows/tests.yml/badge.svg
|
@@ -448,3 +460,4 @@ Custom tasks can be added easily, see the examples [on the wiki](https://github.
|
|
448
460
|
[screenshot-find]: https://i.imgur.com/VxBrSfY.png "i18n-tasks find output screenshot"
|
449
461
|
[adapter-example]: https://github.com/glebm/i18n-tasks/blob/main/lib/i18n/tasks/data/file_system_base.rb
|
450
462
|
[custom-scanner-docs]: https://github.com/glebm/i18n-tasks/wiki/A-custom-scanner-example
|
463
|
+
[overcommit]: https://github.com/sds/overcommit#installation
|
data/i18n-tasks.gemspec
CHANGED
@@ -24,8 +24,11 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength
|
|
24
24
|
cp $(bundle exec i18n-tasks gem-path)/templates/rspec/i18n_spec.rb spec/
|
25
25
|
TEXT
|
26
26
|
s.homepage = 'https://github.com/glebm/i18n-tasks'
|
27
|
-
s.metadata = {
|
28
|
-
|
27
|
+
s.metadata = {
|
28
|
+
'issue_tracker' => 'https://github.com/glebm/i18n-tasks',
|
29
|
+
'rubygems_mfa_required' => 'true'
|
30
|
+
}
|
31
|
+
s.required_ruby_version = '>= 2.6', '< 4.0'
|
29
32
|
|
30
33
|
s.files = `git ls-files`.split($/)
|
31
34
|
s.files -= s.files.grep(%r{^(doc/|\.|spec/)}) + %w[CHANGES.md config/i18n-tasks.yml Gemfile]
|
@@ -43,11 +46,11 @@ Gem::Specification.new do |s| # rubocop:disable Metrics/BlockLength
|
|
43
46
|
s.add_dependency 'rails-i18n'
|
44
47
|
s.add_dependency 'rainbow', '>= 2.2.2', '< 4.0'
|
45
48
|
s.add_dependency 'terminal-table', '>= 1.5.1'
|
46
|
-
s.add_development_dependency 'axlsx', '~> 2.0'
|
47
49
|
s.add_development_dependency 'bundler', '~> 2.0', '>= 2.0.1'
|
50
|
+
s.add_development_dependency 'overcommit', '~> 0.58.0'
|
48
51
|
s.add_development_dependency 'rake'
|
49
52
|
s.add_development_dependency 'rspec', '~> 3.3'
|
50
|
-
s.add_development_dependency 'rubocop', '~> 1.
|
53
|
+
s.add_development_dependency 'rubocop', '~> 1.27.0'
|
51
54
|
s.add_development_dependency 'simplecov'
|
52
55
|
s.add_development_dependency 'yard'
|
53
56
|
|
data/lib/i18n/tasks/cli.rb
CHANGED
@@ -35,12 +35,12 @@ class I18n::Tasks::CLI
|
|
35
35
|
|
36
36
|
def run(argv)
|
37
37
|
argv.each_with_index do |arg, i|
|
38
|
-
if [
|
39
|
-
if File.exist?(argv[i+1])
|
40
|
-
@config_file = argv[i+1]
|
38
|
+
if ['--config', '-c'].include?(arg)
|
39
|
+
if File.exist?(argv[i + 1])
|
40
|
+
@config_file = argv[i + 1]
|
41
41
|
break
|
42
42
|
else
|
43
|
-
error "Config file doesn't exist: #{argv[i+1]}", 128
|
43
|
+
error "Config file doesn't exist: #{argv[i + 1]}", 128
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
@@ -86,7 +86,7 @@ module I18n::Tasks
|
|
86
86
|
when 'keys'
|
87
87
|
puts forest.key_names(root: true)
|
88
88
|
when 'key-values'
|
89
|
-
puts
|
89
|
+
puts(forest.key_values(root: true).map { |kv| kv.join("\t") })
|
90
90
|
when *DATA_FORMATS
|
91
91
|
puts i18n.data.adapter_dump forest.to_hash(true), format
|
92
92
|
end
|
@@ -30,6 +30,13 @@ module I18n::Tasks::Configuration # rubocop:disable Metrics/ModuleLength
|
|
30
30
|
warn_deprecated 'Please move relative_roots under search in config/i18n-tasks.yml.'
|
31
31
|
c[:search][:relative_roots] = c.delete(:relative_roots)
|
32
32
|
end
|
33
|
+
|
34
|
+
if c.dig(:search, :exclude_method_name_paths)
|
35
|
+
warn_deprecated(
|
36
|
+
'Please rename exclude_method_name_paths to relative_exclude_method_name_paths in config/i18n-tasks.yml.'
|
37
|
+
)
|
38
|
+
c[:search][:relative_exclude_method_name_paths] = c[:search].delete(:exclude_method_name_paths)
|
39
|
+
end
|
33
40
|
end
|
34
41
|
else
|
35
42
|
{}.with_indifferent_access
|
@@ -44,12 +51,10 @@ module I18n::Tasks::Configuration # rubocop:disable Metrics/ModuleLength
|
|
44
51
|
# data config
|
45
52
|
# @return [Hash<adapter: String, options: Hash>]
|
46
53
|
def data_config
|
47
|
-
@config_sections[:data] ||=
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
}
|
52
|
-
end
|
54
|
+
@config_sections[:data] ||= {
|
55
|
+
adapter: data.class.name,
|
56
|
+
config: data.config
|
57
|
+
}
|
53
58
|
end
|
54
59
|
|
55
60
|
# translation config
|
@@ -5,7 +5,7 @@ module I18n::Tasks
|
|
5
5
|
module Data
|
6
6
|
module Adapter
|
7
7
|
module YamlAdapter
|
8
|
-
EMOJI_REGEX = /\\u[\da-f]{8}/i
|
8
|
+
EMOJI_REGEX = /\\u[\da-f]{8}/i.freeze
|
9
9
|
|
10
10
|
class << self
|
11
11
|
# @return [Hash] locale tree
|
@@ -25,7 +25,7 @@ module I18n::Tasks
|
|
25
25
|
|
26
26
|
# @return [String]
|
27
27
|
def restore_emojis(yaml)
|
28
|
-
yaml.gsub(EMOJI_REGEX) { |m| [m[-8..].to_i(16)].pack(
|
28
|
+
yaml.gsub(EMOJI_REGEX) { |m| [m[-8..].to_i(16)].pack('U') }
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -38,7 +38,7 @@ module I18n::Tasks
|
|
38
38
|
if pattern
|
39
39
|
key_match = $~
|
40
40
|
path = format(path, locale: locale)
|
41
|
-
path.gsub!(/\\\d+/) { |m| key_match[m[1
|
41
|
+
path.gsub!(/\\\d+/) { |m| key_match[m[1..].to_i] }
|
42
42
|
(out[path] ||= Set.new) << "#{locale}.#{key}"
|
43
43
|
else
|
44
44
|
fail CommandError, "Cannot route key #{key}. Routes are #{@routes_config.inspect}"
|
@@ -168,7 +168,7 @@ module I18n::Tasks::Data::Tree
|
|
168
168
|
label = if key.nil?
|
169
169
|
Rainbow('∅').faint
|
170
170
|
else
|
171
|
-
[Rainbow(key).color(1 + level % 15),
|
171
|
+
[Rainbow(key).color(1 + (level % 15)),
|
172
172
|
(": #{format_value_for_inspect(value)}" if leaf?),
|
173
173
|
(" #{data}" if data?)].compact.join
|
174
174
|
end
|
@@ -31,13 +31,11 @@ module I18n::Tasks::Data::Tree
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def to_hash(sort = false)
|
34
|
-
(@hash ||= {})[sort] ||=
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end.map { |node| node.to_hash(sort) }.reduce({}, :deep_merge!)
|
40
|
-
end
|
34
|
+
(@hash ||= {})[sort] ||= if sort
|
35
|
+
sort_by(&:key)
|
36
|
+
else
|
37
|
+
self
|
38
|
+
end.map { |node| node.to_hash(sort) }.reduce({}, :deep_merge!)
|
41
39
|
end
|
42
40
|
|
43
41
|
delegate :to_json, to: :to_hash
|
@@ -50,7 +50,7 @@ module I18n::Tasks::Data::Tree
|
|
50
50
|
next
|
51
51
|
end
|
52
52
|
match = $~
|
53
|
-
new_key = to_pattern.gsub(/\\\d+/) { |m| match[m[1
|
53
|
+
new_key = to_pattern.gsub(/\\\d+/) { |m| match[m[1..].to_i] }
|
54
54
|
old_key_to_new_key[full_key] = new_key
|
55
55
|
moved_forest.merge!(Siblings.new.tap do |forest|
|
56
56
|
forest[[(node.root.try(:key) unless root), new_key].compact.join('.')] =
|
data/lib/i18n/tasks/html_keys.rb
CHANGED
@@ -7,8 +7,8 @@ module I18n::Tasks
|
|
7
7
|
|
8
8
|
def html_key?(full_key, locale)
|
9
9
|
!!(full_key =~ HTML_KEY_PATTERN ||
|
10
|
-
full_key =~ MAYBE_PLURAL_HTML_KEY_PATTERN &&
|
11
|
-
depluralize_key(split_key(full_key, 2)[1], locale) =~ HTML_KEY_PATTERN)
|
10
|
+
(full_key =~ MAYBE_PLURAL_HTML_KEY_PATTERN &&
|
11
|
+
depluralize_key(split_key(full_key, 2)[1], locale) =~ HTML_KEY_PATTERN))
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
@@ -91,8 +91,8 @@ module I18n::Tasks
|
|
91
91
|
if node.value != other.value
|
92
92
|
log_warn(
|
93
93
|
'Conflicting references: '\
|
94
|
-
|
95
|
-
|
94
|
+
"#{node.full_key(root: false)} ⮕ #{node.value} in #{node.data[:locale]},"\
|
95
|
+
" but ⮕ #{other.value} in #{other.data[:locale]}"
|
96
96
|
)
|
97
97
|
end
|
98
98
|
end
|
@@ -37,7 +37,7 @@ module I18n::Tasks::Reports
|
|
37
37
|
def used_title(keys_nodes, filter)
|
38
38
|
used_n = keys_nodes.map { |_k, node| node.data[:occurrences].size }.reduce(:+).to_i
|
39
39
|
"#{keys_nodes.size} key#{'s' if keys_nodes.size != 1}#{" matching '#{filter}'" if filter}"\
|
40
|
-
|
40
|
+
"#{" (#{used_n} usage#{'s' if used_n != 1})" if used_n.positive?}"
|
41
41
|
end
|
42
42
|
|
43
43
|
# Sort keys by their attributes in order
|
@@ -121,9 +121,9 @@ module I18n
|
|
121
121
|
if data[:ref_info]
|
122
122
|
from, to = data[:ref_info]
|
123
123
|
resolved = key[0...to.length]
|
124
|
-
after = key[to.length
|
124
|
+
after = key[to.length..]
|
125
125
|
" #{Rainbow(from).yellow}#{Rainbow(after).cyan}\n" \
|
126
|
-
|
126
|
+
"#{Rainbow('⮕').yellow.bright} #{Rainbow(resolved).yellow.bright}"
|
127
127
|
else
|
128
128
|
Rainbow(key).cyan
|
129
129
|
end
|
@@ -6,8 +6,8 @@ module I18n::Tasks::Scanners::AstMatchers
|
|
6
6
|
@scanner = scanner
|
7
7
|
end
|
8
8
|
|
9
|
-
def convert_to_key_occurrences(send_node,
|
10
|
-
|
9
|
+
def convert_to_key_occurrences(send_node, _method_name, location: send_node.loc)
|
10
|
+
fail('Not implemented')
|
11
11
|
end
|
12
12
|
|
13
13
|
protected
|
@@ -24,7 +24,7 @@ module I18n::Tasks::Scanners::AstMatchers
|
|
24
24
|
# No effect unless `array_join_with` is set.
|
25
25
|
# @return [String, nil] `nil` is returned only when a dynamic value is encountered in strict mode
|
26
26
|
# or the node type is not supported.
|
27
|
-
def extract_string(node, array_join_with: nil, array_flatten: false, array_reject_blank: false)
|
27
|
+
def extract_string(node, array_join_with: nil, array_flatten: false, array_reject_blank: false) # rubocop:disable Metrics/AbcSize, Metrics/PerceivedComplexity
|
28
28
|
return if node.nil?
|
29
29
|
|
30
30
|
if %i[sym str int].include?(node.type)
|
@@ -35,7 +35,7 @@ module I18n::Tasks::Scanners
|
|
35
35
|
result = []
|
36
36
|
text.scan(pattern) do |_|
|
37
37
|
match = Regexp.last_match
|
38
|
-
matches =
|
38
|
+
matches = match.names.map(&:to_sym).zip(match.captures).to_h
|
39
39
|
if matches.key?(:key)
|
40
40
|
matches[:key] = strip_literal(matches[:key])
|
41
41
|
next unless valid_key?(matches[:key])
|
@@ -10,7 +10,7 @@ module I18n
|
|
10
10
|
# @param calling_method [#call, Symbol, String, false, nil]
|
11
11
|
# @return [String] absolute version of the key
|
12
12
|
def absolute_key(key, path, roots: config[:relative_roots],
|
13
|
-
exclude_method_name_paths: config[:
|
13
|
+
exclude_method_name_paths: config[:relative_exclude_method_name_paths],
|
14
14
|
calling_method: nil)
|
15
15
|
return key unless key.start_with?(DOT)
|
16
16
|
fail 'roots argument is required' unless roots.present?
|
@@ -18,7 +18,7 @@ module I18n
|
|
18
18
|
normalized_path = File.expand_path(path)
|
19
19
|
(root = path_root(normalized_path, roots)) ||
|
20
20
|
fail(CommandError, "Cannot resolve relative key \"#{key}\".\n" \
|
21
|
-
|
21
|
+
"Set search.relative_roots in config/i18n-tasks.yml (currently #{roots.inspect})")
|
22
22
|
normalized_path.sub!(root, '')
|
23
23
|
|
24
24
|
if (exclude_method_name_paths || []).map { |p| expand_path(p) }.include?(root)
|
@@ -48,7 +48,7 @@ module I18n::Tasks
|
|
48
48
|
# rubocop:enable Metrics/ParameterLists
|
49
49
|
|
50
50
|
def inspect
|
51
|
-
"Occurrence(#{@path}:#{@line_num}, line_pos: #{@line_pos}, pos: #{@pos}, raw_key: #{@raw_key}, default_arg: #{@default_arg}, line: #{@line})"
|
51
|
+
"Occurrence(#{@path}:#{@line_num}, line_pos: #{@line_pos}, pos: #{@pos}, raw_key: #{@raw_key}, default_arg: #{@default_arg}, line: #{@line})" # rubocop:disable Layout/LineLength
|
52
52
|
end
|
53
53
|
|
54
54
|
def ==(other)
|
@@ -68,8 +68,7 @@ module I18n::Tasks::Scanners
|
|
68
68
|
def comments_to_occurences(path, ast, comments)
|
69
69
|
magic_comments = comments.select { |comment| comment.text =~ MAGIC_COMMENT_PREFIX }
|
70
70
|
comment_to_node = Parser::Source::Comment.associate_locations(ast, magic_comments).tap do |h|
|
71
|
-
|
72
|
-
h.each { |k, v| h[k] = v.first }
|
71
|
+
h.transform_values!(&:first)
|
73
72
|
end.invert
|
74
73
|
|
75
74
|
magic_comments.flat_map do |comment|
|
@@ -15,12 +15,12 @@ module I18n::Tasks::Scanners
|
|
15
15
|
# @param literal [String] e.g: "key", 'key', or :key.
|
16
16
|
# @return [String] key
|
17
17
|
def strip_literal(literal)
|
18
|
-
literal = literal[1
|
18
|
+
literal = literal[1..] if literal[0] == ':'
|
19
19
|
literal = literal[1..-2] if literal[0] == "'" || literal[0] == '"'
|
20
20
|
literal
|
21
21
|
end
|
22
22
|
|
23
|
-
VALID_KEY_CHARS =
|
23
|
+
VALID_KEY_CHARS = %r{(?:[[:word:]]|[-.?!:;À-ž/])}.freeze
|
24
24
|
VALID_KEY_RE = /^#{VALID_KEY_CHARS}+$/.freeze
|
25
25
|
|
26
26
|
def valid_key?(key)
|
data/lib/i18n/tasks/split_key.rb
CHANGED
@@ -114,7 +114,7 @@ module I18n::Tasks
|
|
114
114
|
|
115
115
|
values = untranslated.scan(INTERPOLATION_KEY_RE)
|
116
116
|
translated.gsub(/#{Regexp.escape(UNTRANSLATABLE_STRING)}\d+/i) do |m|
|
117
|
-
values[m[UNTRANSLATABLE_STRING.length
|
117
|
+
values[m[UNTRANSLATABLE_STRING.length..].to_i]
|
118
118
|
end
|
119
119
|
rescue StandardError => e
|
120
120
|
raise_interpolation_error(untranslated, translated, e)
|
@@ -71,11 +71,11 @@ module I18n::Tasks::Translators
|
|
71
71
|
version = @i18n_tasks.translation_config[:deepl_version]
|
72
72
|
fail ::I18n::Tasks::CommandError, I18n.t('i18n_tasks.deepl_translate.errors.no_api_key') if api_key.blank?
|
73
73
|
|
74
|
-
DeepL.configure
|
74
|
+
DeepL.configure do |config|
|
75
75
|
config.auth_key = api_key
|
76
76
|
config.host = host unless host.blank?
|
77
77
|
config.version = version unless version.blank?
|
78
|
-
|
78
|
+
end
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
data/lib/i18n/tasks/used_keys.rb
CHANGED
data/lib/i18n/tasks/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: i18n-tasks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- glebm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -157,12 +157,15 @@ dependencies:
|
|
157
157
|
- !ruby/object:Gem::Version
|
158
158
|
version: 1.5.1
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
160
|
+
name: bundler
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
165
|
version: '2.0'
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: 2.0.1
|
166
169
|
type: :development
|
167
170
|
prerelease: false
|
168
171
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -170,26 +173,23 @@ dependencies:
|
|
170
173
|
- - "~>"
|
171
174
|
- !ruby/object:Gem::Version
|
172
175
|
version: '2.0'
|
176
|
+
- - ">="
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: 2.0.1
|
173
179
|
- !ruby/object:Gem::Dependency
|
174
|
-
name:
|
180
|
+
name: overcommit
|
175
181
|
requirement: !ruby/object:Gem::Requirement
|
176
182
|
requirements:
|
177
183
|
- - "~>"
|
178
184
|
- !ruby/object:Gem::Version
|
179
|
-
version:
|
180
|
-
- - ">="
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
version: 2.0.1
|
185
|
+
version: 0.58.0
|
183
186
|
type: :development
|
184
187
|
prerelease: false
|
185
188
|
version_requirements: !ruby/object:Gem::Requirement
|
186
189
|
requirements:
|
187
190
|
- - "~>"
|
188
191
|
- !ruby/object:Gem::Version
|
189
|
-
version:
|
190
|
-
- - ">="
|
191
|
-
- !ruby/object:Gem::Version
|
192
|
-
version: 2.0.1
|
192
|
+
version: 0.58.0
|
193
193
|
- !ruby/object:Gem::Dependency
|
194
194
|
name: rake
|
195
195
|
requirement: !ruby/object:Gem::Requirement
|
@@ -224,14 +224,14 @@ dependencies:
|
|
224
224
|
requirements:
|
225
225
|
- - "~>"
|
226
226
|
- !ruby/object:Gem::Version
|
227
|
-
version: 1.
|
227
|
+
version: 1.27.0
|
228
228
|
type: :development
|
229
229
|
prerelease: false
|
230
230
|
version_requirements: !ruby/object:Gem::Requirement
|
231
231
|
requirements:
|
232
232
|
- - "~>"
|
233
233
|
- !ruby/object:Gem::Version
|
234
|
-
version: 1.
|
234
|
+
version: 1.27.0
|
235
235
|
- !ruby/object:Gem::Dependency
|
236
236
|
name: simplecov
|
237
237
|
requirement: !ruby/object:Gem::Requirement
|
@@ -414,6 +414,7 @@ licenses:
|
|
414
414
|
- MIT
|
415
415
|
metadata:
|
416
416
|
issue_tracker: https://github.com/glebm/i18n-tasks
|
417
|
+
rubygems_mfa_required: 'true'
|
417
418
|
post_install_message: |
|
418
419
|
# Install default configuration:
|
419
420
|
cp $(bundle exec i18n-tasks gem-path)/templates/config/i18n-tasks.yml config/
|