onesky-rails 1.3.1 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d7915661efea085a8c067dbe1e636776cc3a4ed
4
- data.tar.gz: 1472df68e788bdd979dea54c21ba92943709de6d
3
+ metadata.gz: 98c442ba47c28237b26cb4eeff0937fcf0356d1e
4
+ data.tar.gz: 290c1c4ef1fbc4e11f11c1dab1eb6fa5873f5fd8
5
5
  SHA512:
6
- metadata.gz: bf3fb008dd2a75cdc91973a074afc7453593472c9f23254b18e7d1f4e12ca6a762d66b61b82f5a9112ad1955ccf6fb436e409f25e1fc15a6faab996ed4e5c2e2
7
- data.tar.gz: 40100c3a9ae3878a5c1c2be2a317998c97e1d9a0312f56e96bb1da7a482ea81b7f88b1b6dd23422fa1ce8f26e89199bbe2958db9c4ed93ff0057eb8652d8b0d0
6
+ metadata.gz: 6560820aa8c5646dfd01deb01cafba66674f9bd5e776b0c8bdc2d4a79ea22f81c2667d6c696bcdf3c6d91b254aad805397c93fd4f371fe8033df0247fc61fff1
7
+ data.tar.gz: cdbac164fda226f0d1cef2caf7115c79fb7f247116ad6e66ca0d37c4d3ccdfc553f68eedbf1dd1c3a74253f89c151fc40a82ede666ac202331367616f7ab232c
@@ -13,3 +13,9 @@ project_id: <%= config_hash[:project_id] %>
13
13
 
14
14
  upload:
15
15
  is_keeping_all_strings: true
16
+ # Uncomment one of these to filter files in your locales directory
17
+ # only:
18
+ # - cms/en.yml
19
+ # except:
20
+ # - admin.yml
21
+ # - rails.yml
@@ -87,7 +87,11 @@ NOTICE
87
87
  end
88
88
 
89
89
  def get_default_locale_files(string_path)
90
+ string_path = Pathname.new(string_path)
91
+ locale_files_filter = generate_locale_files_filter
90
92
  Dir.glob("#{string_path}/**/*.yml").map do |path|
93
+ relative_path = Pathname.new(path).relative_path_from(string_path).to_s
94
+ next if locale_files_filter && !locale_files_filter.call(relative_path)
91
95
  content_hash = YAML.load_file(path)
92
96
  path if content_hash && content_hash.has_key?(@base_locale.to_s)
93
97
  end.compact
@@ -104,9 +108,28 @@ NOTICE
104
108
  end
105
109
 
106
110
  def is_keep_strings?
107
- return true unless (@config.has_key?('upload') && @config['upload'].has_key?('is_keeping_all_strings'))
111
+ return true unless upload_config.has_key?('is_keeping_all_strings')
108
112
 
109
- !!@config['upload']['is_keeping_all_strings']
113
+ !!upload_config['is_keeping_all_strings']
114
+ end
115
+
116
+ def generate_locale_files_filter
117
+ only = Array(upload_config['only'])
118
+ except = Array(upload_config['except'])
119
+
120
+ if only.any? && except.any?
121
+ raise ArgumentError, "Invalid config. Can't use both `only` and `except` options."
122
+ end
123
+
124
+ if only.any?
125
+ ->(path) { only.include?(path) }
126
+ elsif except.any?
127
+ ->(path) { !except.include?(path) }
128
+ end
129
+ end
130
+
131
+ def upload_config
132
+ @config['upload'] ||= {}
110
133
  end
111
134
 
112
135
  end
@@ -1,5 +1,5 @@
1
1
  module Onesky
2
2
  module Rails
3
- VERSION = "1.3.1"
3
+ VERSION = "1.4.0"
4
4
  end
5
5
  end
@@ -19,13 +19,37 @@ describe Onesky::Rails::FileClient do
19
19
  FileUtils.remove_dir(file_path) if File.directory?(file_path)
20
20
  end
21
21
 
22
+ def create_config_hash_with_upload_options(upload_options)
23
+ create_config_hash.tap do |config|
24
+ config['upload'].merge!(upload_options)
25
+ end
26
+ end
27
+
22
28
  context '#upload' do
23
- it 'all translation files to onesky' do
29
+ before(:each) do
24
30
  stub_request(:post, full_path_with_auth_hash("/projects/#{config_hash['project_id']}/files", config_hash['api_key'], config_hash['api_secret']))
25
31
  .to_return(status: 201)
32
+ end
26
33
 
34
+ it 'all translation files to onesky' do
27
35
  expect(client.upload(file_path)).to match_array(["#{file_path}/en.yml","#{file_path}/menu.yml"])
28
36
  end
37
+
38
+ context 'with `only` option' do
39
+ let(:config_hash) { create_config_hash_with_upload_options('only' => 'menu.yml') }
40
+
41
+ it 'matching translation files to onesky' do
42
+ expect(client.upload(file_path)).to match_array(["#{file_path}/menu.yml"])
43
+ end
44
+ end
45
+
46
+ context 'with `except` option' do
47
+ let(:config_hash) { create_config_hash_with_upload_options('except' => 'menu.yml') }
48
+
49
+ it 'matching translation files to onesky' do
50
+ expect(client.upload(file_path)).to match_array(["#{file_path}/en.yml"])
51
+ end
52
+ end
29
53
  end
30
54
 
31
55
  context 'download' do
@@ -93,6 +117,32 @@ describe Onesky::Rails::FileClient do
93
117
  end
94
118
  end
95
119
 
120
+ context 'with `only` option' do
121
+ let(:config_hash) { create_config_hash_with_upload_options('only' => 'menu.yml') }
122
+ let(:expected_locale_files) { ["#{locale_dir(locale)}/menu.yml"] }
123
+ let(:locale) { 'ja' }
124
+
125
+ it 'downloads matching translation from OneSky and save as YAML files' do
126
+ prepare_download_requests!(locale)
127
+ expect(locale_files(locale)).to be_empty
128
+ client.download(file_path)
129
+ expect(locale_files(locale)).to match_array(expected_locale_files)
130
+ end
131
+ end
132
+
133
+ context 'with `except` option' do
134
+ let(:config_hash) { create_config_hash_with_upload_options('except' => 'menu.yml') }
135
+ let(:expected_locale_files) { ["#{locale_dir(locale)}/ja.yml"] }
136
+ let(:locale) { 'ja' }
137
+
138
+ it 'downloads matching translation from OneSky and save as YAML files' do
139
+ prepare_download_requests!(locale)
140
+ expect(locale_files(locale)).to be_empty
141
+ client.download(file_path)
142
+ expect(locale_files(locale)).to match_array(expected_locale_files)
143
+ end
144
+ end
145
+
96
146
  def prepare_download_requests!(locale)
97
147
  Timecop.freeze
98
148
  file_names.keys.each do |file_name|
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onesky-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Lam
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-17 00:00:00.000000000 Z
11
+ date: 2016-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: i18n
@@ -162,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
162
  version: '0'
163
163
  requirements: []
164
164
  rubyforge_project:
165
- rubygems_version: 2.4.6
165
+ rubygems_version: 2.5.1
166
166
  signing_key:
167
167
  specification_version: 4
168
168
  summary: Rails plugin to sync string files with OneSky