transync 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -4
- data/bin/transync +3 -1
- data/lib/transync.rb +6 -25
- data/lib/transync/gdoc_trans/gdoc_trans_writer.rb +2 -1
- data/lib/transync/runner.rb +54 -0
- data/lib/transync/sync/sync_util.rb +21 -10
- data/lib/transync/sync/translation_sync.rb +13 -3
- data/lib/transync/version.rb +1 -1
- data/lib/transync/xliff_trans/xliff_trans_reader.rb +5 -0
- data/transync.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34601981f1aed44be61c45090e3c7568a4f64768
|
4
|
+
data.tar.gz: 257f29d8a4f7e8a4bfce328a38c0ada09bbcae4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 031fdec0240aa2a3a45e8b9808444715d533d82e0b586c94a0a201fffbfe83a7dfaf5fe39015dee18a29a7805bef9a7d0b67863b19bc2523bdd1732fdb30b303
|
7
|
+
data.tar.gz: d803d0a53df7ef47f4d724d9aef9ad2d2a50f27e72f6bce259be67cf2fce289422323622f0c49679529308a908203f0c58aca6ca5031c682a2a95f63a809967e
|
data/README.md
CHANGED
@@ -29,9 +29,9 @@ for direction from Gdoc to xliff.
|
|
29
29
|
### Running order
|
30
30
|
|
31
31
|
```
|
32
|
-
transync test # test if all keys are set for all the languages
|
32
|
+
transync test # test if all keys are set for all the languages. Also tests if everything in sync with GDoc
|
33
33
|
transync update # will test and add all the missing keys that are not presented for a particular language
|
34
|
-
transync init # will sync all translations with Google spreadsheet. You need to run update command first, to ensure no keys are missing
|
34
|
+
transync init # will sync all translations with Google spreadsheet. You need to run update command first, to ensure no keys are missing
|
35
35
|
|
36
36
|
# After init was made you have these two to sync between gdoc and xliff
|
37
37
|
transync x2g
|
@@ -41,9 +41,13 @@ transync g2x
|
|
41
41
|
### Gem development
|
42
42
|
|
43
43
|
```
|
44
|
-
rake install && transync x2g|g2x test
|
45
44
|
ruby g2x_spec.rb
|
46
45
|
ruby x2g_spec.rb
|
47
46
|
```
|
48
47
|
|
49
|
-
|
48
|
+
## TODO
|
49
|
+
|
50
|
+
- use ruby's 2.0 named parameters (more clear method calls)
|
51
|
+
- better tests (move out network dependency -> maybe try VCR)
|
52
|
+
- add to travis / code climate
|
53
|
+
- don't allow empty keys?
|
data/bin/transync
CHANGED
data/lib/transync.rb
CHANGED
@@ -1,35 +1,16 @@
|
|
1
1
|
require_relative 'transync/sync/translation_sync'
|
2
2
|
require_relative 'transync/sync/init'
|
3
3
|
require_relative 'transync/sync/sync_util'
|
4
|
+
require_relative 'transync/runner'
|
4
5
|
|
5
6
|
module Transync
|
6
7
|
|
7
|
-
def self.run(mode
|
8
|
-
FileUtils.mkdir('.transync_log') unless Dir.exist?('.transync_log')
|
9
|
-
path = TransyncConfig::CONFIG['XLIFF_FILES_PATH']
|
10
|
-
|
8
|
+
def self.run(mode)
|
11
9
|
if mode == 'x2g' or mode == 'g2x'
|
12
|
-
sync
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
if mode == 'init'
|
17
|
-
init = Init.new(path)
|
18
|
-
init.run
|
19
|
-
end
|
20
|
-
|
21
|
-
if mode == 'test'
|
22
|
-
TransyncConfig::CONFIG['FILES'].each do |file|
|
23
|
-
xliff_files = XliffTransReader.new(path, file, TransyncConfig::CONFIG['LANGUAGES'])
|
24
|
-
p "#{file} have all the keys for all languages." if xliff_files.valid?
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
if mode == 'update'
|
29
|
-
TransyncConfig::CONFIG['FILES'].each do |file|
|
30
|
-
xliff_files = XliffTransReader.new(path, file, TransyncConfig::CONFIG['LANGUAGES'])
|
31
|
-
xliff_files.fill_with_missing_keys
|
32
|
-
end
|
10
|
+
Transync::Runner.sync(mode)
|
11
|
+
else
|
12
|
+
# will send message to (call) init, test, update
|
13
|
+
Transync::Runner.send(mode)
|
33
14
|
end
|
34
15
|
end
|
35
16
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'google_drive'
|
2
|
+
require 'colorize'
|
2
3
|
|
3
4
|
class GdocTransWriter
|
4
5
|
|
@@ -9,7 +10,7 @@ class GdocTransWriter
|
|
9
10
|
def write(trans_hash)
|
10
11
|
language = trans_hash[:language]
|
11
12
|
lang_column = get_language_column_index(language)
|
12
|
-
abort("Language (#{language}) not found in worksheet
|
13
|
+
abort("\u{2717} Language (#{language}) not found in worksheet '#{@worksheet.title}'!".colorize(:red)) if lang_column == 0
|
13
14
|
|
14
15
|
row = 2
|
15
16
|
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'colorize'
|
2
|
+
|
3
|
+
module Transync
|
4
|
+
|
5
|
+
# 2713 = unicode check mark
|
6
|
+
# 2717 = unicode cross mark
|
7
|
+
module Runner
|
8
|
+
|
9
|
+
PATH = TransyncConfig::CONFIG['XLIFF_FILES_PATH']
|
10
|
+
|
11
|
+
def self.sync(mode)
|
12
|
+
sync = TranslationSync.new(PATH, mode)
|
13
|
+
sync.run(mode)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.init
|
17
|
+
init = Init.new(PATH)
|
18
|
+
init.run
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.test
|
22
|
+
TransyncConfig::CONFIG['FILES'].each do |file|
|
23
|
+
xliff_files = XliffTransReader.new(PATH, file, TransyncConfig::CONFIG['LANGUAGES'])
|
24
|
+
puts "\u{2713} '#{file}' have all the keys for all languages in XLIFF files.".colorize(:green) if xliff_files.valid?
|
25
|
+
|
26
|
+
TransyncConfig::CONFIG['LANGUAGES'].each do |language|
|
27
|
+
trans_sync = TranslationSync.new(PATH, 'test', file)
|
28
|
+
|
29
|
+
if trans_sync.diff(language).keys.length == 0
|
30
|
+
puts "\u{2713} '#{file}' is in sync for '#{language}' language with GDoc.".colorize(:green)
|
31
|
+
else
|
32
|
+
puts "\u{2717} '#{file}' is NOT in sync for '#{language}' language with GDoc. See diff!".colorize(:red)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
puts '----------'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.update
|
41
|
+
TransyncConfig::CONFIG['FILES'].each do |file|
|
42
|
+
xliff_files = XliffTransReader.new(PATH, file, TransyncConfig::CONFIG['LANGUAGES'])
|
43
|
+
clean = xliff_files.fill_with_missing_keys
|
44
|
+
|
45
|
+
if clean
|
46
|
+
puts "\u{2713} '#{file}' already have all the keys in all the XLIFF files".colorize(:green)
|
47
|
+
else
|
48
|
+
puts "\u{2717} '#{file}' already DID NOT have all the keys in all the XLIFF files. But they were added automatically for you.".colorize(:red)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -8,17 +8,17 @@ module SyncUtil
|
|
8
8
|
SyncUtil.log_and_puts(msg)
|
9
9
|
end
|
10
10
|
|
11
|
-
def self.info_diff(file, language, diff)
|
12
|
-
msg =
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
msg = build_diff_print(diff, msg)
|
11
|
+
def self.info_diff(file, language, diff, diff_only = nil)
|
12
|
+
msg = ''
|
13
|
+
|
14
|
+
unless diff.empty?
|
15
|
+
msg = "#{file} (#{language})\n" if not diff_only
|
16
|
+
msg = build_diff_print(diff, msg, diff_only)
|
17
17
|
end
|
18
18
|
SyncUtil.log_and_puts(msg)
|
19
19
|
end
|
20
20
|
|
21
|
-
def self.build_diff_print(diff, msg)
|
21
|
+
def self.build_diff_print(diff, msg, diff_only = nil)
|
22
22
|
begin
|
23
23
|
# get longest key and value
|
24
24
|
max_key_length = diff.keys.max { |a, b| a.length <=> b.length }.length
|
@@ -28,15 +28,26 @@ module SyncUtil
|
|
28
28
|
max_val_length = 0
|
29
29
|
end
|
30
30
|
|
31
|
+
newline = ''
|
31
32
|
diff.keys.each do |key|
|
32
|
-
|
33
|
-
|
33
|
+
change_mark = ' => '
|
34
|
+
operation = diff[key][1].nil? ? 'adding' : 'changing'
|
35
|
+
ljust = 8
|
36
|
+
|
37
|
+
if diff_only
|
38
|
+
operation = 'diff'
|
39
|
+
change_mark = ' <=> '
|
40
|
+
ljust = 4
|
41
|
+
end
|
42
|
+
|
43
|
+
msg += "#{newline}[#{operation.ljust(ljust)}] #{key.ljust(max_key_length)}: '#{diff[key][1].to_s.ljust(max_val_length)}'#{change_mark}'#{diff[key][0]}' "
|
44
|
+
newline = "\n"
|
34
45
|
end
|
35
46
|
msg
|
36
47
|
end
|
37
48
|
|
38
49
|
def self.log_and_puts(msg)
|
39
|
-
puts msg
|
50
|
+
puts msg unless msg.length == 0
|
40
51
|
@logger.info msg
|
41
52
|
end
|
42
53
|
|
@@ -12,7 +12,7 @@ class TranslationSync
|
|
12
12
|
SyncUtil.create_logger(direction)
|
13
13
|
end
|
14
14
|
|
15
|
-
def run(direction
|
15
|
+
def run(direction)
|
16
16
|
@config['FILES'].each do |file|
|
17
17
|
xliff_files = XliffTransReader.new(@path, file, @config['LANGUAGES'])
|
18
18
|
abort('Fix your Xliff translations by hand or run transync update!') unless xliff_files.valid?
|
@@ -21,8 +21,6 @@ class TranslationSync
|
|
21
21
|
trans_sync = TranslationSync.new(@path, direction, file)
|
22
22
|
trans_hash = trans_sync.sync(language, direction)
|
23
23
|
|
24
|
-
next if test == 'test' # if testing don't write to files or google doc
|
25
|
-
|
26
24
|
if direction == 'x2g'
|
27
25
|
gdoc_trans_reader = GdocTransReader.new(file)
|
28
26
|
gdoc_trans_writer = GdocTransWriter.new(gdoc_trans_reader.worksheet)
|
@@ -56,4 +54,16 @@ class TranslationSync
|
|
56
54
|
{file: @file, language: language, translations: merged_translations}
|
57
55
|
end
|
58
56
|
|
57
|
+
def diff(language)
|
58
|
+
gdoc_trans_reader = GdocTransReader.new(@file)
|
59
|
+
xliff_trans_reader = XliffTransReader.new(@path, @file, nil)
|
60
|
+
|
61
|
+
g_trans_hash = gdoc_trans_reader.translations(language)
|
62
|
+
x_trans_hash = xliff_trans_reader.translations(language)
|
63
|
+
|
64
|
+
diff = x_trans_hash[:translations].diff(g_trans_hash[:translations])
|
65
|
+
SyncUtil.info_diff(@file, language, diff, true)
|
66
|
+
diff
|
67
|
+
end
|
68
|
+
|
59
69
|
end
|
data/lib/transync/version.rb
CHANGED
@@ -44,6 +44,7 @@ class XliffTransReader
|
|
44
44
|
missing_translation_text = TransyncConfig::CONFIG['MISSING_TRANSLATION_TEXT'] || '#MISSING-TRANS#'
|
45
45
|
all_translations_for_language = {file: file, language: nil, translations: {}}
|
46
46
|
added = false
|
47
|
+
clean = true
|
47
48
|
|
48
49
|
check_all do |lang_a, lang_b, xliff_lang_value, x_trans_key, translations_lang_b, last| # x_trans_key comes from lang_a translations
|
49
50
|
all_translations_for_language[:language] = lang_b
|
@@ -53,6 +54,7 @@ class XliffTransReader
|
|
53
54
|
"was missing translation for key '#{x_trans_key}' => setting value: '#{missing_translation_text} - #{x_trans_key}'"
|
54
55
|
all_translations_for_language[:translations][x_trans_key] = "#{missing_translation_text} - #{x_trans_key}"
|
55
56
|
added = true
|
57
|
+
clean = false
|
56
58
|
else
|
57
59
|
all_translations_for_language[:translations][x_trans_key] = xliff_lang_value
|
58
60
|
end
|
@@ -69,6 +71,9 @@ class XliffTransReader
|
|
69
71
|
added = false
|
70
72
|
end
|
71
73
|
end
|
74
|
+
|
75
|
+
# return if any key was added
|
76
|
+
clean
|
72
77
|
end
|
73
78
|
|
74
79
|
def check_all
|
data/transync.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_runtime_dependency 'google_drive'
|
22
22
|
spec.add_runtime_dependency 'builder'
|
23
|
+
spec.add_runtime_dependency 'colorize'
|
23
24
|
|
24
25
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
25
26
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: transync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- zigomir
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: google_drive
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - '>='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: colorize
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -85,6 +99,7 @@ files:
|
|
85
99
|
- lib/transync.rb
|
86
100
|
- lib/transync/gdoc_trans/gdoc_trans_reader.rb
|
87
101
|
- lib/transync/gdoc_trans/gdoc_trans_writer.rb
|
102
|
+
- lib/transync/runner.rb
|
88
103
|
- lib/transync/sync/init.rb
|
89
104
|
- lib/transync/sync/sync_util.rb
|
90
105
|
- lib/transync/sync/translation_sync.rb
|