phrase 0.4.6 → 0.4.7
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.
- data/lib/phrase/api/client.rb +7 -2
- data/lib/phrase/tool.rb +2 -0
- data/lib/phrase/tool/commands.rb +1 -0
- data/lib/phrase/tool/commands/base.rb +4 -0
- data/lib/phrase/tool/commands/init.rb +0 -4
- data/lib/phrase/tool/commands/pull.rb +4 -3
- data/lib/phrase/tool/commands/show_help.rb +3 -1
- data/lib/phrase/tool/commands/tags.rb +29 -0
- data/lib/phrase/tool/options.rb +5 -1
- data/lib/phrase/tool/options_factory.rb +11 -0
- data/lib/phrase/version.rb +1 -1
- metadata +24 -73
data/lib/phrase/api/client.rb
CHANGED
@@ -72,12 +72,12 @@ class Phrase::Api::Client
|
|
72
72
|
true
|
73
73
|
end
|
74
74
|
|
75
|
-
def download_translations_for_locale(name, format)
|
75
|
+
def download_translations_for_locale(name, format, tag=nil)
|
76
76
|
raise "You must specify a name" if name.nil? or name.blank?
|
77
77
|
raise "You must specify a format" if format.nil? or format.blank?
|
78
78
|
|
79
79
|
begin
|
80
|
-
content = perform_api_request("/translations/download.#{format}", :get, {'locale' => name})
|
80
|
+
content = perform_api_request("/translations/download.#{format}", :get, {'locale' => name, 'tag' => tag})
|
81
81
|
return content
|
82
82
|
rescue Phrase::Api::Exceptions::ServerError => e
|
83
83
|
raise "Translations #{name} could not be downloaded"
|
@@ -100,6 +100,11 @@ class Phrase::Api::Client
|
|
100
100
|
end
|
101
101
|
true
|
102
102
|
end
|
103
|
+
|
104
|
+
def list_tags
|
105
|
+
result = perform_api_request("/tags", :get)
|
106
|
+
parsed(result)
|
107
|
+
end
|
103
108
|
|
104
109
|
private
|
105
110
|
def extract_structured_object(translation)
|
data/lib/phrase/tool.rb
CHANGED
@@ -28,6 +28,8 @@ class Phrase::Tool
|
|
28
28
|
Phrase::Tool::Commands::Push.new(@options, @args)
|
29
29
|
when /pull/
|
30
30
|
Phrase::Tool::Commands::Pull.new(@options, @args)
|
31
|
+
when /tags/
|
32
|
+
Phrase::Tool::Commands::Tags.new(@options, @args)
|
31
33
|
else
|
32
34
|
if @options.get(:version)
|
33
35
|
Phrase::Tool::Commands::ShowVersion.new(@options, @args)
|
data/lib/phrase/tool/commands.rb
CHANGED
@@ -7,5 +7,6 @@ require "phrase/tool/commands/base"
|
|
7
7
|
require "phrase/tool/commands/init"
|
8
8
|
require "phrase/tool/commands/push"
|
9
9
|
require "phrase/tool/commands/pull"
|
10
|
+
require "phrase/tool/commands/tags"
|
10
11
|
require "phrase/tool/commands/show_version"
|
11
12
|
require "phrase/tool/commands/show_help"
|
@@ -13,6 +13,7 @@ class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
|
13
13
|
# TODO: remove DEFAULT_DOWNLOAD_FORMAT when phrase app has been updated
|
14
14
|
@format = @options.get(:format) || config.format || DEFAULT_DOWNLOAD_FORMAT
|
15
15
|
@target = @options.get(:target)
|
16
|
+
@tag = @options.get(:tag)
|
16
17
|
@target ||= Phrase::Formats.target_directory(@format) if format_valid?(@format)
|
17
18
|
end
|
18
19
|
|
@@ -20,14 +21,14 @@ class Phrase::Tool::Commands::Pull < Phrase::Tool::Commands::Base
|
|
20
21
|
(print_error("Invalid format: #{@format}") and exit_command) unless format_valid?(@format)
|
21
22
|
locales_to_download.compact.each do |locale|
|
22
23
|
print_message "Downloading #{locale.name}..."
|
23
|
-
fetch_translations_for_locale(locale, @format)
|
24
|
+
fetch_translations_for_locale(locale, @format, @tag)
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
28
|
private
|
28
|
-
def fetch_translations_for_locale(locale, format)
|
29
|
+
def fetch_translations_for_locale(locale, format, tag=nil)
|
29
30
|
begin
|
30
|
-
content = api_client.download_translations_for_locale(locale.name, format)
|
31
|
+
content = api_client.download_translations_for_locale(locale.name, format, tag)
|
31
32
|
store_content_in_locale_file(locale, content)
|
32
33
|
rescue Exception => e
|
33
34
|
print_error "Failed"
|
@@ -20,7 +20,9 @@ usage: phrase <command> [<args>]
|
|
20
20
|
phrase push FILE [--tags=<tags>] [--locale=<locale>]
|
21
21
|
phrase push DIRECTORY [--tags=<tags>] [--locale=<locale>]
|
22
22
|
|
23
|
-
phrase pull [LOCALE] [--target=<target-folder>] [--format=<format>]
|
23
|
+
phrase pull [LOCALE] [--target=<target-folder>] [--format=<format>] [--tag=<tag>]
|
24
|
+
|
25
|
+
phrase tags [-l, --list]
|
24
26
|
|
25
27
|
phrase --version
|
26
28
|
USAGE
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
|
3
|
+
class Phrase::Tool::Commands::Tags < Phrase::Tool::Commands::Base
|
4
|
+
def initialize(options, args)
|
5
|
+
super(options, args)
|
6
|
+
require_auth_token!
|
7
|
+
end
|
8
|
+
|
9
|
+
def execute!
|
10
|
+
if get_option(:list)
|
11
|
+
list_tags
|
12
|
+
else
|
13
|
+
print_error "Unknown command"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
protected
|
18
|
+
def list_tags
|
19
|
+
begin
|
20
|
+
tags = api_client.list_tags
|
21
|
+
tags.each do |tag|
|
22
|
+
print_message "#{tag["name"]}"
|
23
|
+
end
|
24
|
+
rescue Exception => e
|
25
|
+
print_error "Failure while fetching tags"
|
26
|
+
print_server_error(e.message)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/phrase/tool/options.rb
CHANGED
@@ -69,8 +69,19 @@ class OptionsFactory
|
|
69
69
|
opts.on("--target=./phrase/locales", String, "Target folder to store locale files") do |target|
|
70
70
|
set[:target] = target
|
71
71
|
end
|
72
|
+
|
73
|
+
opts.on("--tag=foo", String, "Limit results to a given tag instead of all translations") do |tag|
|
74
|
+
set[:tag] = tag
|
75
|
+
end
|
72
76
|
end
|
73
77
|
private_class_method :pull
|
78
|
+
|
79
|
+
def self.tags(opts, set)
|
80
|
+
opts.on("-l", "--list", "List all tags") do |list|
|
81
|
+
set[:list] = list
|
82
|
+
end
|
83
|
+
end
|
84
|
+
private_class_method :tags
|
74
85
|
|
75
86
|
def self.default(opts, set)
|
76
87
|
opts.on_tail("-v", "--version", "Show version number") do |version|
|
data/lib/phrase/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: phrase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: colorize
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70226372605540 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ! '>='
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '0'
|
24
|
+
version_requirements: *70226372605540
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: json
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70226372605080 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ! '>='
|
@@ -37,15 +32,10 @@ dependencies:
|
|
37
32
|
version: '0'
|
38
33
|
type: :runtime
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ! '>='
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0'
|
35
|
+
version_requirements: *70226372605080
|
46
36
|
- !ruby/object:Gem::Dependency
|
47
37
|
name: rake
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &70226372604620 !ruby/object:Gem::Requirement
|
49
39
|
none: false
|
50
40
|
requirements:
|
51
41
|
- - ! '>='
|
@@ -53,15 +43,10 @@ dependencies:
|
|
53
43
|
version: '0'
|
54
44
|
type: :development
|
55
45
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0'
|
46
|
+
version_requirements: *70226372604620
|
62
47
|
- !ruby/object:Gem::Dependency
|
63
48
|
name: rspec
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &70226372604180 !ruby/object:Gem::Requirement
|
65
50
|
none: false
|
66
51
|
requirements:
|
67
52
|
- - ! '>='
|
@@ -69,15 +54,10 @@ dependencies:
|
|
69
54
|
version: '0'
|
70
55
|
type: :development
|
71
56
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
57
|
+
version_requirements: *70226372604180
|
78
58
|
- !ruby/object:Gem::Dependency
|
79
59
|
name: i18n
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &70226372603660 !ruby/object:Gem::Requirement
|
81
61
|
none: false
|
82
62
|
requirements:
|
83
63
|
- - ! '>='
|
@@ -85,15 +65,10 @@ dependencies:
|
|
85
65
|
version: '0'
|
86
66
|
type: :development
|
87
67
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
68
|
+
version_requirements: *70226372603660
|
94
69
|
- !ruby/object:Gem::Dependency
|
95
70
|
name: webmock
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &70226372603160 !ruby/object:Gem::Requirement
|
97
72
|
none: false
|
98
73
|
requirements:
|
99
74
|
- - ! '>='
|
@@ -101,15 +76,10 @@ dependencies:
|
|
101
76
|
version: '0'
|
102
77
|
type: :development
|
103
78
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
79
|
+
version_requirements: *70226372603160
|
110
80
|
- !ruby/object:Gem::Dependency
|
111
81
|
name: vcr
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &70226372602500 !ruby/object:Gem::Requirement
|
113
83
|
none: false
|
114
84
|
requirements:
|
115
85
|
- - ! '>='
|
@@ -117,15 +87,10 @@ dependencies:
|
|
117
87
|
version: '0'
|
118
88
|
type: :development
|
119
89
|
prerelease: false
|
120
|
-
version_requirements:
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
90
|
+
version_requirements: *70226372602500
|
126
91
|
- !ruby/object:Gem::Dependency
|
127
92
|
name: timecop
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &70226372601700 !ruby/object:Gem::Requirement
|
129
94
|
none: false
|
130
95
|
requirements:
|
131
96
|
- - ! '>='
|
@@ -133,15 +98,10 @@ dependencies:
|
|
133
98
|
version: '0'
|
134
99
|
type: :development
|
135
100
|
prerelease: false
|
136
|
-
version_requirements:
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
101
|
+
version_requirements: *70226372601700
|
142
102
|
- !ruby/object:Gem::Dependency
|
143
103
|
name: genspec
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirement: &70226372601280 !ruby/object:Gem::Requirement
|
145
105
|
none: false
|
146
106
|
requirements:
|
147
107
|
- - ! '>='
|
@@ -149,15 +109,10 @@ dependencies:
|
|
149
109
|
version: '0'
|
150
110
|
type: :development
|
151
111
|
prerelease: false
|
152
|
-
version_requirements:
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ! '>='
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: '0'
|
112
|
+
version_requirements: *70226372601280
|
158
113
|
- !ruby/object:Gem::Dependency
|
159
114
|
name: rails
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirement: &70226372600820 !ruby/object:Gem::Requirement
|
161
116
|
none: false
|
162
117
|
requirements:
|
163
118
|
- - ! '>='
|
@@ -165,12 +120,7 @@ dependencies:
|
|
165
120
|
version: '0'
|
166
121
|
type: :development
|
167
122
|
prerelease: false
|
168
|
-
version_requirements:
|
169
|
-
none: false
|
170
|
-
requirements:
|
171
|
-
- - ! '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
123
|
+
version_requirements: *70226372600820
|
174
124
|
description: phrase allows you to edit translations in-place on the page itself. More
|
175
125
|
information at phraseapp.com
|
176
126
|
email:
|
@@ -245,6 +195,7 @@ files:
|
|
245
195
|
- lib/phrase/tool/commands/push.rb
|
246
196
|
- lib/phrase/tool/commands/show_help.rb
|
247
197
|
- lib/phrase/tool/commands/show_version.rb
|
198
|
+
- lib/phrase/tool/commands/tags.rb
|
248
199
|
- lib/phrase/tool/config.rb
|
249
200
|
- lib/phrase/tool/encoding_detector.rb
|
250
201
|
- lib/phrase/tool/locale.rb
|
@@ -274,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
274
225
|
version: 1.3.6
|
275
226
|
requirements: []
|
276
227
|
rubyforge_project: phrase
|
277
|
-
rubygems_version: 1.8.
|
228
|
+
rubygems_version: 1.8.10
|
278
229
|
signing_key:
|
279
230
|
specification_version: 3
|
280
231
|
summary: The best way to manage i18n.
|