lois 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +11 -11
- data/README.md +5 -0
- data/bin/i18n-tasks +29 -0
- data/config/i18n-tasks.yml +133 -0
- data/lib/lois/ci/travis.rb +1 -1
- data/lib/lois/cli.rb +24 -0
- data/lib/lois/version.rb +1 -1
- data/lois.gemspec +2 -1
- metadata +17 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c13a021299827c59af7e05aad3dc9f372c875a0011838d6201f8cffa134f8625
|
4
|
+
data.tar.gz: ba95fc6c1c3c749dbbdf57a31d99542d581eb963477ba9e84e47be801e94d7fa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0259ae1363000c995fe8f595b7f53256b991a19ee80c06f0a0f003b3c4578de78d8c783f292088292d35020a2240ee35262509461e32d0dc1c79e05a956a514a'
|
7
|
+
data.tar.gz: 4a461927242ea5c90b3ce82af87bb74df7aa37739de3cd6b845373ae79af946eb2f2acffa0fbe15e4584b6b7f7782715ae8611fb23bb0ab3b650cea7cc4ab132
|
data/.circleci/config.yml
CHANGED
@@ -7,14 +7,9 @@ jobs:
|
|
7
7
|
build:
|
8
8
|
docker:
|
9
9
|
# specify the version you desire here
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
# Specify service dependencies here if necessary
|
15
|
-
# CircleCI maintains a library of pre-built images
|
16
|
-
# documented at https://circleci.com/docs/2.0/circleci-images/
|
17
|
-
# - image: circleci/postgres:9.4
|
10
|
+
- image: circleci/ruby:2.6.3
|
11
|
+
environment:
|
12
|
+
COVERAGE: true
|
18
13
|
|
19
14
|
working_directory: ~/repo
|
20
15
|
|
@@ -24,9 +19,9 @@ jobs:
|
|
24
19
|
# Download and cache dependencies
|
25
20
|
- restore_cache:
|
26
21
|
keys:
|
27
|
-
|
28
|
-
|
29
|
-
|
22
|
+
- v2-dependencies-{{ checksum "lois.gemspec" }}
|
23
|
+
# fallback to using the latest cache if no exact match is found
|
24
|
+
- v2-dependencies-
|
30
25
|
|
31
26
|
- run:
|
32
27
|
name: install dependencies
|
@@ -44,6 +39,11 @@ jobs:
|
|
44
39
|
command: |
|
45
40
|
bin/rake install
|
46
41
|
|
42
|
+
- run:
|
43
|
+
name: i18n-tasks
|
44
|
+
command: |
|
45
|
+
lois i18n-tasks -g $GITHUB_CREDENTIALS -c circleci
|
46
|
+
|
47
47
|
- run:
|
48
48
|
name: Bundler-Audit
|
49
49
|
command: |
|
data/README.md
CHANGED
@@ -30,6 +30,7 @@ Commands:
|
|
30
30
|
lois reek -g, --github-credentials=GITHUB_CREDENTIALS # Run reek
|
31
31
|
lois rubocop -g, --github-credentials=GITHUB_CREDENTIALS # Run Rubocop
|
32
32
|
lois simplecov -g, --github-credentials=GITHUB_CREDENTIALS # Run simplecov
|
33
|
+
lois i18n-tasks -g, --github-credentials=GITHUB_CREDENTIALS # Run i18n-tasks
|
33
34
|
```
|
34
35
|
|
35
36
|
Lois has commands to run and report ruby quality metrics to GitHub PR Statuses. All it requires is
|
@@ -62,6 +63,10 @@ A sample `.circleci/config.yml` would look like:
|
|
62
63
|
- run:
|
63
64
|
name: Reek
|
64
65
|
command: bundle exec lois reek -c circleci -g $GITHUB_CREDENTIALS
|
66
|
+
|
67
|
+
- run:
|
68
|
+
name: i18n-tasks
|
69
|
+
command: bundle exec lois i18n-tasks -c circleci -g $GITHUB_CREDENTIALS
|
65
70
|
|
66
71
|
- store_artifacts:
|
67
72
|
path: lois
|
data/bin/i18n-tasks
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
#
|
5
|
+
# This file was generated by Bundler.
|
6
|
+
#
|
7
|
+
# The application 'i18n-tasks' is installed as part of a gem, and
|
8
|
+
# this file is here to facilitate running it.
|
9
|
+
#
|
10
|
+
|
11
|
+
require 'pathname'
|
12
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
|
13
|
+
Pathname.new(__FILE__).realpath)
|
14
|
+
|
15
|
+
bundle_binstub = File.expand_path('bundle', __dir__)
|
16
|
+
|
17
|
+
if File.file?(bundle_binstub)
|
18
|
+
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
|
19
|
+
load(bundle_binstub)
|
20
|
+
else
|
21
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
22
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
require 'rubygems'
|
27
|
+
require 'bundler/setup'
|
28
|
+
|
29
|
+
load Gem.bin_path('i18n-tasks', 'i18n-tasks')
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# i18n-tasks finds and manages missing and unused translations: https://github.com/glebm/i18n-tasks
|
2
|
+
|
3
|
+
# The "main" locale.
|
4
|
+
base_locale: en
|
5
|
+
## All available locales are inferred from the data by default. Alternatively, specify them explicitly:
|
6
|
+
# locales: [es, fr]
|
7
|
+
## Reporting locale, default: en. Available: en, ru.
|
8
|
+
# internal_locale: en
|
9
|
+
|
10
|
+
# Read and write translations.
|
11
|
+
data:
|
12
|
+
## Translations are read from the file system. Supported format: YAML, JSON.
|
13
|
+
## Provide a custom adapter:
|
14
|
+
# adapter: I18n::Tasks::Data::FileSystem
|
15
|
+
|
16
|
+
# Locale files or `File.find` patterns where translations are read from:
|
17
|
+
read:
|
18
|
+
## Default:
|
19
|
+
- spec/locales/%{locale}.yml
|
20
|
+
## More files:
|
21
|
+
# - config/locales/**/*.%{locale}.yml
|
22
|
+
|
23
|
+
# Locale files to write new keys to, based on a list of key pattern => file rules. Matched from top to bottom:
|
24
|
+
# `i18n-tasks normalize -p` will force move the keys according to these rules
|
25
|
+
write:
|
26
|
+
## For example, write devise and simple form keys to their respective files:
|
27
|
+
# - ['{devise, simple_form}.*', 'config/locales/\1.%{locale}.yml']
|
28
|
+
## Catch-all default:
|
29
|
+
# - config/locales/%{locale}.yml
|
30
|
+
|
31
|
+
# External locale data (e.g. gems).
|
32
|
+
# This data is not considered unused and is never written to.
|
33
|
+
external:
|
34
|
+
## Example (replace %#= with %=):
|
35
|
+
# - "<%#= %x[bundle show vagrant].chomp %>/templates/locales/%{locale}.yml"
|
36
|
+
|
37
|
+
## Specify the router (see Readme for details). Valid values: conservative_router, pattern_router, or a custom class.
|
38
|
+
# router: conservative_router
|
39
|
+
|
40
|
+
yaml:
|
41
|
+
write:
|
42
|
+
# do not wrap lines at 80 characters
|
43
|
+
line_width: -1
|
44
|
+
|
45
|
+
## Pretty-print JSON:
|
46
|
+
# json:
|
47
|
+
# write:
|
48
|
+
# indent: ' '
|
49
|
+
# space: ' '
|
50
|
+
# object_nl: "\n"
|
51
|
+
# array_nl: "\n"
|
52
|
+
|
53
|
+
# Find translate calls
|
54
|
+
search:
|
55
|
+
## Paths or `File.find` patterns to search in:
|
56
|
+
paths:
|
57
|
+
- spec/dummy_app/
|
58
|
+
|
59
|
+
## Root directories for relative keys resolution.
|
60
|
+
# relative_roots:
|
61
|
+
# - app/controllers
|
62
|
+
# - app/helpers
|
63
|
+
# - app/mailers
|
64
|
+
# - app/presenters
|
65
|
+
# - app/views
|
66
|
+
|
67
|
+
## Files or `File.fnmatch` patterns to exclude from search. Some files are always excluded regardless of this setting:
|
68
|
+
## %w(*.jpg *.png *.gif *.svg *.ico *.eot *.otf *.ttf *.woff *.woff2 *.pdf *.css *.sass *.scss *.less *.yml *.json)
|
69
|
+
exclude:
|
70
|
+
- app/assets/images
|
71
|
+
- app/assets/fonts
|
72
|
+
- app/assets/videos
|
73
|
+
|
74
|
+
## Alternatively, the only files or `File.fnmatch patterns` to search in `paths`:
|
75
|
+
## If specified, this settings takes priority over `exclude`, but `exclude` still applies.
|
76
|
+
# only: ["*.rb", "*.html.slim"]
|
77
|
+
|
78
|
+
## If `strict` is `false`, guess usages such as t("categories.#{category}.title"). The default is `true`.
|
79
|
+
# strict: true
|
80
|
+
|
81
|
+
## Multiple scanners can be used. Their results are merged.
|
82
|
+
## The options specified above are passed down to each scanner. Per-scanner options can be specified as well.
|
83
|
+
## See this example of a custom scanner: https://github.com/glebm/i18n-tasks/wiki/A-custom-scanner-example
|
84
|
+
|
85
|
+
## Translation Services
|
86
|
+
# translation:
|
87
|
+
# # Google Translate
|
88
|
+
# # Get an API key and set billing info at https://code.google.com/apis/console to use Google Translate
|
89
|
+
# google_translate_api_key: "AbC-dEf5"
|
90
|
+
# # DeepL Pro Translate
|
91
|
+
# # Get an API key and subscription at https://www.deepl.com/pro to use DeepL Pro
|
92
|
+
# deepl_api_key: "48E92789-57A3-466A-9959-1A1A1A1A1A1A"
|
93
|
+
|
94
|
+
## Do not consider these keys missing:
|
95
|
+
# ignore_missing:
|
96
|
+
# - 'errors.messages.{accepted,blank,invalid,too_short,too_long}'
|
97
|
+
# - '{devise,simple_form}.*'
|
98
|
+
|
99
|
+
## Consider these keys used:
|
100
|
+
# ignore_unused:
|
101
|
+
# - 'activerecord.attributes.*'
|
102
|
+
# - '{devise,kaminari,will_paginate}.*'
|
103
|
+
# - 'simple_form.{yes,no}'
|
104
|
+
# - 'simple_form.{placeholders,hints,labels}.*'
|
105
|
+
# - 'simple_form.{error_notification,required}.:'
|
106
|
+
|
107
|
+
## Exclude these keys from the `i18n-tasks eq-base' report:
|
108
|
+
# ignore_eq_base:
|
109
|
+
# all:
|
110
|
+
# - common.ok
|
111
|
+
# fr,es:
|
112
|
+
# - common.brand
|
113
|
+
|
114
|
+
## Exclude these keys from the `i18n-tasks check-consistent-interpolations` report:
|
115
|
+
# ignore_inconsistent_interpolations:
|
116
|
+
# - 'activerecord.attributes.*'
|
117
|
+
|
118
|
+
## Ignore these keys completely:
|
119
|
+
# ignore:
|
120
|
+
# - kaminari.*
|
121
|
+
|
122
|
+
## Sometimes, it isn't possible for i18n-tasks to match the key correctly,
|
123
|
+
## e.g. in case of a relative key defined in a helper method.
|
124
|
+
## In these cases you can use the built-in PatternMapper to map patterns to keys, e.g.:
|
125
|
+
#
|
126
|
+
# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
|
127
|
+
# only: %w(*.html.haml *.html.slim),
|
128
|
+
# patterns: [['= title\b', '.page_title']] %>
|
129
|
+
#
|
130
|
+
# The PatternMapper can also match key literals via a special %{key} interpolation, e.g.:
|
131
|
+
#
|
132
|
+
# <%# I18n::Tasks.add_scanner 'I18n::Tasks::Scanners::PatternMapper',
|
133
|
+
# patterns: [['\bSpree\.t[( ]\s*%{key}', 'spree.%{key}']] %>
|
data/lib/lois/ci/travis.rb
CHANGED
data/lib/lois/cli.rb
CHANGED
@@ -2,6 +2,30 @@ require 'thor'
|
|
2
2
|
|
3
3
|
module Lois
|
4
4
|
class CLI < Thor
|
5
|
+
desc 'i18n-tasks', 'Run i18n-tasks'
|
6
|
+
method_option :github_credentials,
|
7
|
+
aliases: '-g',
|
8
|
+
required: true,
|
9
|
+
desc: 'Github credentials to log PR Status.'
|
10
|
+
method_option :ci,
|
11
|
+
default: 'circleci',
|
12
|
+
aliases: '-c',
|
13
|
+
desc: 'CI to load env vars from.'
|
14
|
+
method_option :locale,
|
15
|
+
default: nil,
|
16
|
+
aliases: '-l',
|
17
|
+
desc: 'Specific locale to validate'
|
18
|
+
def i18n_tasks
|
19
|
+
puts 'Checking i18n-tasks'
|
20
|
+
configure(options)
|
21
|
+
locale_param = (" -l #{options[:locale]}" if options[:locale].to_s.length.positive?)
|
22
|
+
if system("i18n-tasks health#{locale_param}")
|
23
|
+
Lois.config.github.success('i18n-tasks', 'The translation files are healthy.')
|
24
|
+
else
|
25
|
+
Lois.config.github.failure('i18n-tasks', 'The translation files are not healthy')
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
5
29
|
desc 'rubocop', 'Run Rubocop'
|
6
30
|
method_option :github_credentials,
|
7
31
|
aliases: '-g',
|
data/lib/lois/version.rb
CHANGED
data/lois.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'lois/version'
|
4
4
|
|
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.add_dependency 'brakeman'
|
33
33
|
spec.add_dependency 'bundler-audit'
|
34
34
|
spec.add_dependency 'httparty'
|
35
|
+
spec.add_dependency 'i18n-tasks'
|
35
36
|
spec.add_dependency 'reek'
|
36
37
|
spec.add_dependency 'rubocop'
|
37
38
|
spec.add_dependency 'simplecov'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lois
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Hansen
|
@@ -178,6 +178,20 @@ dependencies:
|
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: i18n-tasks
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: reek
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -256,11 +270,13 @@ files:
|
|
256
270
|
- bin/bundler-audit
|
257
271
|
- bin/code_climate_reek
|
258
272
|
- bin/console
|
273
|
+
- bin/i18n-tasks
|
259
274
|
- bin/rake
|
260
275
|
- bin/reek
|
261
276
|
- bin/rspec
|
262
277
|
- bin/rubocop
|
263
278
|
- bin/setup
|
279
|
+
- config/i18n-tasks.yml
|
264
280
|
- exe/lois
|
265
281
|
- lib/lois.rb
|
266
282
|
- lib/lois/ci.rb
|