bridgetown-core 0.14.1 → 0.15.0

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -1
  3. data/bin/bridgetown +9 -23
  4. data/bridgetown-core.gemspec +3 -1
  5. data/lib/bridgetown-core.rb +9 -2
  6. data/lib/bridgetown-core/commands/apply.rb +73 -0
  7. data/lib/bridgetown-core/commands/base.rb +45 -0
  8. data/lib/bridgetown-core/commands/build.rb +91 -86
  9. data/lib/bridgetown-core/commands/clean.rb +30 -29
  10. data/lib/bridgetown-core/commands/concerns/actions.rb +128 -0
  11. data/lib/bridgetown-core/commands/concerns/build_options.rb +76 -0
  12. data/lib/bridgetown-core/commands/concerns/configuration_overridable.rb +18 -0
  13. data/lib/bridgetown-core/commands/concerns/summarizable.rb +13 -0
  14. data/lib/bridgetown-core/commands/console.rb +57 -39
  15. data/lib/bridgetown-core/commands/doctor.rb +126 -126
  16. data/lib/bridgetown-core/commands/new.rb +120 -155
  17. data/lib/bridgetown-core/commands/plugins.rb +167 -130
  18. data/lib/bridgetown-core/commands/registrations.rb +16 -0
  19. data/lib/bridgetown-core/commands/serve.rb +219 -215
  20. data/lib/bridgetown-core/concerns/convertible.rb +1 -4
  21. data/lib/bridgetown-core/concerns/site/renderable.rb +1 -2
  22. data/lib/bridgetown-core/drops/document_drop.rb +9 -1
  23. data/lib/bridgetown-core/drops/page_drop.rb +1 -1
  24. data/lib/bridgetown-core/excerpt.rb +4 -1
  25. data/lib/bridgetown-core/generators/prototype_generator.rb +2 -0
  26. data/lib/bridgetown-core/liquid_renderer.rb +1 -0
  27. data/lib/bridgetown-core/liquid_renderer/file.rb +1 -4
  28. data/lib/bridgetown-core/liquid_renderer/file_system.rb +3 -1
  29. data/lib/bridgetown-core/page.rb +3 -18
  30. data/lib/bridgetown-core/plugin_manager.rb +31 -17
  31. data/lib/bridgetown-core/renderer.rb +31 -18
  32. data/lib/bridgetown-core/tags/include.rb +14 -0
  33. data/lib/bridgetown-core/tags/render_content.rb +39 -16
  34. data/lib/bridgetown-core/tags/with.rb +15 -0
  35. data/lib/bridgetown-core/utils.rb +44 -0
  36. data/lib/bridgetown-core/version.rb +2 -2
  37. data/lib/bridgetown-core/watcher.rb +17 -10
  38. data/lib/site_template/Gemfile.erb +19 -0
  39. data/lib/site_template/bridgetown.config.yml +5 -3
  40. data/lib/site_template/package.json +1 -0
  41. data/lib/site_template/src/_components/footer.liquid +3 -0
  42. data/lib/site_template/src/_components/head.liquid +9 -0
  43. data/lib/site_template/src/{_includes/navbar.html → _components/navbar.liquid} +0 -0
  44. data/lib/site_template/src/_layouts/default.html +3 -3
  45. data/lib/site_template/start.js +1 -1
  46. data/lib/site_template/webpack.config.js +3 -3
  47. metadata +53 -19
  48. data/lib/bridgetown-core/command.rb +0 -112
  49. data/lib/bridgetown-core/commands/help.rb +0 -34
  50. data/lib/site_template/src/_components/.keep +0 -0
  51. data/lib/site_template/src/_includes/footer.html +0 -3
  52. data/lib/site_template/src/_includes/head.html +0 -9
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bridgetown
4
+ module Tags
5
+ class WithTag < Liquid::Block
6
+ def render(context)
7
+ region_name = @markup.strip
8
+ context["content_with_region_#{region_name}"] = super
9
+ ""
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ Liquid::Template.register_tag("with", Bridgetown::Tags::WithTag)
@@ -287,6 +287,50 @@ module Bridgetown
287
287
  merged
