module Jekyll::Algolia

def self.init(config = {})

monkey-patching its `write` method and building it.
The gist of the plugin works by instanciating a Jekyll site,

options passed on the command line)
config - A hash of Jekyll config option (merge of _config.yml options and

Public: Init the Algolia module
def self.init(config = {})
  @start_time = Time.now
  config = Configurator.init(config).config
  @site = Jekyll::Algolia::Site.new(config)
  exit 1 unless Configurator.assert_valid_credentials
  Configurator.warn_of_deprecated_options
  if Configurator.dry_run?
    Logger.log('W:==== THIS IS A DRY RUN ====')
    Logger.log('W:  - No records will be pushed to your index')
    Logger.log('W:  - No settings will be updated on your index')
  end
  self
end

def self.run

calling .process
Note: The internal list of files to be processed will only be created when

instead.
build` except that our monkey patched `write` method will be called
Actually "process" the site, which will acts just like a regular `jekyll

Public: Run the main Algolia module
def self.run
  Logger.log('I:Processing site...')
  @site.process
end

def self.site

Tests will need access to the inner Jekyll website so we expose it here

Public: Get access to the Jekyll site
def self.site
  @site
end

def self.start_time

that time to nil.
so we'll keep track of the time at build time and revert any page build at
run. The plugin needs those values to stay at nil if they did not change,
Jekyll will always set the updated time of pages to the time of the build

Public: Get access to the time at which the command was run
def self.start_time
  @start_time
end