bridgetown-core 0.18.5 → 0.19.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/bridgetown +6 -0
- data/bridgetown-core.gemspec +3 -3
- data/lib/bridgetown-core.rb +24 -2
- data/lib/bridgetown-core/commands/apply.rb +4 -3
- data/lib/bridgetown-core/commands/concerns/actions.rb +0 -5
- data/lib/bridgetown-core/commands/configure.rb +62 -0
- data/lib/bridgetown-core/commands/new.rb +28 -1
- data/lib/bridgetown-core/commands/plugins.rb +1 -0
- data/lib/bridgetown-core/configurations/.keep +0 -0
- data/lib/bridgetown-core/configurations/bt-postcss.rb +26 -0
- data/lib/bridgetown-core/configurations/bt-postcss/postcss.config.js +21 -0
- data/lib/bridgetown-core/configurations/minitesting.rb +95 -0
- data/lib/bridgetown-core/configurations/netlify.rb +6 -0
- data/lib/bridgetown-core/configurations/netlify/netlify.sh +14 -0
- data/lib/bridgetown-core/configurations/netlify/netlify.toml +44 -0
- data/lib/bridgetown-core/configurations/purgecss.rb +49 -0
- data/lib/bridgetown-core/configurations/stimulus.rb +49 -0
- data/lib/bridgetown-core/configurations/swup.rb +37 -0
- data/lib/bridgetown-core/configurations/tailwindcss.rb +29 -0
- data/lib/bridgetown-core/configurations/tailwindcss/css_imports.css +4 -0
- data/lib/bridgetown-core/configurations/tailwindcss/postcss.config.js +12 -0
- data/lib/bridgetown-core/configurations/turbo.rb +16 -0
- data/lib/bridgetown-core/converters/erb_templates.rb +6 -13
- data/lib/bridgetown-core/filters.rb +3 -3
- data/lib/bridgetown-core/generator.rb +2 -1
- data/lib/bridgetown-core/page_without_a_file.rb +3 -0
- data/lib/bridgetown-core/plugin.rb +2 -26
- data/lib/bridgetown-core/ruby_template_view.rb +9 -2
- data/lib/bridgetown-core/utils/ruby_exec.rb +4 -4
- data/lib/bridgetown-core/version.rb +2 -2
- data/lib/site_template/README.md +70 -0
- data/lib/site_template/frontend/javascript/index.js.erb +11 -0
- data/lib/site_template/frontend/styles/index.css +19 -0
- data/lib/site_template/{package.json → package.json.erb} +16 -9
- data/lib/site_template/postcss.config.js.erb +11 -0
- data/lib/site_template/src/_components/footer.liquid +1 -1
- data/lib/site_template/src/_posts/0000-00-00-welcome-to-bridgetown.md.erb +1 -1
- data/lib/site_template/{webpack.config.js → webpack.config.js.erb} +42 -2
- metadata +41 -23
- data/lib/site_template/frontend/javascript/index.js +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad7d5025a99240586457a8afa4aa3e9a9aba0e289484ff855648bd772b89e7a9
|
4
|
+
data.tar.gz: 1ea0ad14dc78ca7465f7ff93bab6e178ec18b336e08641ac18bf75cf655b7246
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95b1542d9fa33741d18832a026aa43e720f99520b8367b12672e2689c7be19200e0cedd53b8070666c15e7594af43dec3c1885fa8570e6c7daf463afcae3405f
|
7
|
+
data.tar.gz: '00048d6aa2ca15728544ecbf46ee05b4b813630a03a0f35154b45096a2f9720ea645e23faac13fcab18a85e395fa6782eee522cbd39248b88b0f2a80a7fcff41'
|
data/bin/bridgetown
CHANGED
@@ -5,6 +5,12 @@ STDOUT.sync = true
|
|
5
5
|
|
6
6
|
$LOAD_PATH.unshift File.expand_path("../../bridgetown/lib", __dir__)
|
7
7
|
|
8
|
+
# Used by commands/automations
|
9
|
+
require "active_support"
|
10
|
+
require "active_support/core_ext/array/extract_options"
|
11
|
+
require "active_support/core_ext/string/strip"
|
12
|
+
require "active_support/core_ext/string/indent"
|
13
|
+
|
8
14
|
require "bridgetown"
|
9
15
|
|
10
16
|
Bridgetown::PluginManager.require_from_bundler
|
data/bridgetown-core.gemspec
CHANGED
@@ -42,14 +42,14 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.add_runtime_dependency("i18n", "~> 1.0")
|
43
43
|
s.add_runtime_dependency("kramdown", "~> 2.1")
|
44
44
|
s.add_runtime_dependency("kramdown-parser-gfm", "~> 1.0")
|
45
|
-
s.add_runtime_dependency("liquid", "~>
|
45
|
+
s.add_runtime_dependency("liquid", "~> 5.0")
|
46
46
|
s.add_runtime_dependency("liquid-component", ">= 0.1")
|
47
|
-
s.add_runtime_dependency("liquid-render-tag", "~> 0.2")
|
48
47
|
s.add_runtime_dependency("listen", "~> 3.0")
|
49
48
|
s.add_runtime_dependency("pathutil", "~> 0.9")
|
50
49
|
s.add_runtime_dependency("rouge", "~> 3.0")
|
51
50
|
s.add_runtime_dependency("safe_yaml", "~> 1.0")
|
52
51
|
s.add_runtime_dependency("terminal-table", "~> 1.8")
|
53
|
-
s.add_runtime_dependency("thor", "~> 1.
|
52
|
+
s.add_runtime_dependency("thor", "~> 1.1")
|
54
53
|
s.add_runtime_dependency("tilt", "~> 2.0")
|
54
|
+
s.add_runtime_dependency("webrick", "~> 1.7")
|
55
55
|
end
|
data/lib/bridgetown-core.rb
CHANGED
@@ -29,14 +29,18 @@ require "csv"
|
|
29
29
|
require "json"
|
30
30
|
|
31
31
|
# 3rd party
|
32
|
+
require "active_support"
|
33
|
+
require "active_support/core_ext/hash/keys"
|
32
34
|
require "active_support/core_ext/object/blank"
|
33
35
|
require "active_support/core_ext/string/inflections"
|
36
|
+
require "active_support/core_ext/string/inquiry"
|
37
|
+
require "active_support/core_ext/string/starts_ends_with"
|
38
|
+
require "active_support/descendants_tracker"
|
34
39
|
require "hash_with_dot_access"
|
35
40
|
require "pathutil"
|
36
41
|
require "addressable/uri"
|
37
42
|
require "safe_yaml/load"
|
38
43
|
require "liquid"
|
39
|
-
require "liquid-render-tag"
|
40
44
|
require "liquid-component"
|
41
45
|
require "kramdown"
|
42
46
|
require "colorator"
|
@@ -44,12 +48,30 @@ require "i18n"
|
|
44
48
|
require "faraday"
|
45
49
|
require "thor"
|
46
50
|
|
51
|
+
module HashWithDotAccess
|
52
|
+
class Hash # :nodoc:
|
53
|
+
def to_liquid
|
54
|
+
to_h.to_liquid
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
47
59
|
SafeYAML::OPTIONS[:suppress_warnings] = true
|
48
60
|
|
49
61
|
# Create our little String subclass for Ruby Front Matter
|
50
62
|
class Rb < String; end
|
51
63
|
SafeYAML::OPTIONS[:whitelisted_tags] = ["!ruby/string:Rb"]
|
52
64
|
|
65
|
+
if RUBY_VERSION.start_with?("3.0")
|
66
|
+
# workaround for Ruby 3 preview 2, maybe can remove later
|
67
|
+
# rubocop:disable Style/GlobalVars
|
68
|
+
old_verbose = $VERBOSE
|
69
|
+
$VERBOSE = nil
|
70
|
+
SafeYAML::SafeToRubyVisitor.const_set(:INITIALIZE_ARITY, 2)
|
71
|
+
$verbose = old_verbose
|
72
|
+
# rubocop:enable Style/GlobalVars
|
73
|
+
end
|
74
|
+
|
53
75
|
module Bridgetown
|
54
76
|
# internal requires
|
55
77
|
autoload :Cleaner, "bridgetown-core/cleaner"
|
@@ -118,7 +140,7 @@ module Bridgetown
|
|
118
140
|
# Tells you which Bridgetown environment you are building in so
|
119
141
|
# you can skip tasks if you need to.
|
120
142
|
def environment
|
121
|
-
ENV["BRIDGETOWN_ENV"] || "development"
|
143
|
+
(ENV["BRIDGETOWN_ENV"] || "development").inquiry
|
122
144
|
end
|
123
145
|
alias_method :env, :environment
|
124
146
|
|
@@ -26,6 +26,7 @@ module Bridgetown
|
|
26
26
|
|
27
27
|
def apply_automation
|
28
28
|
@source_paths = [Dir.pwd]
|
29
|
+
@logger = Bridgetown.logger
|
29
30
|
|
30
31
|
if options[:apply]
|
31
32
|
apply_after_new_command
|
@@ -33,9 +34,9 @@ module Bridgetown
|
|
33
34
|
apply_in_pwd
|
34
35
|
end
|
35
36
|
rescue SystemExit => e
|
36
|
-
|
37
|
+
@logger.error "Problem occurred while running automation:"
|
37
38
|
e.backtrace[0..3].each do |backtrace_line|
|
38
|
-
|
39
|
+
@logger.info backtrace_line if backtrace_line.include?(":in `apply'")
|
39
40
|
end
|
40
41
|
raise e
|
41
42
|
end
|
@@ -66,7 +67,7 @@ module Bridgetown
|
|
66
67
|
apply_from_url automation_command
|
67
68
|
end
|
68
69
|
rescue ArgumentError => e
|
69
|
-
|
70
|
+
@logger.warn "Oops!", e.message
|
70
71
|
end
|
71
72
|
end
|
72
73
|
end
|
@@ -1,10 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Mostly not used here, but may come in handy in new automations
|
4
|
-
require "active_support/core_ext/array/extract_options"
|
5
|
-
require "active_support/core_ext/string/strip"
|
6
|
-
require "active_support/core_ext/string/indent"
|
7
|
-
|
8
3
|
module Bridgetown
|
9
4
|
module Commands
|
10
5
|
module Actions
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Bridgetown
|
4
|
+
module Commands
|
5
|
+
class Configure < Thor::Group
|
6
|
+
include Thor::Actions
|
7
|
+
extend Summarizable
|
8
|
+
|
9
|
+
Registrations.register do
|
10
|
+
register(Configure, "configure", "configure CONFIGURATION", Configure.summary)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.banner
|
14
|
+
"bridgetown configure CONFIGURATION(S)"
|
15
|
+
end
|
16
|
+
summary "Set up bundled Bridgetown configurations"
|
17
|
+
|
18
|
+
def self.exit_on_failure?
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
def perform_configurations
|
23
|
+
logger = Bridgetown.logger
|
24
|
+
list_configurations if args.empty?
|
25
|
+
|
26
|
+
args.each do |configuration|
|
27
|
+
configure configuration
|
28
|
+
rescue Thor::Error
|
29
|
+
logger.error "Error:".red, "🚨 Configuration doesn't exist: #{configuration}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.source_root
|
34
|
+
File.expand_path("../configurations", __dir__)
|
35
|
+
end
|
36
|
+
|
37
|
+
protected
|
38
|
+
|
39
|
+
def configure(configuration)
|
40
|
+
configuration_file = find_in_source_paths("#{configuration}.rb")
|
41
|
+
|
42
|
+
inside(New.created_site_dir || Dir.pwd) do
|
43
|
+
Apply.new.invoke(:apply_automation, [configuration_file])
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def list_configurations
|
48
|
+
say "Please specify a valid packaged configuration from the below list:\n\n"
|
49
|
+
configurations.each do |configuration|
|
50
|
+
configuration = set_color configuration, :blue, :bold
|
51
|
+
say configuration
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def configurations
|
56
|
+
inside self.class.source_root do
|
57
|
+
return Dir.glob("*.rb").map { |file| file.sub(".rb", "") }
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -19,6 +19,10 @@ module Bridgetown
|
|
19
19
|
aliases: "-a",
|
20
20
|
banner: "PATH|URL",
|
21
21
|
desc: "Apply an automation after creating the site scaffold"
|
22
|
+
class_option :configure,
|
23
|
+
aliases: "-c",
|
24
|
+
banner: "CONFIGURATION(S)",
|
25
|
+
desc: "Comma separated list of bundled configurations to perform"
|
22
26
|
class_option :force,
|
23
27
|
type: :boolean,
|
24
28
|
desc: "Force creation even if PATH already exists"
|
@@ -28,6 +32,9 @@ module Bridgetown
|
|
28
32
|
class_option :"skip-yarn",
|
29
33
|
type: :boolean,
|
30
34
|
desc: "Skip 'yarn install'"
|
35
|
+
class_option :"use-postcss",
|
36
|
+
type: :boolean,
|
37
|
+
desc: "Create an empty PostCSS configuration instead of using Sass"
|
31
38
|
|
32
39
|
DOCSURL = "https://bridgetownrb.com/docs"
|
33
40
|
|
@@ -47,6 +54,8 @@ module Bridgetown
|
|
47
54
|
raise ArgumentError, "You must specify a path." if args.empty?
|
48
55
|
|
49
56
|
new_site_path = File.expand_path(args.join(" "), Dir.pwd)
|
57
|
+
@site_name = new_site_path.split(File::SEPARATOR).last
|
58
|
+
|
50
59
|
if preserve_source_location?(new_site_path, options)
|
51
60
|
say_status :conflict, "#{new_site_path} exists and is not empty.", :red
|
52
61
|
Bridgetown.logger.abort_with "Ensure #{new_site_path} is empty or else " \
|
@@ -67,7 +76,7 @@ module Bridgetown
|
|
67
76
|
end
|
68
77
|
|
69
78
|
def create_site(new_site_path)
|
70
|
-
directory ".", ".", exclude_pattern: %r!\.erb|DS_Store$!
|
79
|
+
directory ".", ".", exclude_pattern: %r!\.erb|DS_Store$|\.(s[ac]|c)ss$!
|
71
80
|
FileUtils.chmod_R "u+w", new_site_path
|
72
81
|
|
73
82
|
template(
|
@@ -75,12 +84,27 @@ module Bridgetown
|
|
75
84
|
"src/_posts/#{Time.now.strftime("%Y-%m-%d")}-welcome-to-bridgetown.md"
|
76
85
|
)
|
77
86
|
template("Gemfile.erb", "Gemfile")
|
87
|
+
template("package.json.erb", "package.json")
|
88
|
+
template("webpack.config.js.erb", "webpack.config.js")
|
89
|
+
template("frontend/javascript/index.js.erb", "frontend/javascript/index.js")
|
90
|
+
|
91
|
+
options["use-postcss"] ? configure_postcss : configure_sass
|
92
|
+
end
|
93
|
+
|
94
|
+
def configure_sass
|
95
|
+
copy_file("frontend/styles/index.scss")
|
96
|
+
end
|
97
|
+
|
98
|
+
def configure_postcss
|
99
|
+
template("postcss.config.js.erb", "postcss.config.js")
|
100
|
+
copy_file("frontend/styles/index.css")
|
78
101
|
end
|
79
102
|
|
80
103
|
# After a new site has been created, print a success notification and
|
81
104
|
# then automatically execute bundle install from within the new site dir
|
82
105
|
# unless the user opts to skip 'bundle install'.
|
83
106
|
# rubocop:todo Metrics/CyclomaticComplexity
|
107
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
84
108
|
def after_install(path, cli_path, options = {})
|
85
109
|
git_init path
|
86
110
|
|
@@ -91,6 +115,7 @@ module Bridgetown
|
|
91
115
|
yarn_install path unless options["skip-yarn"]
|
92
116
|
|
93
117
|
invoke(Apply, [], options) if options[:apply]
|
118
|
+
invoke(Configure, options[:configure].split(","), {}) if options[:configure]
|
94
119
|
|
95
120
|
logger = Bridgetown.logger
|
96
121
|
yarn_start = "yarn start"
|
@@ -111,6 +136,7 @@ module Bridgetown
|
|
111
136
|
logger.info "Yarn install skipped.".yellow if @skipped_yarn
|
112
137
|
end
|
113
138
|
# rubocop:enable Metrics/CyclomaticComplexity
|
139
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
114
140
|
|
115
141
|
def bundle_install(path)
|
116
142
|
unless Bridgetown.environment == "test"
|
@@ -132,6 +158,7 @@ module Bridgetown
|
|
132
158
|
unless Bridgetown.environment == "test"
|
133
159
|
inside(path) do
|
134
160
|
run "git init", abort_on_failure: true
|
161
|
+
run "if [[ -n $(git status | grep 'On branch master') ]]; then git checkout -b main; fi"
|
135
162
|
end
|
136
163
|
end
|
137
164
|
rescue SystemExit
|
@@ -150,6 +150,7 @@ module Bridgetown
|
|
150
150
|
inside name do # rubocop:todo Metrics/BlockLength
|
151
151
|
run "rm -rf .git"
|
152
152
|
run "git init"
|
153
|
+
run "if [[ -n $(git status | grep 'On branch master') ]]; then git checkout -b main; fi"
|
153
154
|
|
154
155
|
run "mv bridgetown-sample-plugin.gemspec #{new_gemspec}"
|
155
156
|
gsub_file new_gemspec, "https://github.com/bridgetownrb/bridgetown-sample-plugin", "https://github.com/username/#{name}"
|
File without changes
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable all
|
4
|
+
|
5
|
+
TEMPLATE_PATH = File.expand_path("./bt-postcss", __dir__)
|
6
|
+
|
7
|
+
begin
|
8
|
+
find_in_source_paths("postcss.config.js")
|
9
|
+
rescue Thor::Error
|
10
|
+
error_message = "#{"postcss.config.js".bold} not found. Please configure postcss in your project."
|
11
|
+
|
12
|
+
@logger.error "\nError:".red, "🚨 #{error_message}"
|
13
|
+
@logger.info "\nFor new projects, you can use #{"bridgetown new my_project --use-postcss".bold.blue}\n"
|
14
|
+
|
15
|
+
return
|
16
|
+
end
|
17
|
+
|
18
|
+
plugins = %w(postcss-easy-import postcss-mixins postcss-color-function cssnano)
|
19
|
+
|
20
|
+
say "Adding the following PostCSS plugins: #{plugins.join(' | ')}", :green
|
21
|
+
run "yarn add -D #{plugins.join(' ')}"
|
22
|
+
|
23
|
+
remove_file "postcss.config.js"
|
24
|
+
copy_file "#{TEMPLATE_PATH}/postcss.config.js", "postcss.config.js"
|
25
|
+
|
26
|
+
# rubocop:enable all
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module.exports = {
|
2
|
+
plugins: {
|
3
|
+
'postcss-easy-import': {},
|
4
|
+
'postcss-mixins': {},
|
5
|
+
'postcss-color-function': {},
|
6
|
+
'postcss-flexbugs-fixes': {},
|
7
|
+
'postcss-preset-env': {
|
8
|
+
autoprefixer: {
|
9
|
+
flexbox: 'no-2009'
|
10
|
+
},
|
11
|
+
stage: 2,
|
12
|
+
features: {
|
13
|
+
'nesting-rules': true,
|
14
|
+
'custom-media-queries': true
|
15
|
+
},
|
16
|
+
},
|
17
|
+
'cssnano' : {
|
18
|
+
preset: 'default'
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable all
|
4
|
+
|
5
|
+
say_status :minitesting, "Adding test gems, package.json scripts, and examples"
|
6
|
+
|
7
|
+
append_to_file "Gemfile" do
|
8
|
+
<<~GEMS
|
9
|
+
\n
|
10
|
+
group :test, optional: true do
|
11
|
+
gem "nokogiri"
|
12
|
+
gem "minitest"
|
13
|
+
gem "minitest-profile"
|
14
|
+
gem "minitest-reporters"
|
15
|
+
gem "shoulda"
|
16
|
+
gem "rails-dom-testing"
|
17
|
+
end
|
18
|
+
GEMS
|
19
|
+
end
|
20
|
+
|
21
|
+
new_scripts = ' "test": "BRIDGETOWN_ENV=test yarn build",'
|
22
|
+
new_scripts += "\n" + ' "deploy:test": "bundle install --with test && yarn deploy"'
|
23
|
+
package_json = "package.json"
|
24
|
+
script_regex = %r{"scripts": \{(\s+".*,?)*}
|
25
|
+
inject_into_file(package_json, ",\n" + new_scripts, after: script_regex)
|
26
|
+
|
27
|
+
create_file "test/helper.rb" do
|
28
|
+
<<~RUBY
|
29
|
+
require "nokogiri"
|
30
|
+
require "minitest/autorun"
|
31
|
+
require "minitest/reporters"
|
32
|
+
require "minitest/profile"
|
33
|
+
require "shoulda"
|
34
|
+
require "rails-dom-testing"
|
35
|
+
# Report with color.
|
36
|
+
Minitest::Reporters.use! [
|
37
|
+
Minitest::Reporters::DefaultReporter.new(
|
38
|
+
color: true
|
39
|
+
),
|
40
|
+
]
|
41
|
+
Minitest::Test.class_eval do
|
42
|
+
include Rails::Dom::Testing::Assertions
|
43
|
+
def site
|
44
|
+
@site ||= Bridgetown.sites.first
|
45
|
+
end
|
46
|
+
def nokogiri(input)
|
47
|
+
input.respond_to?(:output) ? Nokogiri::HTML(input.output) : Nokogiri::HTML(input)
|
48
|
+
end
|
49
|
+
def document_root(root)
|
50
|
+
@document_root = root.is_a?(Nokogiri::XML::Document) ? root : nokogiri(root)
|
51
|
+
end
|
52
|
+
def document_root_element
|
53
|
+
if @document_root.nil?
|
54
|
+
raise "Call `document_root' with a Nokogiri document before testing your assertions"
|
55
|
+
end
|
56
|
+
@document_root
|
57
|
+
end
|
58
|
+
end
|
59
|
+
RUBY
|
60
|
+
end
|
61
|
+
|
62
|
+
create_file "test/test_homepage.rb" do
|
63
|
+
<<~RUBY
|
64
|
+
require_relative "./helper"
|
65
|
+
class TestHomepage < Minitest::Test
|
66
|
+
context "homepage" do
|
67
|
+
setup do
|
68
|
+
page = site.pages.find { |doc| doc.url == "/" }
|
69
|
+
document_root page
|
70
|
+
end
|
71
|
+
should "exist" do
|
72
|
+
assert_select "body"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
RUBY
|
77
|
+
end
|
78
|
+
|
79
|
+
create_file "plugins/test_output.rb" do
|
80
|
+
<<~RUBY
|
81
|
+
unless Bridgetown.environment == "development"
|
82
|
+
Bridgetown::Hooks.register :site, :post_write do
|
83
|
+
# Load test suite to run on exit
|
84
|
+
require "nokogiri"
|
85
|
+
Dir["test/**/*.rb"].each { |file| require_relative("../\#{file}") }
|
86
|
+
rescue LoadError
|
87
|
+
Bridgetown.logger.warn "Testing:", "To run tests, you must first run \`bundle install --with test\`"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
RUBY
|
91
|
+
end
|
92
|
+
|
93
|
+
say_status :minitesting, "All set! To get started, look at test/test_homepage.rb and then run \`yarn test\`"
|
94
|
+
|
95
|
+
# rubocop:enable all
|