jekyll-algolia 1.0.0 → 1.0.1

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: 3612f58d87d7a769325fb89b2e76ea707278083a
4
- data.tar.gz: 3a9e7d91f9183086831d2b276b7fd9e980fcd55a
3
+ metadata.gz: 2de0f9bc4ac08d49c4f78093c469d778b1d69001
4
+ data.tar.gz: dcce0aafc47b6661063e645f03bed64b3cc849d9
5
5
  SHA512:
6
- metadata.gz: ac705f398e1afc3db83611145a1070f713fffa6b5b51c34ef1dd8d257aad4aa3004dd2bc012234cbe88012cbe3cb594a32ceec1e108803c2566d8341cef536ac
7
- data.tar.gz: 3b2728420b29fbef3e8cbf258c355e84760f46657b7cdcf76d9c1f48eec48cd2192e373f23b9fcdd5206747e3262c5c9a5adbae9b8c58b80ee08efc2522317e4
6
+ metadata.gz: 8c898016647a648a10d3aeaa270aeca5257399a47a124e55902581ae935cedab196295204f6e4177d58b4a56b544fd54f9825b8dc7198995fa2dfa367de1c875
7
+ data.tar.gz: 486d9709cd1de0ed485d921e2c22640776c36fc7d45edabceff1f45e9f50f65879b7e0971daa9d038ffbe5d8e5143bb256cd00429203f0590c17a243eba25bca
data/README.md CHANGED
@@ -19,7 +19,7 @@ This will push the content of your Jekyll website to your Algolia index.
19
19
  ## Documentation
20
20
 
21
21
  Full documentation can be found on
