transync 1.0.4 → 1.1.0
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 +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
|