phrase 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)
@@ -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"
@@ -37,6 +37,10 @@ module Phrase::Tool::Commands
37
37
  end
38
38
 
39
39
  protected
40
+ def get_option(name)
41
+ options.get(name)
42
+ end
43
+
40
44
  def api_client
41
45
  Phrase::Api::Client.new(config.secret)
42
46
  end
@@ -25,10 +25,6 @@ class Phrase::Tool::Commands::Init < Phrase::Tool::Commands::Base
25
25
  end
26
26
 
27
27
  private
28
- def get_option(symbol)
29
- options.get symbol
30
- end
31
-
32
28
  def create_locale(name)
33
29
  begin
34
30
  api_client.create_locale(name)
@@ -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
@@ -29,7 +29,11 @@ class Phrase::Tool::Options
29
29
  },
30
30
  pull: {
31
31
  format: nil,
32
- target: nil
32
+ target: nil,
33
+ tag: nil
34
+ },
35
+ tags: {
36
+ list: true
33
37
  }
34
38
  }
35
39
  options.parse!(args)
@@ -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|
@@ -1,3 +1,3 @@
1
1
  module Phrase
2
- VERSION = "0.4.6"
2
+ VERSION = "0.4.7"
3
3
  end
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.6
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-08 00:00:00.000000000 Z
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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.23
228
+ rubygems_version: 1.8.10
278
229
  signing_key:
279
230
  specification_version: 3
280
231
  summary: The best way to manage i18n.