nanoc 4.11.9 → 4.11.10
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/NEWS.md +6 -0
- data/lib/nanoc/base.rb +0 -1
- data/lib/nanoc/base/services/compilation_context.rb +20 -0
- data/lib/nanoc/base/services/compiler/phases/write.rb +5 -2
- data/lib/nanoc/base/services/compiler/stages.rb +0 -2
- data/lib/nanoc/base/services/compiler/stages/build_reps.rb +4 -1
- data/lib/nanoc/base/services/compiler/stages/calculate_checksums.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/cleanup.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/compile_reps.rb +3 -3
- data/lib/nanoc/base/services/compiler/stages/determine_outdatedness.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/forget_outdated_dependencies.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/load_stores.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/postprocess.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/preprocess.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/prune.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/store_post_compilation_state.rb +1 -1
- data/lib/nanoc/base/services/compiler/stages/store_pre_compilation_state.rb +1 -1
- data/lib/nanoc/base/services/item_rep_builder.rb +1 -0
- data/lib/nanoc/base/services/item_rep_router.rb +1 -0
- data/lib/nanoc/base/services/item_rep_writer.rb +2 -2
- data/lib/nanoc/base/services/pruner.rb +1 -9
- data/lib/nanoc/base/views/view_context_for_compilation.rb +2 -2
- data/lib/nanoc/checking/checks/stale.rb +3 -2
- data/lib/nanoc/rule_dsl/action_provider.rb +1 -1
- data/lib/nanoc/spec.rb +2 -2
- data/lib/nanoc/version.rb +1 -1
- metadata +4 -6
- data/lib/nanoc/base/assertions.rb +0 -47
- data/lib/nanoc/base/services/compiler/stage.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f613b6428b6cfd9eb92da14ff7768e830aacae1872df99649a9ca9941026a189
|
4
|
+
data.tar.gz: f208c9e15638f9745c558ec12d8a71a0bfb77744c24e735c4f9af2a20f510670
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 45852ac268085e574f3b266f9ac96ec13848904ad6240a0411c46cefa21e867cc109a0ccdcdda9c9c40212e9b21de2f44338af053b6ed03b00d6a78c92de9c9e
|
7
|
+
data.tar.gz: 8e949b83020fb64bdb8fecd4a233d83a5a9d52c65e57d4a4b29909dc5bd7c723ac7e6a379fb240c7d34576031bf7122caf74b6502c4b041178086385531124e5
|
data/NEWS.md
CHANGED
data/lib/nanoc/base.rb
CHANGED
@@ -3,10 +3,26 @@
|
|
3
3
|
module Nanoc
|
4
4
|
module Int
|
5
5
|
class CompilationContext
|
6
|
+
include Nanoc::Core::ContractsSupport
|
7
|
+
|
6
8
|
attr_reader :site
|
7
9
|
attr_reader :compiled_content_cache
|
8
10
|
attr_reader :compiled_content_store
|
9
11
|
|
12
|
+
C_COMPILED_CONTENT_CACHE =
|
13
|
+
C::Or[
|
14
|
+
Nanoc::Core::CompiledContentCache,
|
15
|
+
Nanoc::Core::TextualCompiledContentCache,
|
16
|
+
Nanoc::Core::BinaryCompiledContentCache,
|
17
|
+
]
|
18
|
+
|
19
|
+
contract C::KeywordArgs[
|
20
|
+
action_provider: Nanoc::Core::ActionProvider,
|
21
|
+
reps: Nanoc::Core::ItemRepRepo,
|
22
|
+
site: Nanoc::Core::Site,
|
23
|
+
compiled_content_cache: C_COMPILED_CONTENT_CACHE,
|
24
|
+
compiled_content_store: Nanoc::Core::CompiledContentStore,
|
25
|
+
] => C::Any
|
10
26
|
def initialize(action_provider:, reps:, site:, compiled_content_cache:, compiled_content_store:)
|
11
27
|
@action_provider = action_provider
|
12
28
|
@reps = reps
|
@@ -15,6 +31,8 @@ module Nanoc
|
|
15
31
|
@compiled_content_store = compiled_content_store
|
16
32
|
end
|
17
33
|
|
34
|
+
# FIXME: Expand contract
|
35
|
+
contract Nanoc::Core::Layout => C::Any
|
18
36
|
def filter_name_and_args_for_layout(layout)
|
19
37
|
seq = @action_provider.action_sequence_for(layout)
|
20
38
|
if seq.nil? || seq.size != 1 || !seq[0].is_a?(Nanoc::Core::ProcessingActions::Filter)
|
@@ -24,6 +42,7 @@ module Nanoc
|
|
24
42
|
[seq[0].filter_name, seq[0].params]
|
25
43
|
end
|
26
44
|
|
45
|
+
contract Nanoc::Core::DependencyTracker => C::Named['Nanoc::ViewContextForCompilation']
|
27
46
|
def create_view_context(dependency_tracker)
|
28
47
|
Nanoc::ViewContextForCompilation.new(
|
29
48
|
reps: @reps,
|
@@ -34,6 +53,7 @@ module Nanoc
|
|
34
53
|
)
|
35
54
|
end
|
36
55
|
|
56
|
+
contract Nanoc::Core::ItemRep, Nanoc::Core::DependencyTracker => Hash
|
37
57
|
def assigns_for(rep, dependency_tracker)
|
38
58
|
last_content = @compiled_content_store.get_current(rep)
|
39
59
|
content_or_filename_assigns =
|
@@ -72,9 +72,12 @@ module Nanoc
|
|
72
72
|
def run(rep, is_outdated:) # rubocop:disable Lint/UnusedMethodArgument
|
73
73
|
yield
|
74
74
|
|
75
|
-
|
76
|
-
|
75
|
+
# Caution: Notification must be posted before enqueueing the rep,
|
76
|
+
# or we risk a race condition where the :rep_write_ended
|
77
|
+
# notification happens before the :rep_write_enqueued one.
|
77
78
|
Nanoc::Core::NotificationCenter.post(:rep_write_enqueued, rep)
|
79
|
+
|
80
|
+
@queue << rep
|
78
81
|
end
|
79
82
|
end
|
80
83
|
end
|
@@ -4,7 +4,10 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class BuildReps < Nanoc::
|
7
|
+
class BuildReps < Nanoc::Core::CompilationStage
|
8
|
+
include Nanoc::Core::ContractsSupport
|
9
|
+
|
10
|
+
contract C::KeywordArgs[site: Nanoc::Core::Site, action_provider: Nanoc::Core::ActionProvider] => C::Any
|
8
11
|
def initialize(site:, action_provider:)
|
9
12
|
@site = site
|
10
13
|
@action_provider = action_provider
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class CalculateChecksums < Nanoc::
|
7
|
+
class CalculateChecksums < Nanoc::Core::CompilationStage
|
8
8
|
def initialize(items:, layouts:, code_snippets:, config:)
|
9
9
|
@items = items
|
10
10
|
@layouts = layouts
|
@@ -4,9 +4,9 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class CompileReps < Nanoc::
|
7
|
+
class CompileReps < Nanoc::Core::CompilationStage
|
8
8
|
include Nanoc::Core::ContractsSupport
|
9
|
-
include Nanoc::Assertions::Mixin
|
9
|
+
include Nanoc::Core::Assertions::Mixin
|
10
10
|
|
11
11
|
def initialize(reps:, outdatedness_store:, dependency_store:, action_sequences:, compilation_context:, compiled_content_cache:)
|
12
12
|
@reps = reps
|
@@ -28,7 +28,7 @@ module Nanoc
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
assert Nanoc::Assertions::AllItemRepsHaveCompiledContent.new(
|
31
|
+
assert Nanoc::Core::Assertions::AllItemRepsHaveCompiledContent.new(
|
32
32
|
compiled_content_cache: @compiled_content_cache,
|
33
33
|
item_reps: @reps,
|
34
34
|
)
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class DetermineOutdatedness < Nanoc::
|
7
|
+
class DetermineOutdatedness < Nanoc::Core::CompilationStage
|
8
8
|
include Nanoc::Core::ContractsSupport
|
9
9
|
|
10
10
|
def initialize(reps:, outdatedness_checker:, outdatedness_store:)
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class ForgetOutdatedDependencies < Nanoc::
|
7
|
+
class ForgetOutdatedDependencies < Nanoc::Core::CompilationStage
|
8
8
|
include Nanoc::Core::ContractsSupport
|
9
9
|
|
10
10
|
def initialize(dependency_store:)
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class LoadStores < Nanoc::
|
7
|
+
class LoadStores < Nanoc::Core::CompilationStage
|
8
8
|
include Nanoc::Core::ContractsSupport
|
9
9
|
|
10
10
|
def initialize(checksum_store:, compiled_content_cache:, dependency_store:, action_sequence_store:, outdatedness_store:)
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class Preprocess < Nanoc::
|
7
|
+
class Preprocess < Nanoc::Core::CompilationStage
|
8
8
|
def initialize(action_provider:, site:, dependency_store:, checksum_store:)
|
9
9
|
@action_provider = action_provider
|
10
10
|
@site = site
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class StorePostCompilationState < Nanoc::
|
7
|
+
class StorePostCompilationState < Nanoc::Core::CompilationStage
|
8
8
|
include Nanoc::Core::ContractsSupport
|
9
9
|
|
10
10
|
def initialize(dependency_store:)
|
@@ -4,7 +4,7 @@ module Nanoc
|
|
4
4
|
module Int
|
5
5
|
class Compiler
|
6
6
|
module Stages
|
7
|
-
class StorePreCompilationState < Nanoc::
|
7
|
+
class StorePreCompilationState < Nanoc::Core::CompilationStage
|
8
8
|
include Nanoc::Core::ContractsSupport
|
9
9
|
|
10
10
|
def initialize(reps:, layouts:, checksum_store:, action_sequence_store:, action_sequences:)
|
@@ -5,7 +5,7 @@ module Nanoc
|
|
5
5
|
# @api private
|
6
6
|
class ItemRepWriter
|
7
7
|
include Nanoc::Core::ContractsSupport
|
8
|
-
include Nanoc::Assertions::Mixin
|
8
|
+
include Nanoc::Core::Assertions::Mixin
|
9
9
|
|
10
10
|
TMP_TEXT_ITEMS_DIR = 'text_items'
|
11
11
|
|
@@ -24,7 +24,7 @@ module Nanoc
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def write_single(item_rep, compiled_content_store, snapshot_name, raw_path, written_paths)
|
27
|
-
assert Nanoc::Assertions::PathIsAbsolute.new(path: raw_path)
|
27
|
+
assert Nanoc::Core::Assertions::PathIsAbsolute.new(path: raw_path)
|
28
28
|
|
29
29
|
# Don’t write twice
|
30
30
|
# TODO: test written_paths behavior
|
@@ -8,15 +8,7 @@ module Nanoc
|
|
8
8
|
class Pruner
|
9
9
|
include Nanoc::Core::ContractsSupport
|
10
10
|
|
11
|
-
|
12
|
-
#
|
13
|
-
# @param [Nanoc::Core::ItemRepRepo] reps
|
14
|
-
#
|
15
|
-
# @param [Boolean] dry_run true if the files to be deleted
|
16
|
-
# should only be printed instead of actually deleted, false if the files
|
17
|
-
# should actually be deleted.
|
18
|
-
#
|
19
|
-
# @param [Enumerable<String>] exclude
|
11
|
+
contract Nanoc::Core::Configuration, Nanoc::Core::ItemRepRepo, C::KeywordArgs[dry_run: C::Optional[C::Bool], exclude: C::Optional[C::IterOf[String]]] => C::Any
|
20
12
|
def initialize(config, reps, dry_run: false, exclude: [])
|
21
13
|
@config = config
|
22
14
|
@reps = reps
|
@@ -14,9 +14,9 @@ module Nanoc
|
|
14
14
|
contract C::KeywordArgs[
|
15
15
|
reps: Nanoc::Core::ItemRepRepo,
|
16
16
|
items: Nanoc::Core::IdentifiableCollection,
|
17
|
-
dependency_tracker:
|
17
|
+
dependency_tracker: Nanoc::Core::DependencyTracker,
|
18
18
|
compilation_context: C::Any,
|
19
|
-
compiled_content_store:
|
19
|
+
compiled_content_store: Nanoc::Core::CompiledContentStore,
|
20
20
|
] => C::Any
|
21
21
|
def initialize(reps:, items:, dependency_tracker:, compilation_context:, compiled_content_store:)
|
22
22
|
@reps = reps
|
@@ -33,8 +33,9 @@ module Nanoc::Checking::Checks
|
|
33
33
|
|
34
34
|
def pruner
|
35
35
|
exclude_config = @config.fetch(:prune, {}).fetch(:exclude, [])
|
36
|
-
# FIXME: reps
|
37
|
-
|
36
|
+
# FIXME: specifying reps this way is icky
|
37
|
+
reps = Nanoc::Core::ItemRepRepo.new
|
38
|
+
@pruner ||= Nanoc::Pruner.new(@config._unwrap, reps, exclude: exclude_config)
|
38
39
|
end
|
39
40
|
end
|
40
41
|
end
|
@@ -65,7 +65,7 @@ module Nanoc::RuleDSL
|
|
65
65
|
items: site.items,
|
66
66
|
dependency_tracker: dependency_tracker,
|
67
67
|
compilation_context: compiler.compilation_context(reps: reps),
|
68
|
-
compiled_content_store:
|
68
|
+
compiled_content_store: Nanoc::Core::CompiledContentStore.new,
|
69
69
|
)
|
70
70
|
ctx = new_postprocessor_context(site, view_context)
|
71
71
|
|
data/lib/nanoc/spec.rb
CHANGED
@@ -164,8 +164,8 @@ module Nanoc
|
|
164
164
|
Nanoc::Int::CompilationContext.new(
|
165
165
|
action_provider: @action_provider,
|
166
166
|
reps: @reps,
|
167
|
-
site:
|
168
|
-
compiled_content_cache: :
|
167
|
+
site: site,
|
168
|
+
compiled_content_cache: Nanoc::Core::CompiledContentCache.new(config: @config),
|
169
169
|
compiled_content_store: @compiled_content_store,
|
170
170
|
)
|
171
171
|
|
data/lib/nanoc/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nanoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.11.
|
4
|
+
version: 4.11.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Defreyne
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-08-
|
11
|
+
date: 2019-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 4.11.
|
61
|
+
version: 4.11.10
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 4.11.
|
68
|
+
version: 4.11.10
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: parallel
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -166,7 +166,6 @@ files:
|
|
166
166
|
- bin/nanoc
|
167
167
|
- lib/nanoc.rb
|
168
168
|
- lib/nanoc/base.rb
|
169
|
-
- lib/nanoc/base/assertions.rb
|
170
169
|
- lib/nanoc/base/changes_stream.rb
|
171
170
|
- lib/nanoc/base/error.rb
|
172
171
|
- lib/nanoc/base/errors.rb
|
@@ -185,7 +184,6 @@ files:
|
|
185
184
|
- lib/nanoc/base/services/compiler/phases/recalculate.rb
|
186
185
|
- lib/nanoc/base/services/compiler/phases/resume.rb
|
187
186
|
- lib/nanoc/base/services/compiler/phases/write.rb
|
188
|
-
- lib/nanoc/base/services/compiler/stage.rb
|
189
187
|
- lib/nanoc/base/services/compiler/stages.rb
|
190
188
|
- lib/nanoc/base/services/compiler/stages/build_reps.rb
|
191
189
|
- lib/nanoc/base/services/compiler/stages/calculate_checksums.rb
|
@@ -1,47 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Nanoc
|
4
|
-
module Assertions
|
5
|
-
class AssertionFailure < Nanoc::Int::Errors::InternalInconsistency
|
6
|
-
end
|
7
|
-
|
8
|
-
module Mixin
|
9
|
-
def assert(assertion)
|
10
|
-
return unless Nanoc::Core::ContractsSupport.enabled?
|
11
|
-
|
12
|
-
unless assertion.call
|
13
|
-
raise AssertionFailure, "assertion failed: #{assertion.class}"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
class Base
|
19
|
-
def call
|
20
|
-
raise NotImplementedError
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
class AllItemRepsHaveCompiledContent < Nanoc::Assertions::Base
|
25
|
-
def initialize(compiled_content_cache:, item_reps:)
|
26
|
-
@compiled_content_cache = compiled_content_cache
|
27
|
-
@item_reps = item_reps
|
28
|
-
end
|
29
|
-
|
30
|
-
def call
|
31
|
-
@item_reps.all? do |rep|
|
32
|
-
@compiled_content_cache[rep]
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class PathIsAbsolute < Nanoc::Assertions::Base
|
38
|
-
def initialize(path:)
|
39
|
-
@path = path
|
40
|
-
end
|
41
|
-
|
42
|
-
def call
|
43
|
-
Pathname.new(@path).absolute?
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Nanoc
|
4
|
-
module Int
|
5
|
-
class Compiler
|
6
|
-
class Stage
|
7
|
-
def call(*args)
|
8
|
-
notify(:stage_started)
|
9
|
-
res = Nanoc::Core::Instrumentor.call(:stage_ran, self.class) do
|
10
|
-
run(*args)
|
11
|
-
end
|
12
|
-
notify(:stage_ended)
|
13
|
-
res
|
14
|
-
rescue
|
15
|
-
notify(:stage_aborted)
|
16
|
-
raise
|
17
|
-
end
|
18
|
-
|
19
|
-
def run(*)
|
20
|
-
raise NotImplementedError
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def notify(sym)
|
26
|
-
name = self.class.to_s.sub(/^.*::/, '')
|
27
|
-
Nanoc::Core::NotificationCenter.post(sym, name)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|