chivy 0.0.1 → 0.0.2
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 +2 -2
- data/bin/chivy +21 -36
- data/lib/chivy.rb +1 -1
- data/lib/chivy/tree_manager.rb +65 -0
- data/lib/chivy/version.rb +1 -1
- metadata +3 -3
- data/lib/chivy/key_list.rb +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: abff556fc83657742b15d3dfbcbd5ef90f94969b
|
4
|
+
data.tar.gz: 04d0f36a7fc79657ea3eae9b6f65b527240cc0aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 693d12f17cf0c4fc32c84198bc181727c6535cd94e47a4f73cb727d7d0b2992aede898f0cda41854fa583a15fc6f0281babd1cbb1b5ae8bef4fe56978d1f91be
|
7
|
+
data.tar.gz: 3d3b7b9cac1b643c391fbc8d8a6f8bc05f43dc7c8ad609fe33bd22b2cf7382b3d4e91eeff117d8cb98c5ed50fc5589842aa79080fccac4693ce18f572935d223
|
data/README.md
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
Offers a quick way of analyzing language YAML-files and to add missing translation keys from the CLI.
|
4
4
|
|
5
|
-
[](https://rubygems.org/gems/
|
6
|
-
[](https://rubygems.org/gems/
|
5
|
+
[](https://rubygems.org/gems/chivy)
|
6
|
+
[](https://rubygems.org/gems/chivy)
|
7
7
|
[](http://rubydoc.info/github/dahie/chivy)
|
8
8
|
|
9
9
|
|
data/bin/chivy
CHANGED
@@ -19,49 +19,19 @@ command :list do |c|
|
|
19
19
|
c.action do |args, options|
|
20
20
|
|
21
21
|
folder = args[1] || '.'
|
22
|
-
|
23
22
|
files = Dir.entries(folder)
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
files.each do |filename|
|
29
|
-
if filename.match(/(\S*)\.(\S*)(.yml)/)
|
30
|
-
|
31
|
-
|
32
|
-
tree = Chivy::Tree.new filename
|
33
|
-
tree.load File.join(folder, filename)
|
34
|
-
|
35
|
-
if base_locales.include? tree.locale
|
36
|
-
base_locales[tree.locale] << tree.name
|
37
|
-
else
|
38
|
-
base_locales[tree.locale] = [tree.name]
|
39
|
-
end
|
40
|
-
|
41
|
-
if base_names.include? tree.name
|
42
|
-
base_names[tree.name] << tree
|
43
|
-
else
|
44
|
-
base_names[tree.name] = [tree]
|
45
|
-
end
|
46
|
-
else
|
47
|
-
# TODO error message
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
processed_files = []
|
53
|
-
|
54
|
-
base_names.each_key do |name|
|
55
|
-
reference_tree = base_names[name].first
|
56
|
-
base_names[name].each do |tree|
|
24
|
+
tree_manager = Chivy::TreeManager.load(folder, files)
|
25
|
+
tree_manager.each_base_name do |reference_tree|
|
26
|
+
tree_manager.each_base_name do |tree|
|
57
27
|
next if tree.file == reference_tree.file
|
58
28
|
|
59
|
-
|
29
|
+
say "\n--- #{tree.file} to #{reference_tree.file}"
|
60
30
|
|
61
31
|
diffs = HashDiff.diff(reference_tree.tree, tree.tree)
|
62
32
|
diffs.each do |diff_set|
|
63
|
-
if diff_set
|
64
|
-
|
33
|
+
if relevant_change?(diff_set)
|
34
|
+
say(color("#{diff_set[0]} #{diff_set[1]}: #{diff_set[2]}", change_color(diff_set[0])))
|
65
35
|
end
|
66
36
|
end
|
67
37
|
end
|
@@ -69,3 +39,18 @@ command :list do |c|
|
|
69
39
|
end
|
70
40
|
end
|
71
41
|
alias_command :ls, :list, :check
|
42
|
+
|
43
|
+
def relevant_change?(diff_set)
|
44
|
+
diff_set[0] == '-' || diff_set[0] == '+' || diff_set[2] == nil || diff_set[3] == nil
|
45
|
+
end
|
46
|
+
|
47
|
+
def change_color(change_type)
|
48
|
+
case change_type
|
49
|
+
when '-'
|
50
|
+
:red
|
51
|
+
when '+'
|
52
|
+
:green
|
53
|
+
else
|
54
|
+
:orange
|
55
|
+
end
|
56
|
+
end
|
data/lib/chivy.rb
CHANGED
@@ -0,0 +1,65 @@
|
|
1
|
+
module Chivy
|
2
|
+
class TreeManager
|
3
|
+
|
4
|
+
TRANSLATION_YML_REGEX = /(\S*)\.(\S*)(.yml)/
|
5
|
+
|
6
|
+
|
7
|
+
attr_accessor :files, :folder, :loaded_files, :base_locales, :base_names
|
8
|
+
|
9
|
+
|
10
|
+
def initialize(folder, files)
|
11
|
+
@files = files
|
12
|
+
@folder = folder
|
13
|
+
@base_names = {}
|
14
|
+
@base_locales = {}
|
15
|
+
@loaded_files = []
|
16
|
+
end
|
17
|
+
|
18
|
+
# returns files successfully loaded
|
19
|
+
def self.load(folder, files)
|
20
|
+
tree_manager = TreeManager.new(folder, files)
|
21
|
+
tree_manager.fill
|
22
|
+
tree_manager
|
23
|
+
end
|
24
|
+
|
25
|
+
def each_base_name &block
|
26
|
+
base_names.each do |name, trees|
|
27
|
+
trees.each do |tree|
|
28
|
+
block.call(tree)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
def fill
|
35
|
+
files.each do |filename|
|
36
|
+
if filename.match TRANSLATION_YML_REGEX
|
37
|
+
tree = Chivy::Tree.new filename
|
38
|
+
tree.load File.join(folder, filename)
|
39
|
+
loaded_files << filename
|
40
|
+
add_base_name(tree)
|
41
|
+
add_base_locale(tree)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
|
49
|
+
def add_base_name(tree)
|
50
|
+
if base_names.include? tree.name
|
51
|
+
base_names[tree.name] << tree
|
52
|
+
else
|
53
|
+
base_names[tree.name] = [tree]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def add_base_locale(tree)
|
58
|
+
if base_locales.include? tree.locale
|
59
|
+
base_locales[tree.locale] << tree.name
|
60
|
+
else
|
61
|
+
base_locales[tree.locale] = [tree.name]
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/lib/chivy/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chivy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Senff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commander
|
@@ -168,10 +168,10 @@ files:
|
|
168
168
|
- chivy.gemspec
|
169
169
|
- lib/chivy.rb
|
170
170
|
- lib/chivy/configuration.rb
|
171
|
-
- lib/chivy/key_list.rb
|
172
171
|
- lib/chivy/task_helper.rb
|
173
172
|
- lib/chivy/tree.rb
|
174
173
|
- lib/chivy/tree_diff.rb
|
174
|
+
- lib/chivy/tree_manager.rb
|
175
175
|
- lib/chivy/version.rb
|
176
176
|
homepage: http://github.com/Dahie/chivy
|
177
177
|
licenses:
|
data/lib/chivy/key_list.rb
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'ostruct'
|
2
|
-
require 'commander'
|
3
|
-
include Commander::UI
|
4
|
-
|
5
|
-
module Chivy
|
6
|
-
# Generates the list of all missing keys and prints out to the console.
|
7
|
-
class KeyList
|
8
|
-
attr_reader :config, :list
|
9
|
-
|
10
|
-
def initialize(translations)
|
11
|
-
@config = config
|
12
|
-
@list = []
|
13
|
-
end
|
14
|
-
|
15
|
-
# Determine the max count of characters for all task names.
|
16
|
-
# @return [integer] count of characters
|
17
|
-
def width
|
18
|
-
@width ||= list.map { |t| t.name_with_args ? t.name_with_args.length : 0 }.max || 10
|
19
|
-
end
|
20
|
-
|
21
|
-
# Fill task list by loading tasks from the configured adapters and locally.
|
22
|
-
# @return [Object] task_list
|
23
|
-
def fill
|
24
|
-
fill_list_from_adapters
|
25
|
-
fill_list_from_local
|
26
|
-
self
|
27
|
-
end
|
28
|
-
|
29
|
-
# Print the current task list to console.
|
30
|
-
def print
|
31
|
-
list.each do |entry|
|
32
|
-
entry.headline ? print_headline(entry) : print_task_description(entry)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# Extract description from gist's data content string.
|
37
|
-
# @param data [Hash] gist data hash
|
38
|
-
# [String] description string
|
39
|
-
def self.extract_description(task_content)
|
40
|
-
# regex from http://stackoverflow.com/questions/171480/regex-grabbing-values-between-quotation-marks
|
41
|
-
match = task_content.match(/desc (["'])((?:(?!\1)[^\\]|(?:\\\\)*\\[^\\])*)\1/)
|
42
|
-
match && match[2] || 'No description'
|
43
|
-
end
|
44
|
-
|
45
|
-
protected
|
46
|
-
|
47
|
-
def fill_list_from_local
|
48
|
-
list << OpenStruct.new(headline: 'local')
|
49
|
-
Woro::TaskHelper.woro_task_files(config.woro_task_dir) do |file_name, data|
|
50
|
-
list << OpenStruct.new(name_with_args: file_name.split('.rake').first,
|
51
|
-
comment: Woro::TaskList.extract_description(data))
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def fill_list_from_adapters
|
56
|
-
adapter_settings.each do |adapter_setting|
|
57
|
-
list << OpenStruct.new(headline: adapter_setting[0])
|
58
|
-
adapter = config.adapter(adapter_setting[0])
|
59
|
-
files = adapter.list_contents || {}
|
60
|
-
files.map do |file_name, data|
|
61
|
-
if file_name.include? '.rake'
|
62
|
-
list << OpenStruct.new(name_with_args: file_name.split('.rake').first,
|
63
|
-
comment: adapter.extract_description(data[:data]))
|
64
|
-
end
|
65
|
-
end
|
66
|
-
list.compact!
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def adapter_settings
|
71
|
-
config.adapter_settings
|
72
|
-
end
|
73
|
-
|
74
|
-
def print_headline(headline)
|
75
|
-
say "#{headline.headline} ---"
|
76
|
-
end
|
77
|
-
|
78
|
-
def print_task_description(task)
|
79
|
-
say " %-#{width}s # %s" % [task.name_with_args, task.comment]
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|