bridgetown-core 1.2.0.beta1 → 1.2.0.beta3

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
  SHA256:
3
- metadata.gz: 151aa943c75bc92219b009a1024ba80346428dd86b2a55aa606d14e1fbe67fca
4
- data.tar.gz: 922024f32b5785568c424894875694b5b0d2b3c417397ea2199227fdeccdfc46
3
+ metadata.gz: 4b1d92b4942102e7a3aba18f3a617d905bdb13bf7193a816cd444e26340935c7
4
+ data.tar.gz: 6fdc5319169d9b2cc712680c0d73c12ea71364610172f7af5764d068c555457e
5
5
  SHA512:
6
- metadata.gz: 794136c89b55a6c4bca1a0c9c00b1e26570782d9c4d8ee24e5f0543f318ecbdfb645a257b635d8cf4e42cb2bed644c7507ddfc21a8820ff730c4da34fb1d9a3d
7
- data.tar.gz: 4fa68e3690b005053452c75a55f044dca2310f83364c94eef1c22e3adc5b13e010ced5cbeb4008de5211079cc4ed2244079fcb341aadc3989bbe67c3f486221a
6
+ metadata.gz: 7e82b661568cedb825c2de4c327b759169dad229e23a64bd256d28fa37cd64108901143ff882afe3b9db7393427a3863a33017bf414ccbe53c5ea12d148ba2cb
7
+ data.tar.gz: 2f957ec8ade498fcce3667604779db33f4a5b71778e8c5d449afec3c56b224aa8c034d0c5eb0894d68c23b049a0db9a36c9db84bf05e76a1c1dd5dc59acc7683
@@ -52,13 +52,50 @@ module Bridgetown
52
52
  end
53
53
  end
54
54
 
55
- def add_bridgetown_plugin(gemname, version: nil)
56
- version = " -v \"#{version}\"" if version
57
- run "bundle add #{gemname}#{version} -g bridgetown_plugins",
55
+ def add_gem(gemname, group: nil, version: nil)
56
+ options = +""
57
+ options += " -v \"#{version}\"" if version
58
+ options += " -g #{group}" if group
59
+ run "bundle add #{gemname}#{options}",
58
60
  env: { "BUNDLE_GEMFILE" => File.join(destination_root, "Gemfile") }
59
61
  rescue SystemExit
60
62
  say_status :run, "Gem not added due to bundler error", :red
61
63
  end
