Class: Nanoc::Int::Compiler

Inherits:
Object
  • Object
show all
Defined in:
lib/nanoc/base/services/compiler.rb

Defined Under Namespace

Modules: Phases, Stages

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(site, compiled_content_cache:, checksum_store:, action_sequence_store:, action_provider:, dependency_store:, outdatedness_store:) ⇒ Compiler

Returns a new instance of Compiler



7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/nanoc/base/services/compiler.rb', line 7

def initialize(site, compiled_content_cache:, checksum_store:, action_sequence_store:, action_provider:, dependency_store:, outdatedness_store:)
  @site = site

  @compiled_content_cache = compiled_content_cache
  @checksum_store         = checksum_store
  @action_sequence_store  = action_sequence_store
  @dependency_store       = dependency_store
  @action_provider        = action_provider
  @outdatedness_store     = outdatedness_store

  @snapshot_repo = Nanoc::Int::SnapshotRepo.new
end

Class Method Details

.new_for(site) ⇒ Object



21
22
23
# File 'lib/nanoc/base/services/compiler.rb', line 21

def self.new_for(site)
  Nanoc::Int::CompilerLoader.new.load(site)
end

Instance Method Details

#compilation_context(reps:) ⇒ Object



86
87
88
89
90
91
92
93
94
# File 'lib/nanoc/base/services/compiler.rb', line 86

def compilation_context(reps:)
  Nanoc::Int::CompilationContext.new(
    action_provider: @action_provider,
    reps: reps,
    site: @site,
    compiled_content_cache: @compiled_content_cache,
    snapshot_repo: @snapshot_repo,
  )
end

#run_until_endObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/nanoc/base/services/compiler.rb', line 69

def run_until_end
  res = run_until_precompiled
  action_sequences = res.fetch(:action_sequences)
  reps = res.fetch(:reps)
  checksums = res.fetch(:checksums)
  outdated_items = res.fetch(:outdated_items)

  run_stage(forget_outdated_dependencies_stage, outdated_items)
  run_stage(store_pre_compilation_state_stage(action_sequences, reps), checksums)
  run_stage(prune_stage(reps))
  run_stage(compile_reps_stage(action_sequences, reps))
  run_stage(store_post_compilation_state_stage)
  run_stage(postprocess_stage(reps), self)
ensure
  run_stage(cleanup_stage)
end

#run_until_precompiledObject



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/nanoc/base/services/compiler.rb', line 45

def run_until_precompiled
  @_res_precompiled ||= begin
    prev = run_until_reps_built
    action_sequences = prev.fetch(:action_sequences)
    reps = prev.fetch(:reps)

    run_stage(load_stores_stage)
    checksums = run_stage(calculate_checksums_stage)
    outdatedness_checker = create_outdatedness_checker(
      checksums: checksums,
      action_sequences: action_sequences,
      reps: reps,
    )
    outdated_items = run_stage(determine_outdatedness_stage(outdatedness_checker, reps))

    prev.merge(
      checksums: checksums,
      dependency_store: @dependency_store,
      outdatedness_checker: outdatedness_checker,
      outdated_items: outdated_items,
    )
  end
end

#run_until_preprocessedObject



25
26
27
28
29
30
# File 'lib/nanoc/base/services/compiler.rb', line 25

def run_until_preprocessed
  @_res_preprocessed ||= begin
    run_stage(preprocess_stage)
    {}
  end
end

#run_until_reps_builtObject



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/nanoc/base/services/compiler.rb', line 32

def run_until_reps_built
  @_res_reps_built ||= begin
    prev = run_until_preprocessed

    res = run_stage(build_reps_stage)

    prev.merge(
      reps: res.fetch(:reps),
      action_sequences: res.fetch(:action_sequences),
    )
  end
end