Class: MiddlemanDato::MiddlemanExtension

Inherits:
Middleman::Extension
  • Object
show all
Defined in:
lib/middleman_dato/middleman_extension.rb

Defined Under Namespace

Modules: InstanceMethods

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options_hash = {}, &block) ⇒ MiddlemanExtension

Returns a new instance of MiddlemanExtension.



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/middleman_dato/middleman_extension.rb', line 27

def initialize(app, options_hash = {}, &block)
  super

  return if app.mode?(:config)

  @loader = loader = Dato::Local::Loader.new(
    client,
    options_hash[:preview]
  )

  loader.load

  app.after_configuration do
    if options_hash[:live_reload] && !app.build?
      loader.watch do
        puts "DatoCMS content changed!"
        app.sitemap.rebuild_resource_list!(:touched_dato_content)
      end
    end
  end
end

Instance Attribute Details

#loaderObject (readonly)

Returns the value of attribute loader.



13
14
15
# File 'lib/middleman_dato/middleman_extension.rb', line 13

def loader
  @loader
end

Instance Method Details

#clientObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/middleman_dato/middleman_extension.rb', line 49

def client
  token = options[:token]

  if token.blank? && File.exist?('.env')
    token = Dotenv::Environment.new('.env')['DATO_API_TOKEN']
  end

  if token.blank?
    raise RuntimeError, 'Missing DatoCMS site API token!'
  end

  @client ||= Dato::Site::Client.new(
    token,
    base_url: options[:api_base_url],
    environment: options[:environment],
    extra_headers: {
      'X-Reason' => 'dump',
      'X-SSG' => 'middleman'
    }
  )
end

#dato_collectorObject



71
72
73
74
75
# File 'lib/middleman_dato/middleman_extension.rb', line 71

def dato_collector
  app.extensions[:collections].live_collector do |app, resources|
    app.dato_items_repo
  end
end

#items_repoObject



77
78
79
# File 'lib/middleman_dato/middleman_extension.rb', line 77

def items_repo
  loader.items_repo
end