64
+ alias_method :add_bridgetown_plugin, :add_gem
65
+
66
+ def add_initializer(name, data = "")
67
+ say_status :initializer, name
68
+ data = yield if block_given?
69
+ data = data.indent(2).lstrip
70
+ data += "\n" unless data.chars.last == "\n"
71
+
72
+ init_file = File.join("config", "initializers.rb")
73
+ unless File.exist?(init_file)
74
+ create_file("config/initializers.rb", verbose: true) do
75
+ File.read(File.expand_path("../../../site_template/config/initializers.rb", __dir__))
76
+ end
77
+ end
78
+
79
+ inject_into_file init_file, %( init :"#{name}"#{data}),
80
+ before: %r!^end$!, verbose: false, force: false
81
+ end
82
+
83
+ def ruby_configure(name, data = "")
84
+ say_status :configure, name
85
+ data = yield if block_given?
86
+ data = data.indent(2)
87
+ data += "\n" unless data.chars.last == "\n"
88
+
89
+ init_file = File.join("config", "initializers.rb")
90
+ unless File.exist?(init_file)
91
+ create_file("config/initializers.rb", verbose: true) do
92
+ File.read(File.expand_path("../../../site_template/config/initializers.rb", __dir__))
93
+ end
94
+ end
95
+
96
+ inject_into_file init_file, data,
97
+ before: %r!^end$!, verbose: false, force: false
98
+ end
62
99
 
63
100
  def add_yarn_for_gem(gemname)
64
101
  say_status :add_yarn, gemname
@@ -57,7 +57,7 @@ module Bridgetown
57
57
  end
58
58
 
59
59
  def builder(klass = nil, &block)
60
- return klass.register if klass.is_a?(Bridgetown::Builder)
60
+ return klass.register if klass.is_a?(Class) && klass < Bridgetown::Builder
61
61
 
62
62
  unless klass.is_a?(Symbol)
63
63
  raise "You must supply a constant symbol to register an inline builder"
@@ -147,6 +147,8 @@ module Bridgetown
147
147
  dsl.instance_variable_set(:@context, context)
148
148
  dsl.instance_exec(dsl, &init_init.block)
149
149
 
150
+ setup_load_paths! appending: true
151
+
150
152
  self
151
153
  end
152
154
 
@@ -323,16 +325,18 @@ module Bridgetown
323
325
  self
324
326
  end
325
327
 
326
- def setup_load_paths! # rubocop:todo Metrics
327
- self[:root_dir] = File.expand_path(self[:root_dir])
328
- self[:source] = File.expand_path(self[:source], self[:root_dir])
329
- self[:destination] = File.expand_path(self[:destination], self[:root_dir])
330
-
331
- if self[:plugins_use_zeitwerk]
332
- autoload_paths.unshift({
333
- path: self[:plugins_dir],
334
- eager: true,
335
- })
328
+ def setup_load_paths!(appending: false) # rubocop:todo Metrics
329
+ unless appending
330
+ self[:root_dir] = File.expand_path(self[:root_dir])
331
+ self[:source] = File.expand_path(self[:source], self[:root_dir])
332
+ self[:destination] = File.expand_path(self[:destination], self[:root_dir])
333
+
334
+ if self[:plugins_use_zeitwerk]
335
+ autoload_paths.unshift({
336
+ path: self[:plugins_dir],
337
+ eager: true,
338
+ })
339
+ end
336
340
  end
337
341
 
338
342
  autoload_paths.map! do |load_path|
@@ -3,7 +3,7 @@
3
3
  // any additional configuration to the `plugins` array below.
4
4
 
5
5
  // This plugin will let you import `.lit.css` files as sidecar stylesheets.
6
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
6
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
7
7
  const { litCssPlugin } = require("esbuild-plugin-lit-css")
8
8
  const postcssrc = require("postcss-load-config")
9
9
  const postcss = require("postcss")
@@ -11,9 +11,9 @@ end
11
11
 
12
12
  say_status :lit, "Installing Lit + SSR Plugin..."
13
13
 
14
- add_bridgetown_plugin "bridgetown-lit-renderer", version: "2.0.0.beta3"
14
+ add_gem "bridgetown-lit-renderer"
15
15
 
16
- run "yarn add lit esbuild-plugin-lit-css bridgetown-lit-renderer@2.0.0-beta3"
16
+ run "yarn add lit esbuild-plugin-lit-css bridgetown-lit-renderer"
17
17
 
18
18
  copy_file in_templates_dir("lit-ssr.config.js"), "config/lit-ssr.config.js"
19
19
  copy_file in_templates_dir("lit-components-entry.js"), "config/lit-components-entry.js"
@@ -35,7 +35,7 @@ gsub_file "esbuild.config.js", %r{const esbuildOptions = {}\n} do |_match|
35
35
  const esbuildOptions = {
36
36
  plugins: [...plugins],
37
37
  // Uncomment the following to opt into `.global.css` & `.lit.css` nomenclature.
38
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
38
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
39
39
  /*
40
40
  postCssPluginConfig: {
41
41
  filter: /(?:index|\.global)\.css$/,
@@ -56,7 +56,7 @@ unless found_match
56
56
  //
57
57
  // You might also want to include the following in your esbuild config to opt into
58
58
  // `.global.css` & `.lit.css` nomenclature.
59
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
59
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
60
60
  /*
61
61
  postCssPluginConfig: {
62
62
  filter: /(?:index|\.global)\.css$/,
@@ -78,10 +78,12 @@ insert_into_file "frontend/javascript/index.js",
78
78
  before: 'import components from "bridgetownComponents/**/*.{js,jsx,js.rb,css}"' do
79
79
  <<~JS
80
80
  // To opt into `.global.css` & `.lit.css` nomenclature, change the `css` extension below to `global.css`.
81
- // Read https://edge.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
81
+ // Read https://www.bridgetownrb.com/docs/components/lit#sidecar-css-files for documentation.
82
82
  JS
83
83
  end
84
84
 
85
+ add_initializer :"bridgetown-lit-renderer"
86
+
85
87
  if found_match
86
88
  say_status :lit, "Lit is now configured!"
87
89
  say_status :lit,
@@ -92,4 +94,4 @@ else
92
94
  end
93
95
 
94
96
  say "Check out the example `happy-days.lit.js` file in `src/_components`", :blue
95
- say 'For further reading, check out "https://edge.bridgetownrb.com/docs/components/lit"', :blue
97
+ say 'For further reading, check out "https://www.bridgetownrb.com/docs/components/lit"', :blue
@@ -1,77 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable all
4
-
5
- unless File.exist?("postcss.config.js")
6
- error_message = "#{"postcss.config.js".bold} not found. Please configure postcss in your project."
7
-
8
- @logger.error "\nError:".red, "🚨 #{error_message}"
9
- @logger.info "\nRun #{"bridgetown webpack enable-postcss".bold.blue} to set it up.\n"
10
-
11
- return
12
- end
13
-
14
- say_status :tailwind, "Installing Tailwind CSS..."
15
-
16
- confirm = ask "This configuration will ovewrite your existing #{"postcss.config.js".bold.white}. Would you like to continue? [Yn]"
17
- return unless confirm.casecmp?("Y")
18
-
19
- run "yarn add -D tailwindcss"
20
- run "npx tailwindcss init"
21
-
22
- gsub_file "tailwind.config.js", "content: [],", <<~JS.strip
23
- content: [
24
- './src/**/*.{html,md,liquid,erb,serb,rb}',
25
- './frontend/javascript/**/*.js',
26
- ],
27
- JS
28
-
29
- copy_file in_templates_dir("postcss.config.js"), "postcss.config.js", force: true
30
-
31
- if File.exist?("frontend/styles/index.css")
32
- prepend_to_file "frontend/styles/index.css",
33
- File.read(in_templates_dir("css_imports.css"))
34
- else
35
- say "\nPlease add the following lines to your CSS index file:"
36
- say File.read(in_templates_dir("/css_imports.css"))
37
- end
38
-
39
- create_file "frontend/styles/jit-refresh.css", "/* #{Time.now.to_i} */"
40
-
41
- insert_into_file "Rakefile",
42
- after: %r{ task :(build|dev) do\n} do
43
- <<-JS
44
- sh "touch frontend/styles/jit-refresh.css"
45
- JS
46
- end
47
-
48
- if File.exist?(".gitignore")
49
- append_to_file ".gitignore" do
50
- <<~FILES
51
-
52
- frontend/styles/jit-refresh.css
53
- FILES
54
- end
55
- end
56
-
57
- create_builder "tailwind_jit.rb" do
58
- <<~RUBY
59
- class Builders::TailwindJit < SiteBuilder
60
- def build
61
- hook :site, :pre_reload do |_, paths|
62
- # Don't trigger refresh if it's a frontend-only change
63
- next if paths.length == 1 && paths.first.ends_with?("manifest.json")
64
-
65
- # Save out a comment file to trigger Tailwind's JIT
66
- refresh_file = site.in_root_dir("frontend", "styles", "jit-refresh.css")
67
- File.write refresh_file, "/* \#{Time.now.to_i} */"
68
- throw :halt # don't continue the build, wait for watcher rebuild
69
- end
70
- end
71
- end
72
- RUBY
73
- end
74
-
75
- say_status :tailwind, "Tailwind CSS is now configured."
76
-
77
- # rubocop:enable all
3
+ say_status :tailwind, "The Tailwind CSS automation now lives in its own community-maintained repo:"
4
+ say "https://github.com/bridgetownrb/tailwindcss-automation"
5
+ say ""
6
+ say "Tailwind CSS not installed."
@@ -61,7 +61,7 @@ module Bridgetown
61
61
  end
62
62
 
63
63
  def self.setup_bundler(skip_yarn: false)
64
- if !ENV["BRIDGETOWN_NO_BUNDLER_REQUIRE"] && File.file?("Gemfile")
64
+ if !ENV["BRIDGETOWN_NO_BUNDLER_REQUIRE"] && (File.file?("Gemfile") || Bridgetown.env.test?)
65
65
  require "bundler"
66
66
 
67
67
  require_relative "utils/initializers"
@@ -47,6 +47,8 @@ module Bridgetown
47
47
 
48
48
  SiteContext = Struct.new(:registers) # for use by Liquid-esque URL helpers
49
49
 
50
+ plugin :method_override
51
+ plugin :all_verbs
50
52
  plugin :hooks
51
53
  plugin :common_logger, Bridgetown::Rack::Logger.new($stdout), method: :info
52
54
  plugin :json
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Bridgetown
4
- VERSION = "1.2.0.beta1"
4
+ VERSION = "1.2.0.beta3"
5
5
  CODE_NAME = "Bonny Slope"
6
6
  end
@@ -136,7 +136,7 @@ module Bridgetown
136
136
  alias_method :env, :environment
137
137
 
138
138
  def begin!
139
- ENV["RACK_ENV"] = ENV["BRIDGETOWN_ENV"]
139
+ ENV["RACK_ENV"] ||= environment
140
140
 
141
141
  Bridgetown::Current.preloaded_configuration = Bridgetown::Configuration::Preflight.new
142
142
  Bridgetown::PluginManager.setup_bundler
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Roda
4
+ module RodaPlugins
5
+ # This is a simplified Roda plugin version of the Rack middleware:
6
+ # https://github.com/rack/rack/blob/v2.2.2/lib/rack/method_override.rb
7
+ module MethodOverride
8
+ def self.configure(app, opts = {})
9
+ app.opts[:method_override_param] = opts[:method_override_param] || "_method"
10
+ end
11
+
12
+ module RequestMethods
13
+ HTTP_METHODS = %w(GET HEAD PUT POST DELETE OPTIONS PATCH LINK UNLINK).freeze
14
+ HTTP_METHOD_OVERRIDE_HEADER = "HTTP_X_HTTP_METHOD_OVERRIDE"
15
+ ALLOWED_METHODS = %w(POST).freeze
16
+
17
+ def initialize(scope, env)
18
+ super
19
+ return unless _allowed_methods.include?(env[Rack::REQUEST_METHOD])
20
+
21
+ method = _method_override(env)
22
+ return unless HTTP_METHODS.include?(method)
23
+
24
+ env[Rack::RACK_METHODOVERRIDE_ORIGINAL_METHOD] = env[Rack::REQUEST_METHOD]
25
+ env[Rack::REQUEST_METHOD] = method
26
+ end
27
+
28
+ private
29
+
30
+ def _method_override(env)
31
+ method = _method_override_param ||
32
+ env[HTTP_METHOD_OVERRIDE_HEADER]
33
+ method.to_s.upcase
34
+ end
35
+
36
+ def _allowed_methods
37
+ ALLOWED_METHODS
38
+ end
39
+
40
+ def _method_override_param
41
+ params[scope.class.opts[:method_override_param]]
42
+ end
43
+ end
44
+ end
45
+
46
+ register_plugin :method_override, MethodOverride
47
+ end
48
+ end
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: 1.2.0.beta1
4
+ version: 1.2.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bridgetown Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-02 00:00:00.000000000 Z
11
+ date: 2022-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -441,8 +441,6 @@ files:
441
441
  - lib/bridgetown-core/configurations/shoelace.rb
442
442
  - lib/bridgetown-core/configurations/stimulus.rb
443
443
  - lib/bridgetown-core/configurations/tailwindcss.rb
444
- - lib/bridgetown-core/configurations/tailwindcss/css_imports.css
445
- - lib/bridgetown-core/configurations/tailwindcss/postcss.config.js
446
444
  - lib/bridgetown-core/configurations/turbo.rb
447
445
  - lib/bridgetown-core/configurations/turbo/turbo_transitions.js
448
446
  - lib/bridgetown-core/configurations/vercel.rb
@@ -548,6 +546,7 @@ files:
548
546
  - lib/roda/plugins/bridgetown_boot.rb
549
547
  - lib/roda/plugins/bridgetown_ssr.rb
550
548
  - lib/roda/plugins/initializers.rb
549
+ - lib/roda/plugins/method_override.rb
551
550
  - lib/site_template/.gitignore
552
551
  - lib/site_template/Gemfile.erb
553
552
  - lib/site_template/README.md
@@ -1,9 +0,0 @@
1
- /* If you need to add @import statements, do so up here */
2
-
3
- @import "jit-refresh.css"; /* triggers frontend rebuilds */
4
-
5
- /* Set up Tailwind imports */
6
- @tailwind base;
7
- @tailwind components;
8
- @tailwind utilities;
9
-
@@ -1,12 +0,0 @@
1
- module.exports = {
2
- plugins: {
3
- 'tailwindcss': {},
4
- 'postcss-flexbugs-fixes': {},
5
- 'postcss-preset-env': {
6
- autoprefixer: {
7
- flexbox: 'no-2009'
8
- },
9
- stage: 2
10
- }
11
- }
12
- }