jekyll-contentful-data-import 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1babd5463d86525723186512d0a5ff1788b032c8
4
- data.tar.gz: beedb4ade62bd19fa81a27afaf28070113018906
3
+ metadata.gz: 07ed83d764273aa31d35ff66ccf3b1bdfb4f8d63
4
+ data.tar.gz: 9a354c8e5337733a735d375129b0e7f0ed878677
5
5
  SHA512:
6
- metadata.gz: 5757f7558659b94941ac13d42750943c428b0827eac1eb0d5c7465447676d84a8a3bcca25e14ee699d66c2ee620edd31162aeff9ac89551ac2f7b32c5de1aed1
7
- data.tar.gz: 391ff1027438166c09188e906e334cb04ef99acdd0987e4417a54c5cb1b41d01e8de6511e0a27b351fc7dba7728d9e9fcc8b851025dfb5553dd4411cd5001a9a
6
+ metadata.gz: 785ea7b18d834a822eec3a6f884d422af77ad477b85a49e7deb0666857904b8a9ac7ac9b5c77d3d5dd780a7ebe533ce50b1f1139e28b99bc61ce5a143d5e3387
7
+ data.tar.gz: 5e5e68fb849d44072850b7ed712543f87acc8b142fa716204d2ff347d99231c535805abb93172a682d6122080c879d37c18a20fefadc3003030470c2b930b606
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v1.4.0
6
+ ### Fixed
7
+ * Fix Locale support [#29](https://github.com/contentful/jekyll-contentful-data-import/issues/29)
8
+
9
+ ### Added
10
+ * Allow override destination directory using the `destination` key in the configuration [#27](https://github.com/contentful/jekyll-contentful-data-import/pull/27)
11
+
5
12
  ## v1.3.0
6
13
  ### Added
7
14
  * Added the possibility to use `space` and `access_token` from environment variables [#14](https://github.com/contentful/jekyll-contentful-data-import/issues/14)
data/README.md CHANGED
@@ -54,7 +54,7 @@ contentful:
54
54
  client_options: # Optional
55
55
  api_url: 'preview.contentful.com' # Defaults to 'api.contentful.com' which is Production
56
56
  base_path: app_path # Optional - Defaults to Current directory
57
-
57
+ destination: destination_in_data # Optional - Defaults to _data/contentful/spaces
58
58
  ```
59
59
 
60
60
  Parameter | Description
@@ -67,6 +67,7 @@ all_entries_page_size | Integer, the amount of maximum entries per CDA Request w
67
67
  content_types | Hash describing the mapping applied to entries of the imported content types
68
68
  client_options | Hash describing Contentful::Client configuration. See [contentful.rb](https://github.com/contentful/contentful.rb) for more info.
69
69
  base_path | String with path to your Jekyll Application, defaults to current directory. Path is relative to your current location.
70
+ destination | String with path within _data under which to store the output yaml file. Defaults to contentful/spaces
70
71
 
71
72
  You can add multiple spaces to your configuration
72
73
 
@@ -99,27 +100,6 @@ class MySysMapper < ::Jekyll::Contentful::Mappers::Base
99
100
  end
100
101
  ```
101
102
 
102
- ### Hiding Space and Access Token in Public Repositories
103
-
104
- In most cases you may want to avoid including your credentials in publicly available sites,
105
- therefore you can hide your `space` and `access_token` by replacing them with `ENV_` prepended variables.
106
-
107
- This will look for the values in your system.
108
-
109
- For example:
110
-
111
- ```yaml
112
- contentful:
113
- spaces:
114
- - example:
115
- space: ENV_CONTENTFUL_SPACE_ID
116
- access_token: ENV_CONTENTFUL_ACCESS_TOKEN
117
- ```
118
-
119
- With this setup, your Space ID will be looked upon on `ENV['CONTENTFUL_SPACE_ID']` and your Access Token
120
- on `ENV['CONTENTFUL_ACCESS_TOKEN']`. This way it is safe to share your code, without having to worry
121
- about your credentials.
122
-
123
103
  #### Caveats
124
104
 
125
105
  Jekyll itself only allows you to import code as plugins only for its recognized plugin entry points.
@@ -138,6 +118,43 @@ end
138
118
 
139
119
  Then proceed to run: `bundle exec rake contentful`
140
120
 
121
+ ### Hiding Space and Access Token in Public Repositories
122
+
123
+ In most cases you may want to avoid including your credentials in publicly available sites,
124
+ therefore you can do the following:
125
+
126
+ 1. `bundle update`—make sure your gem version supports ENV_ variables
127
+
128
+ 2. Set up your _config like so:
129
+
130
+ ```yaml
131
+ contentful:
132
+ spaces:
133
+ - example:
134
+ space: ENV_CONTENTFUL_SPACE_ID
135
+ access_token: ENV_CONTENTFUL_ACCESS_TOKEN
136
+ ```
137
+ (Your Space ID will be looked upon on `ENV['CONTENTFUL_SPACE_ID']` and your Access Token
138
+ on `ENV['CONTENTFUL_ACCESS_TOKEN']`.)
139
+
140
+ 3. Either add the following variables to your shell's configuration file (.bashrc or .bash_profile, for example):
141
+
142
+ ```bash
143
+ export CONTENTFUL_ACCESS_TOKEN=abc123
144
+ export CONTENTFUL_SPACE_ID=abc123
145
+ ```
146
+ (And run `source ~/.bashrc` or open new terminal to enable changes.)
147
+
148
+ Or specify them on the command line:
149
+
150
+ ```bash
151
+ CONTENTFUL_ACCESS_TOKEN=abc123 CONTENTFUL_SPACE_ID=abc123 jekyll contentful
152
+ ```
153
+ 4. Party.
154
+
155
+ This way, it is safe to share your code without having to worry
156
+ about your credentials.
157
+
141
158
  ## Examples
142
159
 
143
160
  You can find working examples of multiple uses [here](https://github.com/contentful/contentful_jekyll_examples).
@@ -31,7 +31,10 @@ module Jekyll
31
31
  end
32
32
 
33
33
  def destination_directory
34
- File.join(base_directory, DATA_FOLDER, CONTENTFUL_FOLDER, SPACES_FOLDER)
34
+ destination_dir = File.join(base_directory, DATA_FOLDER, CONTENTFUL_FOLDER, SPACES_FOLDER)
35
+ destination_dir = File.join(base_directory, DATA_FOLDER, config['destination']) if config.key?('destination')
36
+
37
+ destination_dir
35
38
  end
36
39
 
37
40
  def destination_file
@@ -37,7 +37,7 @@ module Jekyll
37
37
  end
38
38
 
39
39
  def has_multiple_locales?
40
- config.fetch('cda_query', {}).fetch(:locale, nil) == '*'
40
+ config.fetch('cda_query', {}).fetch('locale', nil) == '*'
41
41
  end
42
42
 
43
43
  def map_field(field_name, field_value)
@@ -57,6 +57,14 @@ module Jekyll
57
57
  map_entry(value)
58
58
  when ::Array
59
59
  map_array(value)
60
+ when ::Symbol
61
+ value.to_s
62
+ when ::Hash
63
+ result = {}
64
+ value.each do |k, v|
65
+ result[k.to_s] = map_value(v)
66
+ end
67
+ result
60
68
  else
61
69
  value
62
70
  end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Contentful
3
- VERSION = "1.3.0"
3
+ VERSION = "1.4.0"
4
4
  end
5
5
  end
@@ -43,6 +43,13 @@ describe Jekyll::Contentful::DataExporter do
43
43
  expected = File.join(Dir.pwd, 'foo_dir', '_data', 'contentful', 'spaces', 'foo.yaml')
44
44
  expect(subject.destination_file).to eq(expected)
45
45
  end
46
+
47
+ it 'overridden destination' do
48
+ subject = described_class.new('foo', [], {'base_path' => 'foo_dir', 'destination' => 'bar_path'})
49
+
50
+ expected = File.join(Dir.pwd, 'foo_dir', '_data', 'bar_path', 'foo.yaml')
51
+ expect(subject.destination_file).to eq(expected)
52
+ end
46
53
  end
47
54
 
48
55
  describe '#setup_directory' do
@@ -106,4 +106,28 @@ describe Jekyll::Contentful::Mappers::Base do
106
106
  end
107
107
  end
108
108
  end
109
+
110
+ describe 'issues' do
111
+ describe '#29 - Fix localized entries' do
112
+ it 'should properly serialize a localized entry' do
113
+ config = {'cda_query' => { 'locale' => '*' } }
114
+ fields = {
115
+ 'en-US' => { 'foo' => 'bar' },
116
+ 'de-DE' => { 'foo' => 'baz' }
117
+ }
118
+ entry = EntryDouble.new('foo', ContentTypeDouble.new, fields, true)
119
+ mapper = described_class.new(entry, config)
120
+
121
+ expected = {
122
+ 'sys' => { 'id' => 'foo' },
123
+ 'foo' => {
124
+ 'en-US' => 'bar',
125
+ 'de-DE' => 'baz'
126
+ }
127
+ }
128
+
129
+ expect(mapper.map).to match expected
130
+ end
131
+ end
132
+ end
109
133
  end
data/spec/spec_helper.rb CHANGED
@@ -7,6 +7,11 @@ require 'rspec'
7
7
  require 'jekyll'
8
8
  require File.expand_path('../../lib/jekyll-contentful-data-import.rb', __FILE__)
9
9
 
10
+ RSpec.configure do |config|
11
+ config.filter_run :focus => true
12
+ config.run_all_when_everything_filtered = true
13
+ end
14
+
10
15
  VCR.configure do |config|
11
16
  config.cassette_library_dir = "spec/fixtures/vcr_fixtures"
12
17
  config.hook_into :webmock
@@ -33,12 +38,21 @@ class ContentTypeDouble
33
38
  end
34
39
 
35
40
  class EntryDouble < Contentful::DynamicEntry
36
- attr_reader :id, :content_type, :fields
41
+ attr_reader :id, :content_type
37
42
 
38
- def initialize(id = '', content_type = ContentTypeDouble.new, fields = {})
43
+ def initialize(id = '', content_type = ContentTypeDouble.new, fields = {}, locales = false)
39
44
  @id = id
40
45
  @content_type = content_type
41
- @fields = fields
46
+
47
+ if locales
48
+ @fields = fields
49
+ else
50
+ @fields = { 'en-US' => fields }
51
+ end
52
+ end
53
+
54
+ def locale
55
+ 'en-US'
42
56
  end
43
57
  end
44
58
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-contentful-data-import
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Contentful GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-26 00:00:00.000000000 Z
11
+ date: 2016-11-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll