tml 4.4.1 → 4.4.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/lib/tml/api/client.rb +10 -2
- data/lib/tml/generators/base.rb +32 -27
- data/lib/tml/generators/file.rb +29 -117
- data/lib/tml/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5b559306971c39fdd4df874f01174dd53af720f
|
4
|
+
data.tar.gz: 64df8e8b2fabc6b1bdab21461b72f0ae0f373687
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43033def0b0187721cb8c0020c5ca60958c62228c992ad11e23092c2872f5ad9118a6a8d159854475e5c3636183043b0f9181d021076423ed60a3859e973ae43
|
7
|
+
data.tar.gz: acbcb86d03f2abf4c5d16a6af803228af8df3dfdb671f0453ca84a9d085d3ad7526c15d2e4d1b1b043b2d949cbc0aaa3ddbf31f05c79ba3297dd2465e66919b0
|
data/lib/tml/api/client.rb
CHANGED
@@ -68,6 +68,10 @@ class Tml::Api::Client < Tml::Base
|
|
68
68
|
application.host || API_HOST
|
69
69
|
end
|
70
70
|
|
71
|
+
def cdn_host
|
72
|
+
CDN_HOST
|
73
|
+
end
|
74
|
+
|
71
75
|
def connection
|
72
76
|
@connection ||= Faraday.new(:url => host) do |faraday|
|
73
77
|
faraday.request(:url_encoded) # form-encode POST params
|
@@ -76,12 +80,16 @@ class Tml::Api::Client < Tml::Base
|
|
76
80
|
end
|
77
81
|
end
|
78
82
|
|
83
|
+
def get_cache_version
|
84
|
+
execute_request('applications/current/version', {}, {:raw => true})
|
85
|
+
end
|
86
|
+
|
79
87
|
def verify_cache_version
|
80
88
|
return if Tml.cache.version and Tml.cache.version != 'undefined'
|
81
89
|
|
82
90
|
current_version = Tml.cache.fetch_version
|
83
91
|
if current_version == 'undefined'
|
84
|
-
Tml.cache.store_version(
|
92
|
+
Tml.cache.store_version(get_cache_version)
|
85
93
|
else
|
86
94
|
Tml.cache.version = current_version
|
87
95
|
end
|
@@ -89,7 +97,7 @@ class Tml::Api::Client < Tml::Base
|
|
89
97
|
end
|
90
98
|
|
91
99
|
def cdn_connection
|
92
|
-
@cdn_connection ||= Faraday.new(:url =>
|
100
|
+
@cdn_connection ||= Faraday.new(:url => cdn_host) do |faraday|
|
93
101
|
faraday.request(:url_encoded) # form-encode POST params
|
94
102
|
faraday.adapter(Faraday.default_adapter) # make requests with Net::HTTP
|
95
103
|
end
|
data/lib/tml/generators/base.rb
CHANGED
@@ -40,11 +40,21 @@ class Tml::Generators::Base
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def cache_path
|
43
|
-
|
43
|
+
@cache_path ||= begin
|
44
|
+
path = Tml.config.cache[:path]
|
45
|
+
path ||= 'config/tml'
|
46
|
+
FileUtils.mkdir_p(path)
|
47
|
+
FileUtils.chmod(0777, path)
|
48
|
+
path
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def current_path
|
53
|
+
"#{cache_path}/current"
|
44
54
|
end
|
45
55
|
|
46
56
|
def cache_version
|
47
|
-
@
|
57
|
+
@cache_version ||= api_client.get_cache_version
|
48
58
|
end
|
49
59
|
|
50
60
|
def cache(key, data)
|
@@ -64,7 +74,6 @@ class Tml::Generators::Base
|
|
64
74
|
def prepare
|
65
75
|
@started_at = Time.now
|
66
76
|
Tml.session.init
|
67
|
-
cache_path
|
68
77
|
end
|
69
78
|
|
70
79
|
def api_client
|
@@ -81,37 +90,33 @@ class Tml::Generators::Base
|
|
81
90
|
|
82
91
|
def finalize
|
83
92
|
@finished_at = Time.now
|
84
|
-
log("Cache has been stored in #{cache_path}")
|
85
93
|
log("Cache generation took #{@finished_at - @started_at} mls.")
|
86
94
|
log('Done.')
|
87
95
|
end
|
88
96
|
|
89
|
-
def
|
90
|
-
|
91
|
-
|
92
|
-
|
97
|
+
def ungzip(tarfile)
|
98
|
+
z = Zlib::GzipReader.new(tarfile)
|
99
|
+
unzipped = StringIO.new(z.read)
|
100
|
+
z.close
|
101
|
+
unzipped
|
93
102
|
end
|
94
103
|
|
95
|
-
def
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
104
|
+
def untar(io, destination)
|
105
|
+
Gem::Package::TarReader.new io do |tar|
|
106
|
+
tar.each do |tarfile|
|
107
|
+
destination_file = File.join destination, tarfile.full_name
|
108
|
+
|
109
|
+
if tarfile.directory?
|
110
|
+
FileUtils.mkdir_p destination_file
|
111
|
+
else
|
112
|
+
destination_directory = File.dirname(destination_file)
|
113
|
+
FileUtils.mkdir_p destination_directory unless File.directory?(destination_directory)
|
114
|
+
File.open destination_file, "wb" do |f|
|
115
|
+
f.print tarfile.read
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
100
119
|
end
|
101
|
-
languages.each do |lang|
|
102
|
-
language = api_client.get("languages/#{lang['locale']}", :definition => true)
|
103
|
-
cache(Tml::Language.cache_key(language['locale']), language)
|
104
|
-
end
|
105
|
-
log("#{application['languages'].count} languages have been cached.")
|
106
|
-
end
|
107
|
-
|
108
|
-
def symlink_path
|
109
|
-
"#{Tml.config.cache[:path]}/current"
|
110
120
|
end
|
111
121
|
|
112
|
-
def generate_symlink
|
113
|
-
FileUtils.rm(symlink_path) if File.exist?(symlink_path)
|
114
|
-
FileUtils.ln_s(cache_version, symlink_path)
|
115
|
-
log('Symlink has been updated.')
|
116
|
-
end
|
117
122
|
end
|
data/lib/tml/generators/file.rb
CHANGED
@@ -29,131 +29,43 @@
|
|
29
29
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
30
30
|
#++
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
log("Cache will be stored in #{path}")
|
38
|
-
FileUtils.mkdir_p(path)
|
39
|
-
FileUtils.chmod(0777, path)
|
40
|
-
path
|
41
|
-
end
|
42
|
-
end
|
32
|
+
require 'rubygems'
|
33
|
+
require 'rubygems/package'
|
34
|
+
require 'open-uri'
|
35
|
+
require 'zlib'
|
36
|
+
require 'fileutils'
|
43
37
|
|
44
|
-
|
45
|
-
path = key.split('/')
|
46
|
-
if path.count > 1
|
47
|
-
filename = path.pop
|
48
|
-
path = File.join(cache_path, path)
|
49
|
-
FileUtils.mkdir_p(path)
|
50
|
-
File.join(path, "#{filename}.json")
|
51
|
-
else
|
52
|
-
File.join(cache_path, "#{path.first}.json")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def cache(key, data)
|
57
|
-
File.open(file_path(key), 'w') { |file| file.write(JSON.pretty_generate(data)) }
|
58
|
-
end
|
38
|
+
class Tml::Generators::File < Tml::Generators::Base
|
59
39
|
|
60
40
|
def execute
|
61
|
-
|
62
|
-
|
63
|
-
cache_translations
|
64
|
-
generate_symlink
|
65
|
-
end
|
66
|
-
|
67
|
-
def cache_translations
|
68
|
-
log('Downloading translations...')
|
69
|
-
|
70
|
-
languages.each do |language|
|
71
|
-
log("Downloading #{language['english_name']} language...")
|
72
|
-
|
73
|
-
if Tml.config.cache[:segmented]
|
74
|
-
api_client.paginate('applications/current/sources') do |source|
|
75
|
-
next unless source['source']
|
76
|
-
|
77
|
-
cache_path = Tml::Source.cache_key(language['locale'], source['source'])
|
78
|
-
log("Downloading #{source['source']} in #{language['locale']} to #{cache_path}...")
|
79
|
-
|
80
|
-
data = api_client.get("sources/#{source['key']}/translations", {:locale => language['locale'], :original => true, :per_page => 1000})
|
81
|
-
cache(cache_path, data)
|
82
|
-
end
|
83
|
-
else
|
84
|
-
cache_path = Tml::Application.translations_cache_key(language['locale'])
|
85
|
-
log("Downloading translations in #{language['locale']} to #{cache_path}...")
|
86
|
-
data = {}
|
87
|
-
api_client.paginate('applications/current/translations', {:locale => language['locale'], :original => true, :per_page => 1000}) do |translations|
|
88
|
-
data.merge!(translations)
|
89
|
-
end
|
90
|
-
cache(cache_path, data)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def rollback
|
96
|
-
folders = Dir["#{Tml.config.cache[:path]}/*"]
|
97
|
-
folders.delete_if{|e| e.index('current')}.sort!
|
98
|
-
|
99
|
-
if File.exist?(symlink_path)
|
100
|
-
current_dest = File.readlink("#{Tml.config.cache[:path]}/current")
|
101
|
-
current_dest = "#{Tml.config.cache[:path]}/#{current_dest}"
|
41
|
+
if cache_version == '0'
|
42
|
+
log("No releases have been generated yet. Please visit your Dashboard and publish translations.")
|
102
43
|
else
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
if index.nil?
|
114
|
-
new_version_path = folders[folders.size-1]
|
115
|
-
else
|
116
|
-
new_version_path = folders[index-1]
|
117
|
-
end
|
118
|
-
|
119
|
-
new_version_path = new_version_path.split('/').last
|
120
|
-
|
121
|
-
FileUtils.rm(symlink_path) if File.exist?(symlink_path)
|
122
|
-
FileUtils.ln_s(new_version_path, symlink_path)
|
123
|
-
|
124
|
-
log("Cache has been rolled back to version #{new_version_path}.")
|
125
|
-
end
|
126
|
-
|
127
|
-
def rollup
|
128
|
-
folders = Dir["#{Tml.config.cache[:path]}/*"]
|
129
|
-
folders.delete_if{|e| e.index('current')}.sort!
|
130
|
-
|
131
|
-
if File.exist?(symlink_path)
|
132
|
-
current_dest = File.readlink("#{Tml.config.cache[:path]}/current")
|
133
|
-
current_dest = "#{Tml.config.cache[:path]}/#{current_dest}"
|
134
|
-
else
|
135
|
-
current_dest = 'undefined'
|
136
|
-
end
|
44
|
+
log("Current cache version: #{cache_version}")
|
45
|
+
|
46
|
+
archive_name = "#{cache_version}.tar.gz"
|
47
|
+
path = "#{cache_path}/#{archive_name}"
|
48
|
+
url = "#{api_client.cdn_host}/#{Tml.config.access_token}/#{archive_name}"
|
49
|
+
log("Downloading cache file: #{url}")
|
50
|
+
open(path, 'wb') do |file|
|
51
|
+
file << open(url).read
|
52
|
+
end
|
53
|
+
log('Extracting cache file...')
|
137
54
|
|
138
|
-
|
55
|
+
version_path = "#{cache_path}/#{cache_version}"
|
56
|
+
untar(ungzip(File.new(path)), version_path)
|
57
|
+
log("Cache has been stored in #{version_path}")
|
139
58
|
|
140
|
-
|
141
|
-
log('You are on the latest version of the cache already. No further versions are available')
|
142
|
-
return
|
143
|
-
end
|
59
|
+
File.unlink(path)
|
144
60
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
61
|
+
begin
|
62
|
+
FileUtils.rm(current_path) if File.exist?(current_path)
|
63
|
+
FileUtils.ln_s(cache_version, current_path)
|
64
|
+
log('The new cache path has been marked as current')
|
65
|
+
rescue
|
66
|
+
log('Could not generate current symlink to the cach path. Please indicate the version manually in the Tml initializer.')
|
67
|
+
end
|
149
68
|
end
|
150
|
-
|
151
|
-
new_version_path = new_version_path.split('/').last
|
152
|
-
|
153
|
-
FileUtils.rm(symlink_path) if File.exist?(symlink_path)
|
154
|
-
FileUtils.ln_s(new_version_path, symlink_path)
|
155
|
-
|
156
|
-
log("Cache has been upgraded to version #{new_version_path}.")
|
157
69
|
end
|
158
70
|
|
159
71
|
end
|
data/lib/tml/version.rb
CHANGED