nanoc-core 4.11.12 → 4.11.13
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 +4 -4
- data/lib/nanoc/core.rb +37 -0
- data/lib/nanoc/core/basic_item_rep_collection_view.rb +88 -0
- data/lib/nanoc/core/basic_item_rep_view.rb +83 -0
- data/lib/nanoc/core/basic_item_view.rb +54 -0
- data/lib/nanoc/core/checksummer.rb +2 -0
- data/lib/nanoc/core/compilation_item_rep_collection_view.rb +12 -0
- data/lib/nanoc/core/compilation_item_rep_view.rb +51 -0
- data/lib/nanoc/core/compilation_item_view.rb +47 -0
- data/lib/nanoc/core/compilation_phases/abstract.rb +48 -0
- data/lib/nanoc/core/compilation_phases/cache.rb +43 -0
- data/lib/nanoc/core/compilation_phases/mark_done.rb +23 -0
- data/lib/nanoc/core/compilation_phases/notify.rb +19 -0
- data/lib/nanoc/core/compilation_phases/recalculate.rb +49 -0
- data/lib/nanoc/core/compilation_phases/resume.rb +52 -0
- data/lib/nanoc/core/compilation_phases/write.rb +84 -0
- data/lib/nanoc/core/compilation_stages/build_reps.rb +36 -0
- data/lib/nanoc/core/compilation_stages/calculate_checksums.rb +42 -0
- data/lib/nanoc/core/compilation_stages/cleanup.rb +43 -0
- data/lib/nanoc/core/compilation_stages/compile_reps.rb +96 -0
- data/lib/nanoc/core/compilation_stages/determine_outdatedness.rb +49 -0
- data/lib/nanoc/core/compilation_stages/forget_outdated_dependencies.rb +20 -0
- data/lib/nanoc/core/compilation_stages/load_stores.rb +35 -0
- data/lib/nanoc/core/compilation_stages/postprocess.rb +21 -0
- data/lib/nanoc/core/compilation_stages/preprocess.rb +32 -0
- data/lib/nanoc/core/compilation_stages/prune.rb +30 -0
- data/lib/nanoc/core/compilation_stages/store_post_compilation_state.rb +20 -0
- data/lib/nanoc/core/compilation_stages/store_pre_compilation_state.rb +32 -0
- data/lib/nanoc/core/compiler.rb +214 -0
- data/lib/nanoc/core/compiler_loader.rb +48 -0
- data/lib/nanoc/core/config_loader.rb +95 -0
- data/lib/nanoc/core/config_view.rb +67 -0
- data/lib/nanoc/core/configuration.rb +2 -4
- data/lib/nanoc/core/document_view_mixin.rb +87 -0
- data/lib/nanoc/core/errors.rb +97 -0
- data/lib/nanoc/core/executor.rb +134 -0
- data/lib/nanoc/core/feature.rb +92 -0
- data/lib/nanoc/core/filter.rb +269 -0
- data/lib/nanoc/core/identifiable_collection_view.rb +111 -0
- data/lib/nanoc/core/item_collection_with_reps_view.rb +12 -0
- data/lib/nanoc/core/item_collection_without_reps_view.rb +12 -0
- data/lib/nanoc/core/item_rep_builder.rb +54 -0
- data/lib/nanoc/core/item_rep_selector.rb +67 -0
- data/lib/nanoc/core/item_rep_writer.rb +85 -0
- data/lib/nanoc/core/layout_collection_view.rb +12 -0
- data/lib/nanoc/core/layout_view.rb +9 -0
- data/lib/nanoc/core/mutable_config_view.rb +16 -0
- data/lib/nanoc/core/mutable_document_view_mixin.rb +60 -0
- data/lib/nanoc/core/mutable_identifiable_collection_view.rb +19 -0
- data/lib/nanoc/core/mutable_item_collection_view.rb +34 -0
- data/lib/nanoc/core/mutable_item_view.rb +9 -0
- data/lib/nanoc/core/mutable_layout_collection_view.rb +26 -0
- data/lib/nanoc/core/mutable_layout_view.rb +9 -0
- data/lib/nanoc/core/outdatedness_checker.rb +222 -0
- data/lib/nanoc/core/outdatedness_rules/attributes_modified.rb +41 -0
- data/lib/nanoc/core/outdatedness_rules/code_snippets_modified.rb +31 -0
- data/lib/nanoc/core/outdatedness_rules/content_modified.rb +21 -0
- data/lib/nanoc/core/outdatedness_rules/item_collection_extended.rb +20 -0
- data/lib/nanoc/core/outdatedness_rules/layout_collection_extended.rb +20 -0
- data/lib/nanoc/core/outdatedness_rules/not_written.rb +17 -0
- data/lib/nanoc/core/outdatedness_rules/rules_modified.rb +45 -0
- data/lib/nanoc/core/outdatedness_rules/uses_always_outdated_filter.rb +26 -0
- data/lib/nanoc/core/post_compile_item_collection_view.rb +12 -0
- data/lib/nanoc/core/post_compile_item_rep_collection_view.rb +12 -0
- data/lib/nanoc/core/post_compile_item_rep_view.rb +33 -0
- data/lib/nanoc/core/post_compile_item_view.rb +20 -0
- data/lib/nanoc/core/pruner.rb +119 -0
- data/lib/nanoc/core/site_loader.rb +102 -0
- data/lib/nanoc/core/trivial_error.rb +10 -0
- data/lib/nanoc/core/version.rb +1 -1
- data/lib/nanoc/core/view.rb +43 -0
- data/lib/nanoc/core/view_context_for_compilation.rb +6 -6
- metadata +95 -2
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class DetermineOutdatedness < Nanoc::Core::CompilationStage
|
7
|
+
include Nanoc::Core::ContractsSupport
|
8
|
+
|
9
|
+
def initialize(reps:, outdatedness_checker:, outdatedness_store:)
|
10
|
+
@reps = reps
|
11
|
+
@outdatedness_checker = outdatedness_checker
|
12
|
+
@outdatedness_store = outdatedness_store
|
13
|
+
end
|
14
|
+
|
15
|
+
contract C::None => C::Any
|
16
|
+
def run
|
17
|
+
outdated_items = select_outdated_items
|
18
|
+
outdated_reps = reps_of_items(outdated_items)
|
19
|
+
|
20
|
+
store_outdated_reps(outdated_reps)
|
21
|
+
|
22
|
+
outdated_items
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def store_outdated_reps(reps)
|
28
|
+
@outdatedness_store.clear
|
29
|
+
reps.each { |r| @outdatedness_store.add(r) }
|
30
|
+
end
|
31
|
+
|
32
|
+
def select_outdated_items
|
33
|
+
@reps
|
34
|
+
.select { |r| outdated?(r) }
|
35
|
+
.map(&:item)
|
36
|
+
.uniq
|
37
|
+
end
|
38
|
+
|
39
|
+
def reps_of_items(items)
|
40
|
+
Set.new(items.flat_map { |i| @reps[i] })
|
41
|
+
end
|
42
|
+
|
43
|
+
def outdated?(rep)
|
44
|
+
@outdatedness_store.include?(rep) || @outdatedness_checker.outdated?(rep)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class ForgetOutdatedDependencies < Nanoc::Core::CompilationStage
|
7
|
+
include Nanoc::Core::ContractsSupport
|
8
|
+
|
9
|
+
def initialize(dependency_store:)
|
10
|
+
@dependency_store = dependency_store
|
11
|
+
end
|
12
|
+
|
13
|
+
contract C::IterOf[Nanoc::Core::Item] => C::Any
|
14
|
+
def run(outdated_items)
|
15
|
+
outdated_items.each { |i| @dependency_store.forget_dependencies_for(i) }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class LoadStores < Nanoc::Core::CompilationStage
|
7
|
+
include Nanoc::Core::ContractsSupport
|
8
|
+
|
9
|
+
def initialize(checksum_store:, compiled_content_cache:, dependency_store:, action_sequence_store:, outdatedness_store:)
|
10
|
+
@checksum_store = checksum_store
|
11
|
+
@compiled_content_cache = compiled_content_cache
|
12
|
+
@dependency_store = dependency_store
|
13
|
+
@action_sequence_store = action_sequence_store
|
14
|
+
@outdatedness_store = outdatedness_store
|
15
|
+
end
|
16
|
+
|
17
|
+
contract C::None => C::Any
|
18
|
+
def run
|
19
|
+
load_store(@checksum_store)
|
20
|
+
load_store(@compiled_content_cache)
|
21
|
+
load_store(@dependency_store)
|
22
|
+
load_store(@action_sequence_store)
|
23
|
+
load_store(@outdatedness_store)
|
24
|
+
end
|
25
|
+
|
26
|
+
contract Nanoc::Core::Store => C::Any
|
27
|
+
def load_store(store)
|
28
|
+
Nanoc::Core::Instrumentor.call(:store_loaded, store.class) do
|
29
|
+
store.load
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class Postprocess < Nanoc::Core::CompilationStage
|
7
|
+
include Nanoc::Core::ContractsSupport
|
8
|
+
|
9
|
+
def initialize(action_provider:, site:)
|
10
|
+
@action_provider = action_provider
|
11
|
+
@site = site
|
12
|
+
end
|
13
|
+
|
14
|
+
contract Nanoc::Core::Compiler => C::Any
|
15
|
+
def run(compiler)
|
16
|
+
@action_provider.postprocess(@site, compiler)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class Preprocess < Nanoc::Core::CompilationStage
|
7
|
+
def initialize(action_provider:, site:, dependency_store:, checksum_store:)
|
8
|
+
@action_provider = action_provider
|
9
|
+
@site = site
|
10
|
+
@dependency_store = dependency_store
|
11
|
+
@checksum_store = checksum_store
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
return if @site.preprocessed?
|
16
|
+
|
17
|
+
if @action_provider.need_preprocessing?
|
18
|
+
@site.data_source = Nanoc::Core::InMemoryDataSource.new(@site.items, @site.layouts, @site.data_source)
|
19
|
+
@action_provider.preprocess(@site)
|
20
|
+
|
21
|
+
@dependency_store.items = @site.items
|
22
|
+
@dependency_store.layouts = @site.layouts
|
23
|
+
@checksum_store.objects = @site.items.to_a + @site.layouts.to_a + @site.code_snippets + [@site.config]
|
24
|
+
end
|
25
|
+
|
26
|
+
@site.mark_as_preprocessed
|
27
|
+
@site.freeze
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class Prune < Nanoc::Core::CompilationStage
|
7
|
+
def initialize(config:, reps:)
|
8
|
+
@config = config
|
9
|
+
@reps = reps
|
10
|
+
end
|
11
|
+
|
12
|
+
def run
|
13
|
+
if @config[:prune][:auto_prune]
|
14
|
+
Nanoc::Core::Pruner.new(@config, @reps, exclude: prune_config_exclude).run
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def prune_config
|
21
|
+
@config[:prune] || {}
|
22
|
+
end
|
23
|
+
|
24
|
+
def prune_config_exclude
|
25
|
+
prune_config[:exclude] || {}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class StorePostCompilationState < Nanoc::Core::CompilationStage
|
7
|
+
include Nanoc::Core::ContractsSupport
|
8
|
+
|
9
|
+
def initialize(dependency_store:)
|
10
|
+
@dependency_store = dependency_store
|
11
|
+
end
|
12
|
+
|
13
|
+
contract C::None => C::Any
|
14
|
+
def run
|
15
|
+
@dependency_store.store
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
module CompilationStages
|
6
|
+
class StorePreCompilationState < Nanoc::Core::CompilationStage
|
7
|
+
include Nanoc::Core::ContractsSupport
|
8
|
+
|
9
|
+
def initialize(reps:, layouts:, checksum_store:, action_sequence_store:, action_sequences:)
|
10
|
+
@reps = reps
|
11
|
+
@layouts = layouts
|
12
|
+
@checksum_store = checksum_store
|
13
|
+
@action_sequence_store = action_sequence_store
|
14
|
+
@action_sequences = action_sequences
|
15
|
+
end
|
16
|
+
|
17
|
+
contract Nanoc::Core::ChecksumCollection => C::Any
|
18
|
+
def run(checksums)
|
19
|
+
# Calculate action sequence
|
20
|
+
(@reps.to_a + @layouts.to_a).each do |obj|
|
21
|
+
@action_sequence_store[obj] = @action_sequences[obj].serialize
|
22
|
+
end
|
23
|
+
@action_sequence_store.store
|
24
|
+
|
25
|
+
# Set checksums
|
26
|
+
@checksum_store.checksums = checksums.to_h
|
27
|
+
@checksum_store.store
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,214 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Nanoc
|
4
|
+
module Core
|
5
|
+
class Compiler
|
6
|
+
include Nanoc::Core::ContractsSupport
|
7
|
+
|
8
|
+
def initialize(site, compiled_content_cache:, checksum_store:, action_sequence_store:, action_provider:, dependency_store:, outdatedness_store:)
|
9
|
+
@site = site
|
10
|
+
|
11
|
+
# Needed because configuration is mutable :(
|
12
|
+
@output_dirs = @site.config.output_dirs
|
13
|
+
|
14
|
+
@compiled_content_cache = compiled_content_cache
|
15
|
+
@checksum_store = checksum_store
|
16
|
+
@action_sequence_store = action_sequence_store
|
17
|
+
@dependency_store = dependency_store
|
18
|
+
@action_provider = action_provider
|
19
|
+
@outdatedness_store = outdatedness_store
|
20
|
+
|
21
|
+
@compiled_content_store = Nanoc::Core::CompiledContentStore.new
|
22
|
+
end
|
23
|
+
|
24
|
+
contract Nanoc::Core::Site => C::Any
|
25
|
+
def self.compile(site)
|
26
|
+
new_for(site).run_until_end
|
27
|
+
end
|
28
|
+
|
29
|
+
contract Nanoc::Core::Site => Nanoc::Core::Compiler
|
30
|
+
def self.new_for(site)
|
31
|
+
Nanoc::Core::CompilerLoader.new.load(site)
|
32
|
+
end
|
33
|
+
|
34
|
+
def run_until_preprocessed
|
35
|
+
@_res_preprocessed ||= begin
|
36
|
+
preprocess_stage.call
|
37
|
+
{}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def run_until_reps_built
|
42
|
+
@_res_reps_built ||= begin
|
43
|
+
prev = run_until_preprocessed
|
44
|
+
|
45
|
+
res = build_reps_stage.call
|
46
|
+
|
47
|
+
prev.merge(
|
48
|
+
reps: res.fetch(:reps),
|
49
|
+
action_sequences: res.fetch(:action_sequences),
|
50
|
+
)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def run_until_precompiled
|
55
|
+
@_res_precompiled ||= begin
|
56
|
+
prev = run_until_reps_built
|
57
|
+
action_sequences = prev.fetch(:action_sequences)
|
58
|
+
reps = prev.fetch(:reps)
|
59
|
+
|
60
|
+
load_stores_stage.call
|
61
|
+
checksums = calculate_checksums_stage.call
|
62
|
+
outdatedness_checker = create_outdatedness_checker(
|
63
|
+
checksums: checksums,
|
64
|
+
action_sequences: action_sequences,
|
65
|
+
reps: reps,
|
66
|
+
)
|
67
|
+
outdated_items = determine_outdatedness_stage(outdatedness_checker, reps).call
|
68
|
+
|
69
|
+
prev.merge(
|
70
|
+
checksums: checksums,
|
71
|
+
dependency_store: @dependency_store,
|
72
|
+
outdatedness_checker: outdatedness_checker,
|
73
|
+
outdated_items: outdated_items,
|
74
|
+
)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def run_until_end
|
79
|
+
res = run_until_precompiled
|
80
|
+
action_sequences = res.fetch(:action_sequences)
|
81
|
+
reps = res.fetch(:reps)
|
82
|
+
checksums = res.fetch(:checksums)
|
83
|
+
outdated_items = res.fetch(:outdated_items)
|
84
|
+
|
85
|
+
forget_outdated_dependencies_stage.call(outdated_items)
|
86
|
+
store_pre_compilation_state_stage(action_sequences, reps).call(checksums)
|
87
|
+
prune_stage(reps).call
|
88
|
+
compile_reps_stage(action_sequences, reps).call
|
89
|
+
store_post_compilation_state_stage.call
|
90
|
+
postprocess_stage.call(self)
|
91
|
+
ensure
|
92
|
+
cleanup_stage.call
|
93
|
+
end
|
94
|
+
|
95
|
+
def compilation_context(reps:)
|
96
|
+
Nanoc::Core::CompilationContext.new(
|
97
|
+
action_provider: @action_provider,
|
98
|
+
reps: reps,
|
99
|
+
site: @site,
|
100
|
+
compiled_content_cache: @compiled_content_cache,
|
101
|
+
compiled_content_store: @compiled_content_store,
|
102
|
+
)
|
103
|
+
end
|
104
|
+
|
105
|
+
private
|
106
|
+
|
107
|
+
def create_outdatedness_checker(checksums:, action_sequences:, reps:)
|
108
|
+
Nanoc::Core::OutdatednessChecker.new(
|
109
|
+
site: @site,
|
110
|
+
checksum_store: @checksum_store,
|
111
|
+
dependency_store: @dependency_store,
|
112
|
+
action_sequence_store: @action_sequence_store,
|
113
|
+
action_sequences: action_sequences,
|
114
|
+
checksums: checksums,
|
115
|
+
reps: reps,
|
116
|
+
)
|
117
|
+
end
|
118
|
+
|
119
|
+
def preprocess_stage
|
120
|
+
@_preprocess_stage ||= ::Nanoc::Core::CompilationStages::Preprocess.new(
|
121
|
+
action_provider: @action_provider,
|
122
|
+
site: @site,
|
123
|
+
dependency_store: @dependency_store,
|
124
|
+
checksum_store: @checksum_store,
|
125
|
+
)
|
126
|
+
end
|
127
|
+
|
128
|
+
def build_reps_stage
|
129
|
+
@_build_reps_stage ||= ::Nanoc::Core::CompilationStages::BuildReps.new(
|
130
|
+
site: @site,
|
131
|
+
action_provider: @action_provider,
|
132
|
+
)
|
133
|
+
end
|
134
|
+
|
135
|
+
def prune_stage(reps)
|
136
|
+
@_prune_stage ||= ::Nanoc::Core::CompilationStages::Prune.new(
|
137
|
+
config: @site.config,
|
138
|
+
reps: reps,
|
139
|
+
)
|
140
|
+
end
|
141
|
+
|
142
|
+
def load_stores_stage
|
143
|
+
@_load_stores_stage ||= ::Nanoc::Core::CompilationStages::LoadStores.new(
|
144
|
+
checksum_store: @checksum_store,
|
145
|
+
compiled_content_cache: @compiled_content_cache,
|
146
|
+
dependency_store: @dependency_store,
|
147
|
+
action_sequence_store: @action_sequence_store,
|
148
|
+
outdatedness_store: @outdatedness_store,
|
149
|
+
)
|
150
|
+
end
|
151
|
+
|
152
|
+
def calculate_checksums_stage
|
153
|
+
@_calculate_checksums_stage ||= ::Nanoc::Core::CompilationStages::CalculateChecksums.new(
|
154
|
+
items: @site.items,
|
155
|
+
layouts: @site.layouts,
|
156
|
+
code_snippets: @site.code_snippets,
|
157
|
+
config: @site.config,
|
158
|
+
)
|
159
|
+
end
|
160
|
+
|
161
|
+
def determine_outdatedness_stage(outdatedness_checker, reps)
|
162
|
+
@_determine_outdatedness_stage ||= ::Nanoc::Core::CompilationStages::DetermineOutdatedness.new(
|
163
|
+
reps: reps,
|
164
|
+
outdatedness_checker: outdatedness_checker,
|
165
|
+
outdatedness_store: @outdatedness_store,
|
166
|
+
)
|
167
|
+
end
|
168
|
+
|
169
|
+
def store_pre_compilation_state_stage(action_sequences, reps)
|
170
|
+
@_store_pre_compilation_state_stage ||= ::Nanoc::Core::CompilationStages::StorePreCompilationState.new(
|
171
|
+
reps: reps,
|
172
|
+
layouts: @site.layouts,
|
173
|
+
checksum_store: @checksum_store,
|
174
|
+
action_sequence_store: @action_sequence_store,
|
175
|
+
action_sequences: action_sequences,
|
176
|
+
)
|
177
|
+
end
|
178
|
+
|
179
|
+
def compile_reps_stage(action_sequences, reps)
|
180
|
+
@_compile_reps_stage ||= ::Nanoc::Core::CompilationStages::CompileReps.new(
|
181
|
+
reps: reps,
|
182
|
+
outdatedness_store: @outdatedness_store,
|
183
|
+
dependency_store: @dependency_store,
|
184
|
+
action_sequences: action_sequences,
|
185
|
+
compilation_context: compilation_context(reps: reps),
|
186
|
+
compiled_content_cache: @compiled_content_cache,
|
187
|
+
)
|
188
|
+
end
|
189
|
+
|
190
|
+
def store_post_compilation_state_stage
|
191
|
+
@_store_post_compilation_state_stage ||= ::Nanoc::Core::CompilationStages::StorePostCompilationState.new(
|
192
|
+
dependency_store: @dependency_store,
|
193
|
+
)
|
194
|
+
end
|
195
|
+
|
196
|
+
def postprocess_stage
|
197
|
+
@_postprocess_stage ||= ::Nanoc::Core::CompilationStages::Postprocess.new(
|
198
|
+
action_provider: @action_provider,
|
199
|
+
site: @site,
|
200
|
+
)
|
201
|
+
end
|
202
|
+
|
203
|
+
def cleanup_stage
|
204
|
+
@_cleanup_stage ||= ::Nanoc::Core::CompilationStages::Cleanup.new(@output_dirs)
|
205
|
+
end
|
206
|
+
|
207
|
+
def forget_outdated_dependencies_stage
|
208
|
+
@_forget_outdated_dependencies_stage ||= ::Nanoc::Core::CompilationStages::ForgetOutdatedDependencies.new(
|
209
|
+
dependency_store: @dependency_store,
|
210
|
+
)
|
211
|
+
end
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|