288
288
  end
289
289
 
290
+ # Returns a string that's been reindented so that Markdown's four+ spaces =
291
+ # code doesn't get triggered for nested Liquid components
292
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
293
+ def reindent_for_markdown(input)
294
+ lines = input.lines
295
+ return input if lines.first.nil?
296
+
297
+ starting_indentation = lines.find { |line| line != "\n" }&.match(%r!^ +!)
298
+ return input unless starting_indentation
299
+
300
+ starting_indent_length = starting_indentation[0].length
301
+
302
+ skip_pre_lines = false
303
+ lines.map do |line|
304
+ continue_processing = !skip_pre_lines
305
+
306
+ if skip_pre_lines
307
+ skip_pre_lines = false if line.include?("</pre>")
308
+ end
309
+ if line.include?("<pre")
310
+ skip_pre_lines = true
311
+ continue_processing = false
312
+ end
313
+
314
+ if continue_processing
315
+ line_indentation = line.match(%r!^ +!).yield_self do |indent|
316
+ indent.nil? ? "" : indent[0]
317
+ end
318
+ new_indentation = line_indentation.rjust(starting_indent_length, " ")
319
+
320
+ if %r!^ +!.match?(line)
321
+ line
322
+ .sub(%r!^ {1,#{starting_indent_length}}!, new_indentation)
323
+ .sub(%r!^#{new_indentation}!, "")
324
+ else
325
+ line
326
+ end
327
+ else
328
+ line
329
+ end
330
+ end.join("")
331
+ end
332
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/PerceivedComplexity
333
+
290
334
  private
291
335
 
292
336
  def merge_values(target, overwrite)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bridgetown
4
- VERSION = "0.14.1"
5
- CODE_NAME = "Hazelwood"
4
+ VERSION = "0.15.0"
5
+ CODE_NAME = "Overlook"
6
6
  end
@@ -39,17 +39,21 @@ module Bridgetown
39
39
  def build_listener(site, options)
40
40
  webpack_path = site.in_root_dir(".bridgetown-webpack")
41
41
  FileUtils.mkdir(webpack_path) unless Dir.exist?(webpack_path)
42
+ plugin_paths_to_watch = site.plugin_manager.plugins_path.select do |path|
43
+ Dir.exist?(path)
44
+ end
45
+
42
46
  Listen.to(
43
47
  options["source"],
44
48
  webpack_path,
45
- *site.plugin_manager.plugins_path,
49
+ *plugin_paths_to_watch,
46
50
  ignore: listen_ignore_paths(options),
47
51
  force_polling: options["force_polling"],
48
- &listen_handler(site)
52
+ &listen_handler(site, options)
49
53
  )
50
54
  end
51
55
 
52
- def listen_handler(site)
56
+ def listen_handler(site, options)
53
57
  proc do |modified, added, removed|
54
58
  t = Time.now
55
59
  c = modified + added + removed
@@ -59,7 +63,7 @@ module Bridgetown
59
63
  Bridgetown.logger.info "", "#{n} file(s) changed at #{t.strftime("%Y-%m-%d %H:%M:%S")}"
60
64
 
61
65
  c.each { |path| Bridgetown.logger.info "", path["#{site.root_dir}/".length..-1] }
62
- process(site, t)
66
+ process(site, t, options)
63
67
  end
64
68
  end
65
69
 
@@ -95,7 +99,6 @@ module Bridgetown
95
99
  # options - A Hash of options passed to the command
96
100
  #
97
101
  # Returns a list of relative paths from source that should be ignored
98
- # rubocop: disable Metrics/AbcSize
99
102
  def listen_ignore_paths(options)
100
103
  source = Pathname.new(options["source"]).expand_path
101
104
  paths = to_exclude(options)
@@ -117,13 +120,12 @@ module Bridgetown
117
120
  end
118
121
  end.compact + [%r!^\.bridgetown\-metadata!]
119
122
  end
120
- # rubocop:enable Metrics/AbcSize
121
123
 
122
124
  def sleep_forever
123
125
  loop { sleep 1000 }
124
126
  end
125
127
 
126
- def process(site, time)
128
+ def process(site, time, options)
127
129
  begin
128
130
  Bridgetown::Hooks.trigger :site, :pre_reload, site
129
131
  Bridgetown::Hooks.clear_reloadable_hooks
@@ -131,9 +133,14 @@ module Bridgetown
131
133
  site.process
132
134
  Bridgetown.logger.info "Done! 🎉", "#{"Completed".green} in less than" \
133
135
  " #{(Time.now - time).ceil(2)} seconds."
134
- rescue StandardError => e
135
- Bridgetown.logger.warn "Error:", e.message
136
- Bridgetown.logger.warn "Error:", "Run bridgetown build --trace for more information."
136
+ rescue Exception => e
137
+ Bridgetown.logger.error "Error:", e.message
138
+
139
+ if options[:trace]
140
+ Bridgetown.logger.info e.backtrace.join("\n")
141
+ else
142
+ Bridgetown.logger.warn "Error:", "Use the --trace option for more information."
143
+ end
137
144
  end
138
145
  Bridgetown.logger.info ""
139
146
  end
@@ -0,0 +1,19 @@
1
+ source "https://rubygems.org"
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ # Hello! This is where you manage which Bridgetown version is used to run.
5
+ # When you want to use a different version, change it below, save the
6
+ # file and run `bundle install`. Run Bridgetown with `bundle exec`, like so:
7
+ #
8
+ # bundle exec bridgetown serve
9
+ #
10
+ # This will help ensure the proper Bridgetown version is running.
11
+ #
12
+ # To install a plugin, simply run bundle add and specify the group
13
+ # "bridgetown_plugins". For example:
14
+ #
15
+ # bundle add some-new-plugin -g bridgetown_plugins
16
+ #
17
+ # Happy Bridgetowning!
18
+
19
+ gem "bridgetown", "~> <%= Bridgetown::VERSION %>"
@@ -10,12 +10,14 @@
10
10
  # For reloadable site metadata like title, SEO description, social media
11
11
  # handles, etc., take a look at src/_data/site_metadata.yml
12
12
  #
13
- # If you need help with YAML syntax, here are some quick references for you:
13
+ # If you need help with YAML syntax, here are some quick references for you:
14
14
  # https://learn-the-web.algonquindesign.ca/topics/markdown-yaml-cheat-sheet/#yaml
15
15
  # https://learnxinyminutes.com/docs/yaml/
16
16
  #
17
17
 
18
18
  baseurl: "" # OPTIONAL: the subpath of your site, e.g. /blog
19
- url: "" # the base hostname & protocol for your site, e.g. http://example.com
19
+ url: "" # the base hostname & protocol for your site, e.g. https://example.com
20
20
 
21
- # Additional build settings go here
21
+ permalink: pretty
22
+
23
+ # timezone: America/Los_Angeles
@@ -14,6 +14,7 @@
14
14
  "devDependencies": {
15
15
  "@babel/core": "^7.9.0",
16
16
  "@babel/plugin-proposal-class-properties": "^7.8.3",
17
+ "@babel/plugin-proposal-decorators": "^7.10.1",
17
18
  "@babel/plugin-transform-runtime": "^7.9.0",
18
19
  "@babel/preset-env": "^7.9.0",
19
20
  "babel-loader": "^8.1.0",
@@ -0,0 +1,3 @@
1
+ <footer>
2
+ Contact me at {{ metadata.email }}
3
+ </footer>
@@ -0,0 +1,9 @@
1
+ <meta charset="utf-8" />
2
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
3
+ {% capture page_title %}{{ title | strip_html | strip_newlines }}{% endcapture %}
4
+ <title>{% if page_title != "" %}{{ page_title | escape }} | {{ metadata.title | escape }}{% else %}{{ metadata.title | escape }}: {{ metadata.tagline | escape }}{% endif %}</title>
5
+
6
+ <meta name="description" content="{{ metadata.description }}" />
7
+
8
+ <link rel="stylesheet" href="{% webpack_path css %}" />
9
+ <script src="{% webpack_path js %}" defer></script>
@@ -1,15 +1,15 @@
1
1
  <!doctype html>
2
2
  <html lang="en">
3
3
  <head>
4
- {% include head.html %}
4
+ {% render "head", metadata: site.metadata, title: page.title %}
5
5
  </head>
6
6
  <body class="{{ page.layout }} {{ page.page_class }}">
7
- {% include navbar.html %}
7
+ {% render "navbar", metadata: site.metadata, page: page %}
8
8
 
9
9
  <main>
10
10
  {{ content }}
11
11
  </main>
12
12
 
13
- {% include footer.html %}
13
+ {% render "footer", metadata: site.metadata %}
14
14
  </body>
15
15
  </html>
@@ -14,4 +14,4 @@ concurrently([
14
14
  ], {
15
15
  restartTries: 3,
16
16
  killOthers: ['failure', 'success'],
17
- }).then(() => { console.log("Done.") }, () => {});
17
+ }).then(() => { console.log("Done.");console.log('\033[0G'); }, () => {});
@@ -36,7 +36,8 @@ module.exports = {
36
36
  options: {
37
37
  presets: ["@babel/preset-env"],
38
38
  plugins: [
39
- "@babel/plugin-proposal-class-properties",
39
+ ["@babel/plugin-proposal-decorators", { "legacy": true }],
40
+ ["@babel/plugin-proposal-class-properties", { "loose" : true }],
40
41
  [
41
42
  "@babel/plugin-transform-runtime",
42
43
  {
@@ -57,8 +58,7 @@ module.exports = {
57
58
  options: {
58
59
  sassOptions: {
59
60
  includePaths: [
60
- path.resolve(__dirname, "src/_components"),
61
- path.resolve(__dirname, "src/_includes"),
61
+ path.resolve(__dirname, "src/_components")
62
62
  ],
63
63
  },
64
64
  },
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bridgetown-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-23 00:00:00.000000000 Z
11
+ date: 2020-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: awesome_print
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.8'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.8'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: colorator
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -137,47 +151,47 @@ dependencies:
137
151
  - !ruby/object:Gem::Version
138
152
  version: '4.0'
139
153
  - !ruby/object:Gem::Dependency
140
- name: liquid-render-tag
154
+ name: liquid-component
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - "~>"
157
+ - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: '0.2'
159
+ version: '0.1'
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - "~>"
164
+ - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: '0.2'
166
+ version: '0.1'
153
167
  - !ruby/object:Gem::Dependency
154
- name: listen
168
+ name: liquid-render-tag
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
171
  - - "~>"
158
172
  - !ruby/object:Gem::Version
159
- version: '3.0'
173
+ version: '0.2'
160
174
  type: :runtime
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: '3.0'
180
+ version: '0.2'
167
181
  - !ruby/object:Gem::Dependency
168
- name: mercenary
182
+ name: listen
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - "~>"
172
186
  - !ruby/object:Gem::Version
173
- version: 0.4.0
187
+ version: '3.0'
174
188
  type: :runtime
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - "~>"
179
193
  - !ruby/object:Gem::Version
180
- version: 0.4.0
194
+ version: '3.0'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: pathutil
183
197
  requirement: !ruby/object:Gem::Requirement
@@ -234,6 +248,20 @@ dependencies:
234
248
  - - "~>"
235
249
  - !ruby/object:Gem::Version
236
250
  version: '1.8'
251
+ - !ruby/object:Gem::Dependency
252
+ name: thor
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '1.0'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - "~>"
263
+ - !ruby/object:Gem::Version
264
+ version: '1.0'
237
265
  description: Bridgetown is a Webpack-aware, Ruby-powered static site generator for
238
266
  the modern Jamstack era
239
267
  email: maintainers@bridgetownrb.com
@@ -249,14 +277,19 @@ files:
249
277
  - lib/bridgetown-core/cache.rb
250
278
  - lib/bridgetown-core/cleaner.rb
251
279
  - lib/bridgetown-core/collection.rb
252
- - lib/bridgetown-core/command.rb
280
+ - lib/bridgetown-core/commands/apply.rb
281
+ - lib/bridgetown-core/commands/base.rb
253
282
  - lib/bridgetown-core/commands/build.rb
254
283
  - lib/bridgetown-core/commands/clean.rb
284
+ - lib/bridgetown-core/commands/concerns/actions.rb
285
+ - lib/bridgetown-core/commands/concerns/build_options.rb
286
+ - lib/bridgetown-core/commands/concerns/configuration_overridable.rb
287
+ - lib/bridgetown-core/commands/concerns/summarizable.rb
255
288
  - lib/bridgetown-core/commands/console.rb
256
289
  - lib/bridgetown-core/commands/doctor.rb
257
- - lib/bridgetown-core/commands/help.rb
258
290
  - lib/bridgetown-core/commands/new.rb
259
291
  - lib/bridgetown-core/commands/plugins.rb
292
+ - lib/bridgetown-core/commands/registrations.rb
260
293
  - lib/bridgetown-core/commands/serve.rb
261
294
  - lib/bridgetown-core/commands/serve/servlet.rb
262
295
  - lib/bridgetown-core/concerns/convertible.rb
@@ -330,6 +363,7 @@ files:
330
363
  - lib/bridgetown-core/tags/post_url.rb
331
364
  - lib/bridgetown-core/tags/render_content.rb
332
365
  - lib/bridgetown-core/tags/webpack_path.rb
366
+ - lib/bridgetown-core/tags/with.rb
333
367
  - lib/bridgetown-core/url.rb
334
368
  - lib/bridgetown-core/utils.rb
335
369
  - lib/bridgetown-core/utils/ansi.rb
@@ -342,6 +376,7 @@ files:
342
376
  - lib/bridgetown-core/version.rb
343
377
  - lib/bridgetown-core/watcher.rb
344
378
  - lib/site_template/.gitignore
379
+ - lib/site_template/Gemfile.erb
345
380
  - lib/site_template/bridgetown.config.yml
346
381
  - lib/site_template/frontend/javascript/index.js
347
382
  - lib/site_template/frontend/styles/index.scss
@@ -349,11 +384,10 @@ files:
349
384
  - lib/site_template/plugins/builders/.keep
350
385
  - lib/site_template/plugins/site_builder.rb
351
386
  - lib/site_template/src/404.html
352
- - lib/site_template/src/_components/.keep
387
+ - lib/site_template/src/_components/footer.liquid
388
+ - lib/site_template/src/_components/head.liquid
389
+ - lib/site_template/src/_components/navbar.liquid
353
390
  - lib/site_template/src/_data/site_metadata.yml
354
- - lib/site_template/src/_includes/footer.html
355
- - lib/site_template/src/_includes/head.html
356
- - lib/site_template/src/_includes/navbar.html
357
391
  - lib/site_template/src/_layouts/default.html
358
392
  - lib/site_template/src/_layouts/home.html
359
393
  - lib/site_template/src/_layouts/page.html
@@ -1,112 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- class Command
5
- class << self
6
- # A list of subclasses of Bridgetown::Command
7
- def subclasses
8
- @subclasses ||= []
9
- end
10
-
11
- # Keep a list of subclasses of Bridgetown::Command every time it's inherited
12
- # Called automatically.
13
- #
14
- # base - the subclass
15
- #
16
- # Returns nothing
17
- def inherited(base)
18
- subclasses << base
19
- super(base)
20
- end
21
-
22
- # Run Site#process and catch errors
23
- #
24
- # site - the Bridgetown::Site object
25
- #
26
- # Returns nothing
27
- def process_site(site)
28
- site.process
29
- rescue Bridgetown::Errors::FatalException => e
30
- Bridgetown.logger.error "ERROR:", "YOUR SITE COULD NOT BE BUILT:"
31
- Bridgetown.logger.error "", "------------------------------------"
32
- Bridgetown.logger.error "", e.message
33
- exit(1)
34
- end
35
-
36
- # Create a full Bridgetown configuration with the options passed in as overrides
37
- #
38
- # options - the configuration overrides
39
- #
40
- # Returns a full Bridgetown configuration
41
- def configuration_from_options(options)
42
- return options if options.is_a?(Bridgetown::Configuration)
43
-
44
- Bridgetown.configuration(options)
45
- end
46
-
47
- # Add common options to a command for building configuration
48
- #
49
- # cmd - the Bridgetown::Command to add these options to
50
- #
51
- # Returns nothing
52
- # rubocop:disable Metrics/MethodLength
53
- def add_build_options(cmd)
54
- cmd.option "config", "--config CONFIG_FILE[,CONFIG_FILE2,...]",
55
- Array, "Custom configuration file"
56
- cmd.option "source", "-s", "--source [DIR]",
57
- "Source directory (defaults to src)"
58
- cmd.option "destination", "-d", "--destination [DIR]",
59
- "Destination directory (defaults to output)"
60
- cmd.option "root_dir", "-r", "--root_dir [DIR]", "The top-level root folder" \
61
- " where config files are located"
62
- cmd.option "plugins_dir", "-p", "--plugins PLUGINS_DIR1[,PLUGINS_DIR2[,...]]", Array,
63
- "Plugins directory (defaults to plugins)"
64
- cmd.option "layouts_dir", "--layouts [DIR]", String,
65
- "Layouts directory (defaults to src/_layouts)"
66
- cmd.option "future", "--future", "Publishes posts with a future date"
67
- cmd.option "limit_posts", "--limit_posts MAX_POSTS", Integer,
68
- "Limits the number of posts to parse and publish"
69
- cmd.option "watch", "-w", "--[no-]watch", "Watch for changes and rebuild"
70
- cmd.option "baseurl", "-b", "--baseurl URL",
71
- "Serve the website from the given base URL"
72
- cmd.option "force_polling", "--force_polling", "Force watch to use polling"
73
- cmd.option "lsi", "--lsi", "Use LSI for improved related posts"
74
- cmd.option "unpublished", "-U", "--unpublished",
75
- "Render posts that were marked as unpublished"
76
- cmd.option "disable_disk_cache", "--disable-disk-cache",
77
- "Disable caching to disk"
78
- cmd.option "profile", "--profile", "Generate a Liquid rendering profile"
79
- cmd.option "quiet", "-q", "--quiet", "Silence output."
80
- cmd.option "verbose", "-V", "--verbose", "Print verbose output."
81
- cmd.option "incremental", "-I", "--incremental", "Enable incremental rebuild."
82
- cmd.option "strict_front_matter", "--strict_front_matter",
83
- "Fail if errors are present in front matter"
84
- end
85
- # rubocop:enable Metrics/MethodLength
86
-
87
- # Run ::process method in a given set of Bridgetown::Command subclasses and suggest
88
- # re-running the associated command with --trace switch to obtain any additional
89
- # information or backtrace regarding the encountered Exception.
90
- #
91
- # cmd - the Bridgetown::Command to be handled
92
- # options - configuration overrides
93
- # klass - an array of Bridgetown::Command subclasses associated with the command
94
- #
95
- # Note that all exceptions are rescued..
96
- # rubocop: disable Lint/RescueException
97
- def process_with_graceful_fail(cmd, options, *klass)
98
- klass.each { |k| k.process(options) if k.respond_to?(:process) }
99
- rescue Exception => e
100
- raise e if cmd.trace
101
-
102
- msg = " Please append `--trace` to the `#{cmd.name}` command "
103
- dashes = "-" * msg.length
104
- Bridgetown.logger.error "", dashes
105
- Bridgetown.logger.error "Bridgetown #{Bridgetown::VERSION} ", msg
106
- Bridgetown.logger.error "", " for any additional information or backtrace. "
107
- Bridgetown.logger.abort_with "", dashes
108
- end
109
- # rubocop: enable Lint/RescueException
110
- end
111
- end
112
- end