bridgetown-core 0.13.0 → 0.15.0.beta3

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -1
  3. data/bin/bridgetown +9 -48
  4. data/bridgetown-core.gemspec +6 -2
  5. data/lib/bridgetown-core.rb +13 -3
  6. data/lib/bridgetown-core/cleaner.rb +1 -0
  7. data/lib/bridgetown-core/commands/apply.rb +73 -0
  8. data/lib/bridgetown-core/commands/base.rb +45 -0
  9. data/lib/bridgetown-core/commands/build.rb +91 -86
  10. data/lib/bridgetown-core/commands/clean.rb +30 -29
  11. data/lib/bridgetown-core/commands/concerns/actions.rb +123 -0
  12. data/lib/bridgetown-core/commands/concerns/build_options.rb +76 -0
  13. data/lib/bridgetown-core/commands/concerns/configuration_overridable.rb +18 -0
  14. data/lib/bridgetown-core/commands/concerns/summarizable.rb +13 -0
  15. data/lib/bridgetown-core/commands/console.rb +46 -39
  16. data/lib/bridgetown-core/commands/doctor.rb +126 -127
  17. data/lib/bridgetown-core/commands/new.rb +120 -158
  18. data/lib/bridgetown-core/commands/plugins.rb +206 -0
  19. data/lib/bridgetown-core/commands/registrations.rb +16 -0
  20. data/lib/bridgetown-core/commands/serve.rb +214 -215
  21. data/lib/bridgetown-core/{convertible.rb → concerns/convertible.rb} +3 -6
  22. data/lib/bridgetown-core/concerns/site/configurable.rb +153 -0
  23. data/lib/bridgetown-core/concerns/site/content.rb +111 -0
  24. data/lib/bridgetown-core/concerns/site/extensible.rb +56 -0
  25. data/lib/bridgetown-core/concerns/site/processable.rb +74 -0
  26. data/lib/bridgetown-core/concerns/site/renderable.rb +49 -0
  27. data/lib/bridgetown-core/concerns/site/writable.rb +31 -0
  28. data/lib/bridgetown-core/configuration.rb +2 -9
  29. data/lib/bridgetown-core/converters/markdown/kramdown_parser.rb +0 -3
  30. data/lib/bridgetown-core/document.rb +1 -1
  31. data/lib/bridgetown-core/drops/page_drop.rb +1 -1
  32. data/lib/bridgetown-core/drops/site_drop.rb +1 -1
  33. data/lib/bridgetown-core/excerpt.rb +4 -1
  34. data/lib/bridgetown-core/external.rb +17 -21
  35. data/lib/bridgetown-core/filters.rb +10 -0
  36. data/lib/bridgetown-core/generators/prototype_generator.rb +3 -1
  37. data/lib/bridgetown-core/hooks.rb +62 -62
  38. data/lib/bridgetown-core/layout.rb +10 -4
  39. data/lib/bridgetown-core/liquid_renderer.rb +1 -0
  40. data/lib/bridgetown-core/liquid_renderer/file.rb +1 -4
  41. data/lib/bridgetown-core/liquid_renderer/file_system.rb +3 -1
  42. data/lib/bridgetown-core/page.rb +11 -19
  43. data/lib/bridgetown-core/plugin.rb +2 -0
  44. data/lib/bridgetown-core/plugin_manager.rb +88 -21
  45. data/lib/bridgetown-core/reader.rb +5 -0
  46. data/lib/bridgetown-core/readers/data_reader.rb +5 -2
  47. data/lib/bridgetown-core/readers/layout_reader.rb +9 -2
  48. data/lib/bridgetown-core/readers/plugin_content_reader.rb +48 -0
  49. data/lib/bridgetown-core/renderer.rb +38 -28
  50. data/lib/bridgetown-core/site.rb +20 -463
  51. data/lib/bridgetown-core/tags/include.rb +12 -0
  52. data/lib/bridgetown-core/tags/render_content.rb +29 -16
  53. data/lib/bridgetown-core/tags/with.rb +15 -0
  54. data/lib/bridgetown-core/utils.rb +45 -27
  55. data/lib/bridgetown-core/utils/ruby_exec.rb +1 -4
  56. data/lib/bridgetown-core/version.rb +2 -2
  57. data/lib/bridgetown-core/watcher.rb +21 -10
  58. data/lib/site_template/Gemfile.erb +19 -0
  59. data/lib/site_template/package.json +1 -0
  60. data/lib/site_template/plugins/{.keep → builders/.keep} +0 -0
  61. data/lib/site_template/plugins/site_builder.rb +4 -0
  62. data/lib/site_template/src/_components/footer.html +3 -0
  63. data/lib/site_template/src/_components/head.html +9 -0
  64. data/lib/site_template/src/{_includes → _components}/navbar.html +1 -0
  65. data/lib/site_template/src/_layouts/default.html +3 -3
  66. data/lib/site_template/src/posts.md +15 -0
  67. data/lib/site_template/start.js +1 -1
  68. data/lib/site_template/webpack.config.js +3 -3
  69. metadata +90 -18
  70. data/lib/bridgetown-core/command.rb +0 -106
  71. data/lib/bridgetown-core/commands/help.rb +0 -34
  72. data/lib/site_template/src/_components/.keep +0 -0
  73. data/lib/site_template/src/_includes/footer.html +0 -3
  74. data/lib/site_template/src/_includes/head.html +0 -9