22
- [https://community.algolia.com/jekyll-algolia/](https://community.algolia.com/jekyll-algolia/)
22
+ [https://community.algolia.com/jekyll-algolia/](https://community.algolia.com/jekyll-algolia/getting-started.html)
23
23
 
24
24
  ## Installation
25
25
 
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'jekyll/commands/algolia'
4
+ require 'date'
4
5
 
5
6
  module Jekyll
6
7
  # Requirable file, loading all dependencies.
@@ -27,10 +28,17 @@ module Jekyll
27
28
  # monkey-patching its `write` method and building it.
28
29
  def self.init(config = {})
29
30
  @config = config
31
+ @start_time = Time.now
30
32
  @site = Jekyll::Algolia::Site.new(@config)
31
33
 
32
34
  exit 1 unless Configurator.assert_valid_credentials
33
35
 
36
+ if Configurator.dry_run?
37
+ Logger.log('W:==== THIS IS A DRY RUN ====')
38
+ Logger.log('W: - No records will be pushed to your index')
39
+ Logger.log('W: - No settings will be updated on your index')
40
+ end
41
+
34
42
  self
35
43
  end
36
44
 
@@ -43,6 +51,7 @@ module Jekyll
43
51
  # Note: The internal list of files to be processed will only be created when
44
52
  # calling .process
45
53
  def self.run
54
+ Logger.log('I:Processing site...')
46
55
  @site.process
47
56
  end
48
57
 
@@ -61,19 +70,23 @@ module Jekyll
61
70
  @site
62
71
  end
63
72
 
73
+ # Public: Get access to the time at which the command was run
74
+ #
75
+ # Jekyll will override some date with the current time, and we'll need to
76
+ # keep them as nil, so we have to compare to this date to assume it has been
77
+ # overwritten
78
+ def self.start_time
79
+ @start_time
80
+ end
81
+
64
82
  # A Jekyll::Site subclass that overrides #write from the parent class to
65
83
  # create JSON records out of rendered documents and push those records
66
84
  # to Algolia instead of writing files to disk.
67
85
  class Site < Jekyll::Site
68
86
  def write
69
- if Configurator.dry_run?
70
- Logger.log('W:==== THIS IS A DRY RUN ====')
71
- Logger.log('W: - No records will be pushed to your index')
72
- Logger.log('W: - No settings will be updated on your index')
73
- end
74
-
75
87
  records = []
76
88
  files = []
89
+ Logger.log('I:Extracting records...')
77
90
  each_site_file do |file|
78
91
  # Skip files that should not be indexed
79
92
  is_indexable = FileBrowser.indexable?(file)
@@ -43,7 +43,18 @@ module Jekyll
43
43
  # `jekyll-paginate` automatically creates pages to paginate through posts.
44
44
  # We don't want to index those
45
45
  def self.pagination_page?(file)
46
- Utils.match?(file.path, %r{page([0-9]*)/index\.html$})
46
+ # paginate_path contains a special `:num` part that is the page number
47
+ # We convert that to a regexp
48
+ paginate_path = Configurator.get('paginate_path')
49
+ paginate_path_as_regexp = paginate_path.gsub(':num', '([0-9]*)')
50
+
51
+ regexp = %r{#{paginate_path_as_regexp}/index\.html$}
52
+
53
+ # Make sure all file paths start with a / for comparison
54
+ filepath = file.path
55
+ filepath = "/#{filepath}" unless filepath[0] == '/'
56
+
57
+ Utils.match?(filepath, regexp)
47
58
  end
48
59
 
49
60
  # Public: Check if the file has one of the allowed extensions
@@ -200,13 +211,25 @@ module Jekyll
200
211
  #
201
212
  # file - The Jekyll file
202
213
  #
203
- # All collections have a date, either taken from the filename, or the
204
- # `date` config set in the front-matter. Even if none is set, the current
205
- # date is taken by default.
214
+ # All collections (including posts) will have a date taken either from the
215
+ # front-matter or the filename prefix. If none is set, Jekyll will use the
216
+ # current date.
217
+ #
218
+ # For pages, only dates defined in the front-matter will be used.
219
+ #
220
+ # Note that because the default date is the current one if none is
221
+ # defined, we have to make sure the date is actually nil when we index it.
222
+ # Otherwise the diff indexing mode will think that records have changed
223
+ # while they haven't.
206
224
  def self.date(file)
207
225
  date = file.data['date']
208
226
  return nil if date.nil?
209
227
 
228
+ # The date is *exactly* the time where the `jekyll algolia` was run.
229
+ # What a coincidence! It's a safe bet to assume that the original date
230
+ # was nil and has been overwritten by Jekyll
231
+ return nil if date.to_i == Jekyll::Algolia.start_time.to_i
232
+
210
233
  date.to_i
211
234
  end
212
235
 
@@ -94,6 +94,9 @@ module Jekyll
94
94
  # processed, but makes debugging easier when comparing arrays is needed.
95
95
  def self.remote_object_ids(index)
96
96
  list = []
97
+ Logger.verbose(
98
+ "I:Inspecting existing records in index #{index.name}..."
99
+ )
97
100
  begin
98
101
  index.browse(attributesToRetrieve: 'objectID') do |hit|
99
102
  list << hit['objectID']
@@ -154,7 +157,7 @@ module Jekyll
154
157
  return
155
158
  end
156
159
 
157
- Logger.log('I:Pushing records to Algolia...')
160
+ Logger.log("I:Updating records in index #{index.name}...")
158
161
 
159
162
  # Delete remote records that are no longer available locally
160
163
  delete_records_by_id(index, old_records_ids)
@@ -42,7 +42,7 @@ module Jekyll
42
42
  def self.known_message(message_id, metadata = {})
43
43
  file = File.expand_path(
44
44
  File.join(
45
- __dir__, '../../..', 'errors', "#{message_id}.txt"
45
+ __dir__, '../..', 'errors', "#{message_id}.txt"
46
46
  )
47
47
  )
48
48
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Jekyll
4
4
  module Algolia
5
- VERSION = '1.0.0'
5
+ VERSION = '1.0.1'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-algolia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Carry
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-21 00:00:00.000000000 Z
11
+ date: 2017-12-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: algolia_html_extractor
@@ -256,16 +256,16 @@ extra_rdoc_files: []
256
256
  files:
257
257
  - CONTRIBUTING.md
258
258
  - README.md
259
- - errors/invalid_credentials.txt
260
- - errors/invalid_credentials_for_tmp_index.txt
261
- - errors/invalid_index_name.txt
262
- - errors/missing_api_key.txt
263
- - errors/missing_application_id.txt
264
- - errors/missing_index_name.txt
265
- - errors/no_records_found.txt
266
- - errors/record_too_big.txt
267
- - errors/unknown_application_id.txt
268
- - errors/unknown_settings.txt
259
+ - lib/errors/invalid_credentials.txt
260
+ - lib/errors/invalid_credentials_for_tmp_index.txt
261
+ - lib/errors/invalid_index_name.txt
262
+ - lib/errors/missing_api_key.txt
263
+ - lib/errors/missing_application_id.txt
264
+ - lib/errors/missing_index_name.txt
265
+ - lib/errors/no_records_found.txt
266
+ - lib/errors/record_too_big.txt
267
+ - lib/errors/unknown_application_id.txt
268
+ - lib/errors/unknown_settings.txt
269
269
  - lib/jekyll-algolia.rb
270
270
  - lib/jekyll/algolia/configurator.rb
271
271
  - lib/jekyll/algolia/error_handler.rb