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.
@@ -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.