nanoc 4.8.3 → 4.8.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b1d74ffa8fb8b247dcda27d5663209908450d0e
4
- data.tar.gz: e3df83ea0b47564aaa41837544282f5b9ae793b2
3
+ metadata.gz: f693f075f9d417738964c959fde56d79d89d1733
4
+ data.tar.gz: 7e9eaf4cbbc4fd08ce8bc1e034d3599338d523d0
5
5
  SHA512:
6
- metadata.gz: 02df11311b85cfe8d451e35afd31e6fae632ae468b2f79102dadb43be76881d15573a635c7b41c18f218d600294120f52790a9616b943c2b4d0fe449955668f1
7
- data.tar.gz: 6f4c42e24182f4df836e10f4207c3fcb475462e439d2d0fd1e3e82a6bedda0d30a7e43ca0b82cd1ff4f03a793c8d078281cb42fdfdb15eee3c7fa28b15cfaa3b
6
+ metadata.gz: d3adbb7324f0c594e3b59639c3bbbfce493e04d9e3253948596a01b237cc766ed960b3840a8365fe5e1ffa1f7d703e2e9072eae4576695def77d4d0ff6e7f16f
7
+ data.tar.gz: 75cd883a140e83374f766995511502a0c09b3ccdaf2705e012eff20b49e6a98469d14cee92ff64a2627deb9a004c49792a449b1068bba66d5cf1198507e23688
data/NEWS.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Nanoc news
2
2
 
