bridgetown-core 0.20.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bridgetown-core.gemspec +0 -1
- data/lib/bridgetown-core.rb +11 -22
- data/lib/bridgetown-core/cleaner.rb +2 -2
- data/lib/bridgetown-core/collection.rb +14 -11
- data/lib/bridgetown-core/commands/build.rb +0 -11
- data/lib/bridgetown-core/commands/concerns/git_helpers.rb +20 -0
- data/lib/bridgetown-core/commands/configure.rb +4 -3
- data/lib/bridgetown-core/commands/doctor.rb +1 -19
- data/lib/bridgetown-core/commands/new.rb +6 -6
- data/lib/bridgetown-core/commands/plugins.rb +14 -13
- data/lib/bridgetown-core/commands/serve.rb +0 -14
- data/lib/bridgetown-core/commands/webpack.rb +75 -0
- data/lib/bridgetown-core/commands/webpack/enable-postcss.rb +12 -0
- data/lib/bridgetown-core/commands/webpack/setup.rb +4 -0
- data/lib/bridgetown-core/commands/webpack/update.rb +3 -0
- data/lib/bridgetown-core/commands/webpack/webpack.config.js +18 -0
- data/lib/{site_template/webpack.config.js.erb → bridgetown-core/commands/webpack/webpack.defaults.js.erb} +25 -11
- data/lib/bridgetown-core/component.rb +183 -0
- data/lib/bridgetown-core/concerns/front_matter_importer.rb +52 -0
- data/lib/bridgetown-core/concerns/layout_placeable.rb +1 -1
- data/lib/bridgetown-core/concerns/site/configurable.rb +3 -7
- data/lib/bridgetown-core/concerns/site/content.rb +2 -3
- data/lib/bridgetown-core/concerns/site/localizable.rb +3 -5
- data/lib/bridgetown-core/concerns/site/processable.rb +5 -4
- data/lib/bridgetown-core/concerns/site/writable.rb +1 -1
- data/lib/bridgetown-core/concerns/validatable.rb +1 -5
- data/lib/bridgetown-core/configuration.rb +22 -14
- data/lib/bridgetown-core/configurations/bt-postcss.rb +6 -6
- data/lib/bridgetown-core/configurations/netlify.rb +1 -0
- data/lib/bridgetown-core/configurations/tailwindcss.rb +6 -6
- data/lib/bridgetown-core/converter.rb +9 -0
- data/lib/bridgetown-core/converters/erb_templates.rb +51 -35
- data/lib/bridgetown-core/converters/liquid_templates.rb +1 -1
- data/lib/bridgetown-core/converters/markdown.rb +1 -1
- data/lib/bridgetown-core/converters/markdown/kramdown_parser.rb +2 -38
- data/lib/bridgetown-core/converters/ruby_templates.rb +17 -0
- data/lib/bridgetown-core/converters/smartypants.rb +3 -1
- data/lib/bridgetown-core/core_ext/psych.rb +19 -0
- data/lib/bridgetown-core/document.rb +3 -2
- data/lib/bridgetown-core/drops/relations_drop.rb +23 -0
- data/lib/bridgetown-core/drops/resource_drop.rb +3 -1
- data/lib/bridgetown-core/drops/unified_payload_drop.rb +1 -0
- data/lib/bridgetown-core/entry_filter.rb +7 -5
- data/lib/bridgetown-core/filters.rb +1 -25
- data/lib/bridgetown-core/filters/from_liquid.rb +23 -0
- data/lib/bridgetown-core/filters/url_filters.rb +12 -0
- data/lib/bridgetown-core/frontmatter_defaults.rb +1 -1
- data/lib/bridgetown-core/generators/prototype_generator.rb +25 -4
- data/lib/bridgetown-core/helpers.rb +48 -9
- data/lib/bridgetown-core/layout.rb +52 -20
- data/lib/bridgetown-core/model/origin.rb +1 -1
- data/lib/bridgetown-core/model/{file_origin.rb → repo_origin.rb} +33 -26
- data/lib/bridgetown-core/page.rb +2 -1
- data/lib/bridgetown-core/plugin_manager.rb +1 -1
- data/lib/bridgetown-core/publisher.rb +2 -2
- data/lib/bridgetown-core/reader.rb +13 -11
- data/lib/bridgetown-core/readers/data_reader.rb +2 -1
- data/lib/bridgetown-core/readers/defaults_reader.rb +1 -1
- data/lib/bridgetown-core/readers/layout_reader.rb +1 -1
- data/lib/bridgetown-core/readers/page_reader.rb +1 -0
- data/lib/bridgetown-core/readers/post_reader.rb +5 -4
- data/lib/bridgetown-core/regenerator.rb +1 -1
- data/lib/bridgetown-core/related_posts.rb +8 -5
- data/lib/bridgetown-core/renderer.rb +1 -1
- data/lib/bridgetown-core/resource/base.rb +80 -26
- data/lib/bridgetown-core/resource/permalink_processor.rb +1 -1
- data/lib/bridgetown-core/resource/relations.rb +132 -0
- data/lib/bridgetown-core/resource/taxonomy_term.rb +10 -1
- data/lib/bridgetown-core/resource/taxonomy_type.rb +9 -0
- data/lib/bridgetown-core/resource/transformer.rb +18 -14
- data/lib/bridgetown-core/ruby_template_view.rb +7 -11
- data/lib/bridgetown-core/site.rb +4 -5
- data/lib/bridgetown-core/tags/highlight.rb +2 -15
- data/lib/bridgetown-core/tags/include.rb +1 -1
- data/lib/bridgetown-core/tags/post_url.rb +2 -2
- data/lib/bridgetown-core/utils.rb +9 -3
- data/lib/bridgetown-core/utils/require_gems.rb +60 -0
- data/lib/bridgetown-core/utils/ruby_exec.rb +6 -9
- data/lib/bridgetown-core/utils/ruby_front_matter.rb +39 -0
- data/lib/bridgetown-core/version.rb +2 -2
- data/lib/bridgetown-core/watcher.rb +2 -1
- data/lib/bridgetown-core/yaml_parser.rb +22 -0
- data/lib/site_template/config/.keep +0 -0
- data/lib/site_template/package.json.erb +4 -4
- data/lib/site_template/plugins/site_builder.rb +1 -1
- data/lib/site_template/src/_posts/0000-00-00-welcome-to-bridgetown.md.erb +1 -1
- metadata +21 -23
- data/lib/bridgetown-core/external.rb +0 -58
- data/lib/bridgetown-core/path_manager.rb +0 -31
- data/lib/bridgetown-core/readers/static_file_reader.rb +0 -25
- data/lib/bridgetown-core/utils/platforms.rb +0 -81
- data/lib/bridgetown-core/utils/thread_event.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4c0ce7bce739e63c69f338a2b614156fcf1b287f4d0742ae159055bbc64c8a6
|
4
|
+
data.tar.gz: 3ecd352f397904b828a924fcc4e58813b8d9c0c37313bd17a7fab4a08600ba64
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d17ec6dea80449358e73cc7c7c0d8ac1b3be7dd9d5a55d4d05771fbe59d7d7f27504c08143cb56b8d97e9c0329245c9f68476bfed2708d8915201c16f6ce1bc
|
7
|
+
data.tar.gz: 5ceb50825db51531cad5f9ae141d53a30791ef35ffeb44169911e764ce4ec6bcb082ce54f8a456da275853128dc8cd3768985fd1854001bab9cd0edc0ba057bc
|
data/bridgetown-core.gemspec
CHANGED
@@ -47,7 +47,6 @@ Gem::Specification.new do |s|
|
|
47
47
|
s.add_runtime_dependency("liquid-component", ">= 0.1")
|
48
48
|
s.add_runtime_dependency("listen", "~> 3.0")
|
49
49
|
s.add_runtime_dependency("rouge", "~> 3.0")
|
50
|
-
s.add_runtime_dependency("safe_yaml", "~> 1.0")
|
51
50
|
s.add_runtime_dependency("terminal-table", "~> 1.8")
|
52
51
|
s.add_runtime_dependency("thor", "~> 1.1")
|
53
52
|
s.add_runtime_dependency("tilt", "~> 2.0")
|
data/lib/bridgetown-core.rb
CHANGED
@@ -28,6 +28,7 @@ require "logger"
|
|
28
28
|
require "set"
|
29
29
|
require "csv"
|
30
30
|
require "json"
|
31
|
+
require "yaml"
|
31
32
|
|
32
33
|
# 3rd party
|
33
34
|
require "active_support"
|
@@ -38,12 +39,12 @@ require "active_support/core_ext/object/deep_dup"
|
|
38
39
|
require "active_support/core_ext/object/inclusion"
|
39
40
|
require "active_support/core_ext/string/inflections"
|
40
41
|
require "active_support/core_ext/string/inquiry"
|
42
|
+
require "active_support/core_ext/string/output_safety"
|
41
43
|
require "active_support/core_ext/string/starts_ends_with"
|
42
44
|
require "active_support/current_attributes"
|
43
45
|
require "active_support/descendants_tracker"
|
44
46
|
require "hash_with_dot_access"
|
45
47
|
require "addressable/uri"
|
46
|
-
require "safe_yaml/load"
|
47
48
|
require "liquid"
|
48
49
|
require "liquid-component"
|
49
50
|
require "kramdown"
|
@@ -61,25 +62,13 @@ module HashWithDotAccess
|
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
64
|
-
SafeYAML::OPTIONS[:suppress_warnings] = true
|
65
|
-
|
66
65
|
# Create our little String subclass for Ruby Front Matter
|
67
66
|
class Rb < String; end
|
68
|
-
SafeYAML::OPTIONS[:whitelisted_tags] = ["!ruby/string:Rb"]
|
69
|
-
|
70
|
-
if RUBY_VERSION.start_with?("3.0")
|
71
|
-
# workaround for Ruby 3 preview 2, maybe can remove later
|
72
|
-
# rubocop:disable Style/GlobalVars
|
73
|
-
old_verbose = $VERBOSE
|
74
|
-
$VERBOSE = nil
|
75
|
-
SafeYAML::SafeToRubyVisitor.const_set(:INITIALIZE_ARITY, 2)
|
76
|
-
$verbose = old_verbose
|
77
|
-
# rubocop:enable Style/GlobalVars
|
78
|
-
end
|
79
67
|
|
80
68
|
module Bridgetown
|
81
69
|
autoload :Cleaner, "bridgetown-core/cleaner"
|
82
70
|
autoload :Collection, "bridgetown-core/collection"
|
71
|
+
autoload :Component, "bridgetown-core/component"
|
83
72
|
autoload :Configuration, "bridgetown-core/configuration"
|
84
73
|
autoload :DataAccessible, "bridgetown-core/concerns/data_accessible"
|
85
74
|
autoload :Deprecator, "bridgetown-core/deprecator"
|
@@ -88,9 +77,8 @@ module Bridgetown
|
|
88
77
|
# TODO: we have too many errors! This is silly
|
89
78
|
autoload :Errors, "bridgetown-core/errors"
|
90
79
|
autoload :Excerpt, "bridgetown-core/excerpt"
|
91
|
-
# TODO: this is a poorly named, unclear class. Relocate to Utils:
|
92
|
-
autoload :External, "bridgetown-core/external"
|
93
80
|
autoload :FrontmatterDefaults, "bridgetown-core/frontmatter_defaults"
|
81
|
+
autoload :FrontMatterImporter, "bridgetown-core/concerns/front_matter_importer"
|
94
82
|
autoload :Hooks, "bridgetown-core/hooks"
|
95
83
|
autoload :Layout, "bridgetown-core/layout"
|
96
84
|
autoload :LayoutPlaceable, "bridgetown-core/concerns/layout_placeable"
|
@@ -102,16 +90,12 @@ module Bridgetown
|
|
102
90
|
autoload :LayoutReader, "bridgetown-core/readers/layout_reader"
|
103
91
|
# TODO: remove this when legacy content engine is gone:
|
104
92
|
autoload :PostReader, "bridgetown-core/readers/post_reader"
|
105
|
-
# TODO:
|
93
|
+
# TODO: remove this when legacy content engine is gone:
|
106
94
|
autoload :PageReader, "bridgetown-core/readers/page_reader"
|
107
95
|
autoload :PluginContentReader, "bridgetown-core/readers/plugin_content_reader"
|
108
|
-
# TODO: also merge this:
|
109
|
-
autoload :StaticFileReader, "bridgetown-core/readers/static_file_reader"
|
110
96
|
autoload :LogAdapter, "bridgetown-core/log_adapter"
|
111
97
|
autoload :Page, "bridgetown-core/page"
|
112
98
|
autoload :GeneratedPage, "bridgetown-core/page"
|
113
|
-
# TODO: figure out how to get rid of this seemingly banal class:
|
114
|
-
autoload :PathManager, "bridgetown-core/path_manager"
|
115
99
|
autoload :PluginManager, "bridgetown-core/plugin_manager"
|
116
100
|
autoload :Publishable, "bridgetown-core/concerns/publishable"
|
117
101
|
autoload :Publisher, "bridgetown-core/publisher"
|
@@ -131,6 +115,7 @@ module Bridgetown
|
|
131
115
|
autoload :Validatable, "bridgetown-core/concerns/validatable"
|
132
116
|
autoload :VERSION, "bridgetown-core/version"
|
133
117
|
autoload :Watcher, "bridgetown-core/watcher"
|
118
|
+
autoload :YAMLParser, "bridgetown-core/yaml_parser"
|
134
119
|
|
135
120
|
# extensions
|
136
121
|
require "bridgetown-core/commands/registrations"
|
@@ -148,6 +133,7 @@ module Bridgetown
|
|
148
133
|
require_all "bridgetown-core/drops"
|
149
134
|
require_all "bridgetown-core/generators"
|
150
135
|
require_all "bridgetown-core/tags"
|
136
|
+
require_all "bridgetown-core/core_ext"
|
151
137
|
|
152
138
|
class << self
|
153
139
|
# Tells you which Bridgetown environment you are building in so
|
@@ -265,7 +251,7 @@ module Bridgetown
|
|
265
251
|
end
|
266
252
|
|
267
253
|
# Conditional optimizations
|
268
|
-
Bridgetown::
|
254
|
+
Bridgetown::Utils::RequireGems.require_if_present("liquid/c")
|
269
255
|
end
|
270
256
|
end
|
271
257
|
|
@@ -274,6 +260,9 @@ module Bridgetown
|
|
274
260
|
module Resource; end
|
275
261
|
end
|
276
262
|
|
263
|
+
# This method is available in Ruby 3, monkey patching for older versions
|
264
|
+
Psych.extend Bridgetown::CoreExt::Psych::SafeLoadFile unless Psych.respond_to?(:safe_load_file)
|
265
|
+
|
277
266
|
loader = Zeitwerk::Loader.new
|
278
267
|
loader.push_dir File.join(__dir__, "bridgetown-core/model"), namespace: Bridgetown::Model
|
279
268
|
loader.push_dir File.join(__dir__, "bridgetown-core/resource"), namespace: Bridgetown::Resource
|
@@ -101,7 +101,7 @@ module Bridgetown
|
|
101
101
|
#
|
102
102
|
# Returns a Set with the directory paths
|
103
103
|
def keep_dirs
|
104
|
-
site.keep_files.flat_map { |file| parent_dirs(site.in_dest_dir(file)) }.to_set
|
104
|
+
site.config.keep_files.flat_map { |file| parent_dirs(site.in_dest_dir(file)) }.to_set
|
105
105
|
end
|
106
106
|
|
107
107
|
# Private: Creates a regular expression from the config's keep_files array
|
@@ -112,7 +112,7 @@ module Bridgetown
|
|
112
112
|
#
|
113
113
|
# Returns the regular expression
|
114
114
|
def keep_file_regex
|
115
|
-
%r!\A#{Regexp.quote(site.dest)}\/(#{Regexp.union(site.keep_files).source})!
|
115
|
+
%r!\A#{Regexp.quote(site.dest)}\/(#{Regexp.union(site.config.keep_files).source})!
|
116
116
|
end
|
117
117
|
end
|
118
118
|
end
|
@@ -78,7 +78,8 @@ module Bridgetown
|
|
78
78
|
if site.uses_resource?
|
79
79
|
next if File.basename(file_path).starts_with?("_")
|
80
80
|
|
81
|
-
if label == "data" || Utils.has_yaml_header?(full_path)
|
81
|
+
if label == "data" || Utils.has_yaml_header?(full_path) ||
|
82
|
+
Utils.has_rbfm_header?(full_path)
|
82
83
|
read_resource(full_path)
|
83
84
|
else
|
84
85
|
read_static_file(file_path, full_path)
|
@@ -256,7 +257,7 @@ module Bridgetown
|
|
256
257
|
sanitized_segment = sanitize_filename.(File.basename(segment, ".*"))
|
257
258
|
hsh = nested.empty? ? data_contents : data_contents.dig(*nested)
|
258
259
|
hsh[sanitized_segment] = if index == segments.length - 1
|
259
|
-
data_resource.data.
|
260
|
+
data_resource.data.rows || data_resource.data
|
260
261
|
else
|
261
262
|
{}
|
262
263
|
end
|
@@ -279,6 +280,16 @@ module Bridgetown
|
|
279
280
|
data_contents
|
280
281
|
end
|
281
282
|
|
283
|
+
# Read in resource from repo path
|
284
|
+
# @param full_path [String]
|
285
|
+
def read_resource(full_path)
|
286
|
+
id = "repo://#{label}.collection/" + Addressable::URI.escape(
|
287
|
+
Pathname(full_path).relative_path_from(Pathname(site.source)).to_s
|
288
|
+
)
|
289
|
+
resource = Bridgetown::Model::Base.find(id).to_resource.read!
|
290
|
+
resources << resource if site.config.unpublished || resource.published?
|
291
|
+
end
|
292
|
+
|
282
293
|
private
|
283
294
|
|
284
295
|
def container
|
@@ -287,15 +298,7 @@ module Bridgetown
|
|
287
298
|
|
288
299
|
def read_document(full_path)
|
289
300
|
doc = Document.new(full_path, site: site, collection: self).tap(&:read)
|
290
|
-
docs << doc if site.unpublished || doc.published?
|
291
|
-
end
|
292
|
-
|
293
|
-
def read_resource(full_path)
|
294
|
-
id = "file://#{label}.collection/" + Addressable::URI.escape(
|
295
|
-
Pathname(full_path).relative_path_from(Pathname(site.source)).to_s
|
296
|
-
)
|
297
|
-
resource = Bridgetown::Model::Base.find(id).to_resource.read!
|
298
|
-
resources << resource if site.unpublished || resource.published?
|
301
|
+
docs << doc if site.config.unpublished || doc.published?
|
299
302
|
end
|
300
303
|
|
301
304
|
def sort_docs!
|
@@ -79,17 +79,6 @@ module Bridgetown
|
|
79
79
|
#
|
80
80
|
# Returns nothing.
|
81
81
|
def watch_site(config_options)
|
82
|
-
# Warn Windows users that they might need to upgrade.
|
83
|
-
if Utils::Platforms.bash_on_windows?
|
84
|
-
Bridgetown.logger.warn "",
|
85
|
-
"Auto-regeneration may not work on some Windows versions."
|
86
|
-
Bridgetown.logger.warn "",
|
87
|
-
"Please see: https://github.com/Microsoft/BashOnWindows/issues/216"
|
88
|
-
Bridgetown.logger.warn "",
|
89
|
-
"If it does not work, please upgrade Bash on Windows or "\
|
90
|
-
"run Bridgetown with --no-watch."
|
91
|
-
end
|
92
|
-
|
93
82
|
Bridgetown::Watcher.watch(@site, config_options)
|
94
83
|
end
|
95
84
|
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bridgetown
|
4
|
+
module Commands
|
5
|
+
module GitHelpers
|
6
|
+
def initialize_new_repo
|
7
|
+
run "git init", abort_on_failure: true
|
8
|
+
`git symbolic-ref HEAD refs/heads/main` if user_default_branch.empty?
|
9
|
+
end
|
10
|
+
|
11
|
+
def destroy_existing_repo
|
12
|
+
run "rm -rf .git"
|
13
|
+
end
|
14
|
+
|
15
|
+
def user_default_branch
|
16
|
+
@user_default_branch ||= `git config init.defaultbranch`.strip
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -4,6 +4,7 @@ module Bridgetown
|
|
4
4
|
module Commands
|
5
5
|
class Configure < Thor::Group
|
6
6
|
include Thor::Actions
|
7
|
+
include Actions
|
7
8
|
extend Summarizable
|
8
9
|
|
9
10
|
Registrations.register do
|
@@ -20,13 +21,13 @@ module Bridgetown
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def perform_configurations
|
23
|
-
logger = Bridgetown.logger
|
24
|
+
@logger = Bridgetown.logger
|
24
25
|
list_configurations if args.empty?
|
25
26
|
|
26
27
|
args.each do |configuration|
|
27
28
|
configure configuration
|
28
29
|
rescue Thor::Error
|
29
|
-
logger.error "Error:".red, "🚨 Configuration doesn't exist: #{configuration}"
|
30
|
+
@logger.error "Error:".red, "🚨 Configuration doesn't exist: #{configuration}"
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
@@ -40,7 +41,7 @@ module Bridgetown
|
|
40
41
|
configuration_file = find_in_source_paths("#{configuration}.rb")
|
41
42
|
|
42
43
|
inside(New.created_site_dir || Dir.pwd) do
|
43
|
-
|
44
|
+
apply configuration_file, verbose: false
|
44
45
|
end
|
45
46
|
end
|
46
47
|
|
@@ -33,7 +33,6 @@ module Bridgetown
|
|
33
33
|
|
34
34
|
def healthy?(site)
|
35
35
|
[
|
36
|
-
fsnotify_buggy?(site),
|
37
36
|
!conflicting_urls(site),
|
38
37
|
!urls_only_differ_by_case(site),
|
39
38
|
proper_site_url?(site),
|
@@ -59,7 +58,7 @@ module Bridgetown
|
|
59
58
|
conflicting_urls = false
|
60
59
|
urls = {}
|
61
60
|
urls = collect_urls(urls, site.pages, site.dest)
|
62
|
-
urls = collect_urls(urls, site.posts.docs, site.dest)
|
61
|
+
urls = collect_urls(urls, site.collections.posts.docs, site.dest)
|
63
62
|
urls.each do |url, paths|
|
64
63
|
next unless paths.size > 1
|
65
64
|
|
@@ -70,23 +69,6 @@ module Bridgetown
|
|
70
69
|
conflicting_urls
|
71
70
|
end
|
72
71
|
|
73
|
-
def fsnotify_buggy?(_site)
|
74
|
-
return true unless Utils::Platforms.osx?
|
75
|
-
|
76
|
-
if Dir.pwd != `pwd`.strip
|
77
|
-
Bridgetown.logger.error " " + <<-STR.strip.gsub(%r!\n\s+!, "\n ")
|
78
|
-
We have detected that there might be trouble using fsevent on your
|
79
|
-
operating system, you can read https://github.com/thibaudgg/rb-fsevent/wiki/no-fsevents-fired-(OSX-bug)
|
80
|
-
for possible work arounds or you can work around it immediately
|
81
|
-
with `--force-polling`.
|
82
|
-
STR
|
83
|
-
|
84
|
-
false
|
85
|
-
end
|
86
|
-
|
87
|
-
true
|
88
|
-
end
|
89
|
-
|
90
72
|
def urls_only_differ_by_case(site)
|
91
73
|
urls_only_differ_by_case = false
|
92
74
|
urls = case_insensitive_urls(site.pages + site.docs_to_write, site.dest)
|
@@ -4,6 +4,7 @@ module Bridgetown
|
|
4
4
|
module Commands
|
5
5
|
class New < Thor::Group
|
6
6
|
include Thor::Actions
|
7
|
+
include GitHelpers
|
7
8
|
extend Summarizable
|
8
9
|
|
9
10
|
Registrations.register do
|
@@ -85,10 +86,10 @@ module Bridgetown
|
|
85
86
|
)
|
86
87
|
template("Gemfile.erb", "Gemfile")
|
87
88
|
template("package.json.erb", "package.json")
|
88
|
-
template("webpack.config.js.erb", "webpack.config.js")
|
89
89
|
template("frontend/javascript/index.js.erb", "frontend/javascript/index.js")
|
90
90
|
|
91
91
|
options["use-postcss"] ? configure_postcss : configure_sass
|
92
|
+
invoke(Webpack, ["setup"], {})
|
92
93
|
end
|
93
94
|
|
94
95
|
def configure_sass
|
@@ -139,7 +140,7 @@ module Bridgetown
|
|
139
140
|
# rubocop:enable Metrics/PerceivedComplexity
|
140
141
|
|
141
142
|
def bundle_install(path)
|
142
|
-
unless Bridgetown.environment
|
143
|
+
unless Bridgetown.environment.test?
|
143
144
|
require "bundler"
|
144
145
|
Bridgetown.with_unbundled_env do
|
145
146
|
inside(path) do
|
@@ -155,10 +156,9 @@ module Bridgetown
|
|
155
156
|
end
|
156
157
|
|
157
158
|
def git_init(path)
|
158
|
-
unless Bridgetown.environment
|
159
|
+
unless Bridgetown.environment.test?
|
159
160
|
inside(path) do
|
160
|
-
|
161
|
-
run "if [[ -n $(git status | grep 'On branch master') ]]; then git checkout -b main; fi"
|
161
|
+
initialize_new_repo
|
162
162
|
end
|
163
163
|
end
|
164
164
|
rescue SystemExit
|
@@ -166,7 +166,7 @@ module Bridgetown
|
|
166
166
|
end
|
167
167
|
|
168
168
|
def yarn_install(path)
|
169
|
-
unless Bridgetown.environment
|
169
|
+
unless Bridgetown.environment.test?
|
170
170
|
inside(path) do
|
171
171
|
run "yarn install", abort_on_failure: true
|
172
172
|
end
|
@@ -5,6 +5,7 @@ module Bridgetown
|
|
5
5
|
class Plugins < Thor
|
6
6
|
include Thor::Actions
|
7
7
|
include ConfigurationOverridable
|
8
|
+
include GitHelpers
|
8
9
|
|
9
10
|
Registrations.register do
|
10
11
|
desc "plugins <command>", "List installed plugins or access plugin content"
|
@@ -144,15 +145,15 @@ module Bridgetown
|
|
144
145
|
name = folder_name.dasherize
|
145
146
|
module_name = folder_name.camelize
|
146
147
|
|
147
|
-
|
148
|
+
# TODO: upon 0.21 release, remove the explicit branch name!
|
149
|
+
run "git clone -b switch-to-minitest https://github.com/bridgetownrb/bridgetown-sample-plugin #{name}"
|
148
150
|
new_gemspec = "#{name}.gemspec"
|
149
151
|
|
150
152
|
inside name do # rubocop:todo Metrics/BlockLength
|
151
|
-
|
152
|
-
|
153
|
-
run "if [[ -n $(git status | grep 'On branch master') ]]; then git checkout -b main; fi"
|
153
|
+
destroy_existing_repo
|
154
|
+
initialize_new_repo
|
154
155
|
|
155
|
-
|
156
|
+
FileUtils.mv "bridgetown-sample-plugin.gemspec", new_gemspec.to_s
|
156
157
|
gsub_file new_gemspec, "https://github.com/bridgetownrb/bridgetown-sample-plugin", "https://github.com/username/#{name}"
|
157
158
|
gsub_file new_gemspec, "bridgetown-sample-plugin", name
|
158
159
|
gsub_file new_gemspec, "sample-plugin", name
|
@@ -161,21 +162,21 @@ module Bridgetown
|
|
161
162
|
gsub_file "package.json", "https://github.com/bridgetownrb/bridgetown-sample-plugin", "https://github.com/username/#{name}"
|
162
163
|
gsub_file "package.json", "bridgetown-sample-plugin", name
|
163
164
|
|
164
|
-
|
165
|
+
FileUtils.mv "lib/sample-plugin.rb", "lib/#{name}.rb"
|
165
166
|
gsub_file "lib/#{name}.rb", "sample-plugin", name
|
166
167
|
gsub_file "lib/#{name}.rb", "SamplePlugin", module_name
|
167
168
|
|
168
|
-
|
169
|
+
FileUtils.mv "lib/sample-plugin", "lib/#{name}"
|
169
170
|
gsub_file "lib/#{name}/builder.rb", "SamplePlugin", module_name
|
170
171
|
gsub_file "lib/#{name}/version.rb", "SamplePlugin", module_name
|
171
172
|
|
172
|
-
|
173
|
-
gsub_file "
|
174
|
-
gsub_file "
|
173
|
+
FileUtils.mv "test/test_sample_plugin.rb", "test/test_#{folder_name}.rb"
|
174
|
+
gsub_file "test/test_#{folder_name}.rb", "SamplePlugin", module_name
|
175
|
+
gsub_file "test/helper.rb", "sample-plugin", name
|
175
176
|
|
176
|
-
|
177
|
-
|
178
|
-
|
177
|
+
FileUtils.mv "components/sample_plugin", "components/#{folder_name}"
|
178
|
+
FileUtils.mv "content/sample_plugin", "content/#{folder_name}"
|
179
|
+
FileUtils.mv "layouts/sample_plugin", "layouts/#{folder_name}"
|
179
180
|
|
180
181
|
gsub_file "layouts/#{folder_name}/layout.html", "sample_plugin", folder_name
|
181
182
|
gsub_file "content/#{folder_name}/example_page.md", "sample_plugin", folder_name
|
@@ -13,10 +13,6 @@ module Bridgetown
|
|
13
13
|
|
14
14
|
class_option :host, aliases: "-H", desc: "Host to bind to"
|
15
15
|
class_option :port, aliases: "-P", desc: "Port to listen on"
|
16
|
-
class_option :open_url,
|
17
|
-
aliases: "-o",
|
18
|
-
type: :boolean,
|
19
|
-
desc: "Launch your site in a browser"
|
20
16
|
class_option :detach,
|
21
17
|
aliases: "-B",
|
22
18
|
type: :boolean,
|
@@ -169,16 +165,6 @@ module Bridgetown
|
|
169
165
|
)
|
170
166
|
end
|
171
167
|
|
172
|
-
def launch_browser(server, opts)
|
173
|
-
address = server_address(server, opts)
|
174
|
-
return system "start", address if Utils::Platforms.windows?
|
175
|
-
return system "xdg-open", address if Utils::Platforms.linux?
|
176
|
-
return system "open", address if Utils::Platforms.osx?
|
177
|
-
|
178
|
-
Bridgetown.logger.error "Refusing to launch browser; " \
|
179
|
-
"Platform launcher unknown."
|
180
|
-
end
|
181
|
-
|
182
168
|
# Keep in our area with a thread or detach the server as requested
|
183
169
|
# by the user. This method determines what we do based on what you
|
184
170
|
# ask us to do.
|