@@ -1,106 +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 "destination", "-d", "--destination DESTINATION",
57
- "The current folder will be generated into DESTINATION"
58
- cmd.option "root_dir", "-r", "--root_dir ROOT_DIR", "The top-level root folder" \
59
- " where config files are located"
60
- cmd.option "source", "-s", "--source SOURCE", "Custom source directory"
61
- cmd.option "future", "--future", "Publishes posts with a future date"
62
- cmd.option "limit_posts", "--limit_posts MAX_POSTS", Integer,
63
- "Limits the number of posts to parse and publish"
64
- cmd.option "watch", "-w", "--[no-]watch", "Watch for changes and rebuild"
65
- cmd.option "baseurl", "-b", "--baseurl URL",
66
- "Serve the website from the given base URL"
67
- cmd.option "force_polling", "--force_polling", "Force watch to use polling"
68
- cmd.option "lsi", "--lsi", "Use LSI for improved related posts"
69
- cmd.option "unpublished", "-U", "--unpublished",
70
- "Render posts that were marked as unpublished"
71
- cmd.option "disable_disk_cache", "--disable-disk-cache",
72
- "Disable caching to disk"
73
- cmd.option "quiet", "-q", "--quiet", "Silence output."
74
- cmd.option "verbose", "-V", "--verbose", "Print verbose output."
75
- cmd.option "incremental", "-I", "--incremental", "Enable incremental rebuild."
76
- cmd.option "strict_front_matter", "--strict_front_matter",
77
- "Fail if errors are present in front matter"
78
- end
79
- # rubocop:enable Metrics/MethodLength
80
-
81
- # Run ::process method in a given set of Bridgetown::Command subclasses and suggest
82
- # re-running the associated command with --trace switch to obtain any additional
83
- # information or backtrace regarding the encountered Exception.
84
- #
85
- # cmd - the Bridgetown::Command to be handled
86
- # options - configuration overrides
87
- # klass - an array of Bridgetown::Command subclasses associated with the command
88
- #
89
- # Note that all exceptions are rescued..
90
- # rubocop: disable Lint/RescueException
91
- def process_with_graceful_fail(cmd, options, *klass)
92
- klass.each { |k| k.process(options) if k.respond_to?(:process) }
93
- rescue Exception => e
94
- raise e if cmd.trace
95
-
96
- msg = " Please append `--trace` to the `#{cmd.name}` command "
97
- dashes = "-" * msg.length
98
- Bridgetown.logger.error "", dashes
99
- Bridgetown.logger.error "Bridgetown #{Bridgetown::VERSION} ", msg
100
- Bridgetown.logger.error "", " for any additional information or backtrace. "
101
- Bridgetown.logger.abort_with "", dashes
102
- end
103
- # rubocop: enable Lint/RescueException
104
- end
105
- end
106
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Bridgetown
4
- module Commands
5
- class Help < Command
6
- class << self
7
- def init_with_program(prog)
8
- prog.command(:help) do |c|
9
- c.syntax "help [subcommand]"
10
- c.description "Show the help message, optionally for a given subcommand."
11
-
12
- c.action do |args, _|
13
- cmd = (args.first || "").to_sym
14
- if args.empty?
15
- Bridgetown.logger.info prog.to_s
16
- elsif prog.has_command? cmd
17
- Bridgetown.logger.info prog.commands[cmd].to_s
18
- else
19
- invalid_command(prog, cmd)
20
- abort
21
- end
22
- end
23
- end
24
- end
25
-
26
- def invalid_command(prog, cmd)
27
- Bridgetown.logger.error "Error:",
28
- "Hmm... we don't know what the '#{cmd}' command is."
29
- Bridgetown.logger.info "Valid commands:", prog.commands.keys.join(", ")
30
- end
31
- end
32
- end
33
- end
34
- end
File without changes
@@ -1,3 +0,0 @@
1
- <footer>
2
- Contact me at {{ site.metadata.email }}
3
- </footer>
@@ -1,9 +0,0 @@
1
- <meta charset="utf-8" />
2
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
3
- {% capture page_title %}{{ page.title | strip_html | strip_newlines }}{% endcapture %}
4
- <title>{% if page_title != "" %}{{ page_title | escape }} | {{ site.metadata.title | escape }}{% else %}{{ site.metadata.title | escape }}: {{ site.metadata.tagline | escape }}{% endif %}</title>
5
-
6
- <meta name="description" content="{{ site.metadata.description }}" />
7
-
8
- <link rel="stylesheet" href="{% webpack_path css %}" />
9
- <script src="{% webpack_path js %}" defer></script>