3
+ ## 4.8.4 (2017-09-03)
4
+
5
+ Fixes:
6
+
7
+ * Fixed issue which caused the CLI to load the site at the wrong moment (#1211, #1212, #1213)
8
+
3
9
  ## 4.8.3 (2017-08-30)
4
10
 
5
11
  Fixes:
@@ -15,27 +15,6 @@ module Nanoc::CLI
15
15
  end
16
16
  end
17
17
 
18
- # Gets the site ({Nanoc::Int::Site} instance) in the current directory and
19
- # loads its data.
20
- #
21
- # @return [Nanoc::Int::Site] The site in the current working directory
22
- def site
23
- # Load site if possible
24
- @site ||= nil
25
- if is_in_site_dir? && @site.nil?
26
- @site = Nanoc::Int::SiteLoader.new.new_from_cwd
27
- end
28
-
29
- @site
30
- end
31
-
32
- # For debugging purposes.
33
- #
34
- # @api private
35
- def site=(new_site)
36
- @site = new_site
37
- end
38
-
39
18
  # @return [Boolean] true if the current working directory is a Nanoc site
40
19
  # directory, false otherwise
41
20
  def in_site_dir?
@@ -77,11 +56,15 @@ module Nanoc::CLI
77
56
  $stderr.print 'Loading site… '
78
57
  $stderr.flush
79
58
 
59
+ site = Nanoc::Int::SiteLoader.new.new_from_cwd
60
+
80
61
  if preprocess
81
62
  site.compiler.action_provider.preprocess(site)
82
63
  end
83
64
 
84
65
  $stderr.puts 'done'
66
+
67
+ site
85
68
  end
86
69
 
87
70
  # @return [Boolean] true if debug output is enabled, false if not
@@ -14,9 +14,9 @@ module Nanoc::CLI::Commands
14
14
  class Check < ::Nanoc::CLI::CommandRunner
15
15
  def run
16
16
  validate_options_and_arguments
17
- load_site(preprocess: true)
17
+ @site = load_site(preprocess: true)
18
18
 
19
- runner = Nanoc::Checking::Runner.new(site)
19
+ runner = Nanoc::Checking::Runner.new(@site)
20
20
 
21
21
  if options[:list]
22
22
  runner.list_checks
@@ -19,11 +19,11 @@ module Nanoc::CLI::Commands
19
19
  def run
20
20
  time_before = Time.now
21
21
 
22
- load_site
22
+ @site = load_site
23
23
 
24
24
  puts 'Compiling site…'
25
25
  run_listeners_while do
26
- site.compile
26
+ @site.compile
27
27
  end
28
28
 
29
29
  time_after = Time.now
@@ -45,7 +45,7 @@ module Nanoc::CLI::Commands
45
45
  def setup_listeners
46
46
  @listeners =
47
47
  @listener_classes
48
- .select { |klass| klass.enable_for?(self) }
48
+ .select { |klass| klass.enable_for?(self, @site) }
49
49
  .map { |klass| klass.new(reps: reps) }
50
50
 
51
51
  @listeners.each(&:start_safely)
@@ -68,7 +68,7 @@ module Nanoc::CLI::Commands
68
68
  end
69
69
 
70
70
  def reps
71
- site.compiler.reps
71
+ @site.compiler.reps
72
72
  end
73
73
  end
74
74
  end
@@ -4,7 +4,7 @@ module Nanoc::CLI::Commands::CompileListeners
4
4
  class Abstract
5
5
  def initialize(*); end
6
6
 
7
- def self.enable_for?(command_runner) # rubocop:disable Lint/UnusedMethodArgument
7
+ def self.enable_for?(command_runner, site) # rubocop:disable Lint/UnusedMethodArgument
8
8
  true
9
9
  end
10
10
 
@@ -3,7 +3,7 @@
3
3
  module Nanoc::CLI::Commands::CompileListeners
4
4
  class DebugPrinter < Abstract
5
5
  # @see Listener#enable_for?
6
- def self.enable_for?(command_runner)
6
+ def self.enable_for?(command_runner, _site)
7
7
  command_runner.debug?
8
8
  end
9
9
 
@@ -3,8 +3,8 @@
3
3
  module Nanoc::CLI::Commands::CompileListeners
4
4
  class DiffGenerator < Abstract
5
5
  # @see Listener#enable_for?
6
- def self.enable_for?(command_runner)
7
- command_runner.site.config[:enable_output_diff] || command_runner.options[:diff]
6
+ def self.enable_for?(command_runner, site)
7
+ site.config[:enable_output_diff] || command_runner.options[:diff]
8
8
  end
9
9
 
10
10
  # @see Listener#start
@@ -5,7 +5,7 @@ module Nanoc::CLI::Commands::CompileListeners
5
5
  attr_reader :telemetry
6
6
 
7
7
  # @see Listener#enable_for?
8
- def self.enable_for?(_command_runner)
8
+ def self.enable_for?(_command_runner, _site)
9
9
  Nanoc::CLI.verbosity >= 1
10
10
  end
11
11
 
@@ -15,7 +15,7 @@ option :n, :'dry-run', 'show what would be deployed'
15
15
  module Nanoc::CLI::Commands
16
16
  class Deploy < ::Nanoc::CLI::CommandRunner
17
17
  def run
18
- load_site(preprocess: true)
18
+ @site = load_site(preprocess: true)
19
19
 
20
20
  if options[:'list-deployers']
21
21
  list_deployers
@@ -80,14 +80,14 @@ module Nanoc::CLI::Commands
80
80
 
81
81
  def deployer_for(config)
82
82
  deployer_class_for_config(config).new(
83
- site.config[:output_dir],
83
+ @site.config[:output_dir],
84
84
  config,
85
85
  dry_run: options[:'dry-run'],
86
86
  )
87
87
  end
88
88
 
89
89
  def check
90
- runner = Nanoc::Checking::Runner.new(site)
90
+ runner = Nanoc::Checking::Runner.new(@site)
91
91
  if runner.dsl_present?
92
92
  puts 'Running issue checks…'
93
93
  is_success = runner.run_for_deploy
@@ -103,7 +103,7 @@ module Nanoc::CLI::Commands
103
103
  end
104
104
 
105
105
  def deploy_configs
106
- site.config.fetch(:deploy, {})
106
+ @site.config.fetch(:deploy, {})
107
107
  end
108
108
 
109
109
  def deployer_class_for_config(config)
@@ -17,13 +17,13 @@ flag :n, :'dry-run', 'print files to be deleted instead of actually deleting the
17
17
  module Nanoc::CLI::Commands
18
18
  class Prune < ::Nanoc::CLI::CommandRunner
19
19
  def run
20
- load_site(preprocess: true)
21
- site.compiler.build_reps
20
+ @site = load_site(preprocess: true)
21
+ @site.compiler.build_reps
22
22
 
23
23
  if options.key?(:yes)
24
- Nanoc::Pruner.new(site.config, site.compiler.reps, exclude: prune_config_exclude).run
24
+ Nanoc::Pruner.new(@site.config, @site.compiler.reps, exclude: prune_config_exclude).run
25
25
  elsif options.key?(:'dry-run')
26
- Nanoc::Pruner.new(site.config, site.compiler.reps, exclude: prune_config_exclude, dry_run: true).run
26
+ Nanoc::Pruner.new(@site.config, @site.compiler.reps, exclude: prune_config_exclude, dry_run: true).run
27
27
  else
28
28
  $stderr.puts 'WARNING: Since the prune command is a destructive command, it requires an additional --yes flag in order to work.'
29
29
  $stderr.puts
@@ -35,7 +35,7 @@ module Nanoc::CLI::Commands
35
35
  protected
36
36
 
37
37
  def prune_config
38
- site.config[:prune] || {}
38
+ @site.config[:prune] || {}
39
39
  end
40
40
 
41
41
  def prune_config_exclude
@@ -13,13 +13,13 @@ module Nanoc::CLI::Commands
13
13
  def run
14
14
  require 'pry'
15
15
 
16
- load_site(preprocess: options[:preprocess])
16
+ @site = load_site(preprocess: options[:preprocess])
17
17
 
18
18
  Nanoc::Int::Context.new(env).pry
19
19
  end
20
20
 
21
21
  def env
22
- self.class.env_for_site(site)
22
+ self.class.env_for_site(@site)
23
23
  end
24
24
 
25
25
  def self.reps_for(site)
@@ -11,14 +11,14 @@ EOS
11
11
  module Nanoc::CLI::Commands
12
12
  class ShowData < ::Nanoc::CLI::CommandRunner
13
13
  def run
14
- load_site(preprocess: true)
14
+ @site = load_site(preprocess: true)
15
15
 
16
16
  # Get data
17
- items = site.items
18
- layouts = site.layouts
17
+ items = @site.items
18
+ layouts = @site.layouts
19
19
 
20
20
  # Get dependency tracker
21
- compiler = site.compiler
21
+ compiler = @site.compiler
22
22
  compiler.load_stores
23
23
  dependency_store = compiler.dependency_store
24
24
 
@@ -45,7 +45,7 @@ module Nanoc::CLI::Commands
45
45
  def sorted_reps_with_prev(items)
46
46
  prev = nil
47
47
  items.sort_by(&:identifier).each do |item|
48
- site.compiler.reps[item].sort_by { |r| r.name.to_s }.each do |rep|
48
+ @site.compiler.reps[item].sort_by { |r| r.name.to_s }.each do |rep|
49
49
  yield(rep, prev)
50
50
  prev = rep
51
51
  end
@@ -18,6 +18,7 @@ module Nanoc::CLI::Commands
18
18
 
19
19
  # Get list of plugins (before and after)
20
20
  plugins_before = PLUGIN_CLASSES.keys.each_with_object({}) { |c, acc| acc[c] = c.all }
21
+ site = load_site
21
22
  site&.code_snippets
22
23
  plugins_after = PLUGIN_CLASSES.keys.each_with_object({}) { |c, acc| acc[c] = c.all }
23
24
 
@@ -10,15 +10,15 @@ Prints the rules used for all items and layouts in the current site.
10
10
  module Nanoc::CLI::Commands
11
11
  class ShowRules < ::Nanoc::CLI::CommandRunner
12
12
  def run
13
- load_site
13
+ @site = load_site
14
14
 
15
15
  @c = Nanoc::CLI::ANSIStringColorizer
16
16
 
17
- compiler = site.compiler
17
+ compiler = @site.compiler
18
18
  compiler.build_reps
19
19
  @reps = compiler.reps
20
20
 
21
- action_provider = site.compiler.action_provider
21
+ action_provider = @site.compiler.action_provider
22
22
  unless action_provider.respond_to?(:rules_collection)
23
23
  raise(
24
24
  ::Nanoc::Int::Errors::GenericTrivial,
@@ -27,8 +27,8 @@ module Nanoc::CLI::Commands
27
27
  end
28
28
  @rules = action_provider.rules_collection
29
29
 
30
- site.items.sort_by(&:identifier).each { |e| explain_item(e) }
31
- site.layouts.sort_by(&:identifier).each { |e| explain_layout(e) }
30
+ @site.items.sort_by(&:identifier).each { |e| explain_item(e) }
31
+ @site.layouts.sort_by(&:identifier).each { |e| explain_layout(e) }
32
32
  end
33
33
 
34
34
  def explain_item(item)
@@ -20,7 +20,7 @@ module Nanoc::CLI::Commands
20
20
  load_adsf
21
21
  require 'rack'
22
22
 
23
- load_site
23
+ @site = load_site
24
24
 
25
25
  # Set options
26
26
  options_for_rack = {
@@ -40,7 +40,7 @@ module Nanoc::CLI::Commands
40
40
  end
41
41
 
42
42
  # Build app
43
- site = self.site
43
+ site = @site
44
44
  app = Rack::Builder.new do
45
45
  use Rack::CommonLogger
46
46
  use Rack::ShowExceptions
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Nanoc
4
4
  # The current Nanoc version.
5
- VERSION = '4.8.3'
5
+ VERSION = '4.8.4'
6
6
  end
@@ -87,4 +87,21 @@ describe Nanoc::CLI::CommandRunner, stdio: true do
87
87
  end
88
88
  end
89
89
  end
90
+
91
+ describe '#load_site' do
92
+ let(:command_runner) { described_class.new(nil, nil, nil) }
93
+
94
+ subject { command_runner.load_site }
95
+
96
+ before { File.write('nanoc.yaml', '{}') }
97
+
98
+ it 'does not set @site' do
99
+ expect(command_runner.instance_variable_get(:@site)).to be_nil
100
+ expect { subject }.not_to change { command_runner.instance_variable_get(:@site) }
101
+ end
102
+
103
+ it 'returns site' do
104
+ expect(subject).to be_a(Nanoc::Int::Site)
105
+ end
106
+ end
90
107
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  describe Nanoc::CLI::Commands::CompileListeners::DiffGenerator do
4
4
  describe '.enable_for?' do
5
- subject { described_class.enable_for?(command_runner) }
5
+ subject { described_class.enable_for?(command_runner, site) }
6
6
 
7
7
  let(:options) { {} }
8
8
  let(:config_hash) { {} }
@@ -24,9 +24,7 @@ describe Nanoc::CLI::Commands::CompileListeners::DiffGenerator do
24
24
  let(:code_snippets) { [] }
25
25
 
26
26
  let(:command_runner) do
27
- Nanoc::CLI::Commands::Compile.new(options, arguments, command).tap do |cr|
28
- cr.site = site
29
- end
27
+ Nanoc::CLI::Commands::Compile.new(options, arguments, command)
30
28
  end
31
29
 
32
30
  context 'default' do
@@ -155,6 +155,10 @@ describe Nanoc::CLI::Commands::ShowData, stdio: true do
155
155
  describe '#print_item_rep_outdatedness' do
156
156
  subject { runner.send(:print_item_rep_outdatedness, items, compiler) }
157
157
 
158
+ before do
159
+ runner.instance_variable_set(:@site, site)
160
+ end
161
+
158
162
  let(:runner) do
159
163
  described_class.new(options, arguments, command)
160
164
  end
@@ -1,13 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- describe Nanoc::CLI::Commands::ShowRules, stdio: true do
3
+ describe Nanoc::CLI::Commands::ShowRules, stdio: true, site: true do
4
4
  describe '#run' do
5
5
  subject { runner.run }
6
6
 
7
7
  let(:runner) do
8
- described_class.new(options, arguments, command).tap do |runner|
9
- runner.site = site
10
- end
8
+ described_class.new(options, arguments, command)
11
9
  end
12
10
 
13
11
  let(:options) { {} }
@@ -105,16 +103,13 @@ describe Nanoc::CLI::Commands::ShowRules, stdio: true do
105
103
  .gsub(/^ {8}/, '')
106
104
  end
107
105
 
108
- before do
109
- expect(compiler).to receive(:build_reps).once
110
- expect(Nanoc::CLI::CommandRunner).to receive(:find_site_dir).and_return(Dir.getwd)
111
- end
112
-
113
106
  it 'writes item and layout rules to stdout' do
107
+ expect(runner).to receive(:load_site).and_return(site)
108
+ expect(compiler).to receive(:build_reps).once
114
109
  expect { subject }.to output(expected_out).to_stdout
115
110
  end
116
111
 
117
- it 'writes status informaion to stderr' do
112
+ it 'writes status information to stderr' do
118
113
  expect { subject }.to output("Loading site… done\n").to_stderr
119
114
  end
120
115
  end
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.8.3
4
+ version: 4.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis Defreyne
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-30 00:00:00.000000000 Z
11
+ date: 2017-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cri
@@ -581,7 +581,6 @@ files:
581
581
  - test/cli/commands/test_compile.rb
582
582
  - test/cli/commands/test_create_site.rb
583
583
  - test/cli/commands/test_help.rb
584
- - test/cli/commands/test_info.rb
585
584
  - test/cli/commands/test_prune.rb
586
585
  - test/cli/test_cleaning_stream.rb
587
586
  - test/cli/test_cli.rb
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'helper'
4
-
5
- class Nanoc::CLI::Commands::InfoTest < Nanoc::TestCase
6
- def test_run
7
- Nanoc::CLI.run %w[info]
8
- end
9
- end