bullet_train-themes-light 1.0.43 → 1.0.44

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: e24cdf7bac5e2d73c88336839f27af997b293562418a82d774c2d1373c359ee2
4
- data.tar.gz: 80d310473d15a1b5b063ccf5bde34c67e0068254384239d4985d65e879f1c14f
3
+ metadata.gz: 20c969201f79403cce0cba8cb5a2d640f69ee2eac4a3b9c7194b6115d090ee66
4
+ data.tar.gz: 8bacfd8bdc9af51ae1d5c9d4f7a7c9150caa015b34bd6235d82fd69af6a29495
5
5
  SHA512:
6
- metadata.gz: 63b0098499996cc9e4dff89ceb74493cd5b3567cbd627fdc03e2f1f270ef7673ac525694754cab6369f45ee61e8b1959dd5c70ce3c742e8a260f11b29f435d5f
7
- data.tar.gz: eea8d7e1c9ff51fd9ea6e7124df727c916d214876346d2fa9abc5b38fd629fa07888ad8930c42e50b158c55c5190b25d5ca4f52d1d84f0e9598079a289f347fe
6
+ metadata.gz: d682d968c52407f0ce55c5364653cf28e33aeb2c38b0f6f487c0362e9eaa02dac8c4a20a06a0d4970c7e0ca13bb2cb2cec35312d9e75b48b6e6473f316d64bfd
7
+ data.tar.gz: 3c5c2681752f776e9af8a373c8d3b581395e8b373c076175ff15a307b8a47c97d1328b81f63fb10e938c9c8c067c98ff926199243349001cc0f6b07c9f291dd5
@@ -8,10 +8,11 @@
8
8
  background-color: rgba(0, 0, 0, 0.15);
9
9
  }
10
10
 
11
- .bg-light-gradient {
11
+ .bg-dark-gradient {
12
12
  &:before {
13
13
  background: linear-gradient(to bottom right, var(--dark-gradient-from), var(--dark-gradient-to) 100%);
14
14
  }
15
+ background: linear-gradient(to bottom right, var(--dark-gradient-from), var(--dark-gradient-to) 100%);
15
16
  }
16
17
 
17
18
  /**
@@ -1,7 +1,7 @@
1
1
  <% color ||= 'yellow' %>
2
2
 
3
3
  <div class="rounded-md bg-<%= color %>-400 border border-<%= color %>-500 py-4 px-5 mb-3">
4
- <h3 class="text-sm text-<%= color %>-900 font-light">
4
+ <h3 class="text-sm text-<%= color %>-600 text-<%= color %>-600 font-light">
5
5
  <%= yield %>
6
6
  </h3>
7
7
  </div>
@@ -38,7 +38,7 @@
38
38
  </div>
39
39
  <% end %>
40
40
 
41
- <% if p.content_for?(:actions) || pagy %>
41
+ <% if p.content_for? :actions || pagy %>
42
42
  <div class="pb-7 px-8 space-y-7">
43
43
  <div class="sm:flex">
44
44
  <div class="flex-1 space-x">
@@ -1,7 +1,7 @@
1
1
  module BulletTrain
2
2
  module Themes
3
3
  module Light
4
- VERSION = "1.0.43"
4
+ VERSION = "1.0.44"
5
5
  end
6
6
  end
7
7
  end
@@ -1,8 +1,6 @@
1
1
  require "bullet_train/themes/light/version"
2
2
  require "bullet_train/themes/light/engine"
3
3
  require "bullet_train/themes/tailwind_css"
4
- require "bullet_train/themes/light/file_replacer"
5
- require "bullet_train/themes/light/custom_theme_file_replacer"
6
4
 
7
5
  module BulletTrain
8
6
  module Themes
@@ -52,110 +52,6 @@ namespace :bullet_train do
52
52
 
53
53
  puts "You must restart `bin/dev` at this point, because of the changes to `Procfile.dev` and `package.json`."
54
54
  end
55
-
56
- desc "Publish your custom theme theme as a Ruby gem."
57
- task :release, [:theme_name] => :environment do |task, args|
58
- puts "Preparing to release your custom theme: ".blue + args[:theme_name]
59
- puts ""
60
- puts "Before we make a new Ruby gem for your theme, you'll have to set up a GitHub repository first.".blue
61
- puts "Hit <Return> and we'll open a browser to GitHub where you can create a new repository.".blue
62
- puts "Make sure you name the repository ".blue + "bullet_train-themes-#{args[:theme_name]}"
63
- puts ""
64
- puts "When you're done, copy the SSH path from the new repository and return here.".blue
65
- ask "We'll ask you to paste it to us in the next step."
66
- `#{Gem::Platform.local.os == "linux" ? "xdg-open" : "open"} https://github.com/new`
67
-
68
- ssh_path = ask "OK, what was the SSH path? (It should look like `git@github.com:your-account/your-new-repo.git`.)"
69
- puts ""
70
- puts "Great, you're all set.".blue
71
- puts "We'll take it from here, so sit back and enjoy the ride 🚄️".blue
72
- puts ""
73
- puts "Creating a Ruby gem for ".blue + "#{args[:theme_name]}..."
74
-
75
- Dir.mkdir("local") unless Dir.exist?("./local")
76
- if Dir.exist?("./local/bullet_train-themes-#{args[:theme_name]}")
77
- raise "You already have a repository named `bullet_train-themes-#{args[:theme_name]}` in `./local`.\n" \
78
- "Make sure you delete it first to create an entirely new gem."
79
- end
80
- `git clone git@github.com:bullet-train-co/bullet_train-themes-light.git ./local/bullet_train-themes-#{args[:theme_name]}`
81
-
82
- custom_file_replacer = BulletTrain::Themes::Light::CustomThemeFileReplacer.new(args[:theme_name])
83
- custom_file_replacer.replace_theme("light", args[:theme_name])
84
-
85
- work_tree_flag = "--work-tree=local/bullet_train-themes-#{args[:theme_name]}"
86
- git_dir_flag = "--git-dir=local/bullet_train-themes-#{args[:theme_name]}/.git"
87
- path = "./local/bullet_train-themes-#{args[:theme_name]}"
88
-
89
- # Set up the proper remote.
90
- `git #{work_tree_flag} #{git_dir_flag} remote set-url origin #{ssh_path}`
91
- `git #{work_tree_flag} #{git_dir_flag} add .`
92
- `git #{work_tree_flag} #{git_dir_flag} commit -m "Add initial files"`
93
-
94
- # Build the gem.
95
- `(cd #{path} && gem build bullet_train-themes-#{args[:theme_name]}.gemspec)`
96
- `git #{work_tree_flag} #{git_dir_flag} add .`
97
- `git #{work_tree_flag} #{git_dir_flag} commit -m "Build gem"`
98
-
99
- # Commit the deleted files on the main application.
100
- `git add .`
101
- `git commit -m "Remove #{args[:theme_name]} files from application"`
102
-
103
- # Push the gem's source code, but not the last commit in the main application.
104
- `git #{work_tree_flag} #{git_dir_flag} push -u origin main`
105
-
106
- puts ""
107
- puts ""
108
- puts "You're all set! Copy and paste the following commands to publish your gem:".blue
109
- puts "cd ./local/bullet_train-themes-#{args[:theme_name]}"
110
- puts "gem push bullet_train-themes-#{args[:theme_name]}-1.0.gem && cd ../../"
111
- puts ""
112
- puts "You may have to wait for some time until the gem can be downloaded via the Gemfile.".blue
113
- puts "After a few minutes, run the following command in your main application:".blue
114
- puts "bundle add bullet_train-themes-#{args[:theme_name]}"
115
- puts ""
116
- puts "Then you'll be ready to use your custom gem in your Bullet Train application.".blue
117
- end
118
-
119
- desc "Install this theme to your main application."
120
- task :install do |rake_task|
121
- # Grab the theme name from the rake task, bullet_train:theme:light:install
122
- theme_name = rake_task.name.split(":")[2]
123
-
124
- # Grabs the current theme from
125
- # def current_theme
126
- # :theme_name
127
- # end
128
- current_theme_regexp = /(^ :)(.*)/
129
- current_theme = nil
130
-
131
- new_lines = []
132
- [
133
- "./app/helpers/application_helper.rb",
134
- "./Procfile.dev",
135
- "./package.json"
136
- ].each do |file|
137
- File.open(file, "r") do |f|
138
- new_lines = f.readlines
139
- new_lines = new_lines.map do |line|
140
- # Make sure we get the current theme before trying to replace it in any of the files.
141
- # We grab it from the first file in the array above.
142
- current_theme = line.scan(current_theme_regexp).flatten.last if line.match?(current_theme_regexp)
143
-
144
- line.gsub!(/#{current_theme}/, theme_name) unless current_theme.nil?
145
- line
146
- end
147
- end
148
-
149
- File.open(file, "w") do |f|
150
- f.puts new_lines.join
151
- end
152
- end
153
- end
154
-
155
- def ask(string)
156
- puts string.blue
157
- $stdin.gets.strip
158
- end
159
55
  end
160
56
  end
161
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-themes-light
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.43
4
+ version: 1.0.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-25 00:00:00.000000000 Z
11
+ date: 2022-07-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -124,9 +124,7 @@ files:
124
124
  - app/views/themes/light/workflow/_box.html.erb
125
125
  - config/routes.rb
126
126
  - lib/bullet_train/themes/light.rb
127
- - lib/bullet_train/themes/light/custom_theme_file_replacer.rb
128
127
  - lib/bullet_train/themes/light/engine.rb
129
- - lib/bullet_train/themes/light/file_replacer.rb
130
128
  - lib/bullet_train/themes/light/version.rb
131
129
  - lib/tasks/bullet_train/themes/light_tasks.rake
132
130
  - tailwind.light.config.js
@@ -1,228 +0,0 @@
1
- module BulletTrain
2
- module Themes
3
- module Light
4
- class CustomThemeFileReplacer
5
- mattr_accessor :repo_path
6
-
7
- include BulletTrain::Themes::Light::FileReplacer
8
-
9
- def initialize(custom_theme)
10
- @repo_path = "./local/bullet_train-themes-#{custom_theme}"
11
- end
12
-
13
- def replace_theme(original_theme, custom_theme)
14
- # Rename the directories
15
- [
16
- "/app/assets/stylesheets/bullet_train/themes/#{original_theme}/",
17
- "/app/assets/stylesheets/#{original_theme}/",
18
- "/app/views/themes/#{original_theme}/",
19
- "/lib/bullet_train/themes/#{original_theme}/"
20
- ].map { |file| @repo_path + file }.each do |original_directory|
21
- custom_directory = original_directory.gsub(/(.*)(#{original_theme})(\/$)/, '\1' + custom_theme + '\3')
22
- FileUtils.mv(original_directory, custom_directory)
23
- end
24
-
25
- # Only compare ejected files.
26
- files_to_replace =
27
- ejected_files_to_replace(original_theme, custom_theme).map { |file| {file_name: file, must_compare: true} } +
28
- default_files_to_replace(original_theme).map { |file| {file_name: file, must_compare: false} }
29
-
30
- # Replace the file contents and rename the files.
31
- files_to_replace.each do |custom_gem_file|
32
- # All of the files we want to compare against the fresh gem are in the main app.
33
- main_app_file = build_main_app_file_name(original_theme, custom_theme, custom_gem_file[:file_name].gsub(@repo_path, "."))
34
- custom_gem_file[:file_name] = adjust_directory_hierarchy(custom_gem_file[:file_name], original_theme)
35
-
36
- # The content in the main app should replace the cloned gem files.
37
- if custom_gem_file[:must_compare] && !BulletTrain::Themes::Light::FileReplacer.files_have_same_content?(custom_gem_file[:file_name], main_app_file)
38
- BulletTrain::Themes::Light::FileReplacer.replace_content(old: custom_gem_file[:file_name], new: main_app_file)
39
- end
40
-
41
- # Only rename file names that still have the original theme in them, i.e. - ./tailwind.config.light.js
42
- if File.basename(custom_gem_file[:file_name]).match?(original_theme)
43
- main_app_file = adjust_directory_hierarchy(main_app_file, custom_theme)
44
- new_file_name = main_app_file.gsub(/^\./, @repo_path).gsub(original_theme, custom_theme)
45
- File.rename(custom_gem_file[:file_name], new_file_name)
46
- end
47
- end
48
-
49
- # Change the content of specific files that contain the orignal theme's string.
50
- # i.e. - `module Light` and `tailwind.light.config`.
51
- constantized_original = constantize_from_snake_case(original_theme)
52
- constantized_custom = constantize_from_snake_case(custom_theme)
53
- files_whose_contents_need_to_be_replaced(custom_theme).each do |file|
54
- new_lines = []
55
- File.open(file, "r") do |f|
56
- new_lines = f.readlines
57
- new_lines = new_lines.map do |line|
58
- # We want the original theme it's being edited from when creating a new theme.
59
- # We also remove mattr_accessor in the eject task, so we need to add it back here.
60
- if f.path == "#{@repo_path}/lib/bullet_train/themes/#{custom_theme}.rb" && line.match?("class Theme < BulletTrain::Themes::")
61
- line = " mattr_accessor :color, default: :blue\n class Theme < BulletTrain::Themes::#{constantize_from_snake_case(original_theme)}::Theme\n"
62
- else
63
- # `_account.html.erb` and `_devise.html.erb` have tailwind classes that contain `light`.
64
- # We shouldn't be replacing the classes with the custom theme string, so we skip it here.
65
- # TODO: We should change this Regexp to check if the original theme is prefixed with `-`.
66
- # If it is, we ignore the string if it's not prefixed with `bullet_train-themes-`,
67
- line.gsub!(original_theme, custom_theme) unless line.match?("bg-light-gradient")
68
- line.gsub!(constantized_original, constantized_custom)
69
- end
70
- line
71
- end
72
- end
73
-
74
- File.open(file, "w") do |f|
75
- f.puts new_lines.join
76
- end
77
- end
78
-
79
- # The contents in this specific main app file don't have the require statements which the gem
80
- # originally has, so we add those back after moving the main app file contents to the gem.
81
- new_lines = nil
82
- File.open("#{@repo_path}/lib/bullet_train/themes/#{custom_theme}.rb", "r") do |file|
83
- new_lines = file.readlines
84
- require_lines =
85
- <<~RUBY
86
- require "bullet_train/themes/#{custom_theme}/version"
87
- require "bullet_train/themes/#{custom_theme}/engine"
88
- require "bullet_train/themes/#{original_theme}"
89
-
90
- RUBY
91
- new_lines.unshift(require_lines)
92
- end
93
- File.open("#{@repo_path}/lib/bullet_train/themes/#{custom_theme}.rb", "w") do |file|
94
- file.puts new_lines.flatten.join
95
- end
96
-
97
- # Since we're generating a new gem, it should be version 1.0
98
- File.open("#{@repo_path}/lib/bullet_train/themes/#{custom_theme}/version.rb", "r") do |file|
99
- new_lines = file.readlines
100
- new_lines = new_lines.map { |line| line.match?("VERSION") ? " VERSION = \"1.0\"\n" : line }
101
- end
102
- File.open("#{@repo_path}/lib/bullet_train/themes/#{custom_theme}/version.rb", "w") do |file|
103
- file.puts new_lines.join
104
- end
105
-
106
- # Remove files and directories from the main application.
107
- files_to_remove_from_main_app(custom_theme).each { |file| File.delete(file) }
108
- directories_to_remove_from_main_app(custom_theme).each do |directory|
109
- FileUtils.rm_rf(directory) unless directory.nil?
110
- end
111
-
112
- # Update the author and email.
113
- # If the developer hasn't set these yet, this should simply return empty strings.
114
- author = `git config --global user.name`.chomp
115
- email = `git config --global user.email`.chomp
116
- File.open("#{@repo_path}/bullet_train-themes-#{custom_theme}.gemspec", "r") do |file|
117
- new_lines = file.readlines
118
- new_lines = new_lines.map do |line|
119
- if line.match?("spec.authors")
120
- " spec.authors = [\"#{author}\"]\n"
121
- elsif line.match?("spec.email")
122
- " spec.email = [\"#{email}\"]\n"
123
- else
124
- line
125
- end
126
- end
127
- end
128
- File.open("#{@repo_path}/bullet_train-themes-#{custom_theme}.gemspec", "w") do |file|
129
- file.puts new_lines.join
130
- end
131
- end
132
-
133
- # By the time we call this method we have already updated the new gem's directories with
134
- # the custom theme name, but the FILE names are still the same from when they were cloned,
135
- # so we use `original_theme` for specific file names below.
136
- def ejected_files_to_replace(original_theme, custom_theme)
137
- [
138
- Dir.glob("#{@repo_path}/app/assets/stylesheets/#{custom_theme}/**/*.css"),
139
- Dir.glob("#{@repo_path}/app/assets/stylesheets/#{custom_theme}/**/*.scss"),
140
- Dir.glob("#{@repo_path}/app/views/themes/#{custom_theme}/**/*.html.erb"),
141
- "/app/javascript/application.#{original_theme}.js",
142
- "/tailwind.#{original_theme}.config.js",
143
- "/app/lib/bullet_train/themes/#{original_theme}.rb",
144
- # The Glob up top doesn't grab the #{original_theme}.tailwind.css file, so we set that here.
145
- "/app/assets/stylesheets/#{original_theme}.tailwind.css",
146
- "/tailwind.mailer.#{original_theme}.config.js"
147
- ].flatten.map { |file| file.match?(/^#{@repo_path}/) ? file : @repo_path + file }
148
- end
149
-
150
- # These files represent ones such as "./lib/bullet_train/themes/light.rb" which
151
- # aren't ejected to the developer's main app, but still need to be changed.
152
- def default_files_to_replace(original_theme)
153
- # TODO: Add this file and the FileReplacer module once they're added to the main branch.
154
- [
155
- "/bullet_train-themes-#{original_theme}.gemspec",
156
- "/app/assets/config/bullet_train_themes_#{original_theme}_manifest.js",
157
- "/lib/tasks/bullet_train/themes/#{original_theme}_tasks.rake",
158
- "/test/bullet_train/themes/#{original_theme}_test.rb"
159
- ].map { |file| @repo_path + file }
160
- end
161
-
162
- def files_to_remove_from_main_app(custom_theme)
163
- [
164
- Dir.glob("./app/assets/stylesheets/#{custom_theme}/**/*.css"),
165
- Dir.glob("./app/assets/stylesheets/#{custom_theme}/**/*.scss"),
166
- "./app/assets/stylesheets/#{custom_theme}.tailwind.css",
167
- "./app/javascript/application.#{custom_theme}.js",
168
- "./app/lib/bullet_train/themes/#{custom_theme}.rb",
169
- Dir.glob("./app/views/themes/#{custom_theme}/**/*.html.erb")
170
- ].flatten
171
- end
172
-
173
- def files_whose_contents_need_to_be_replaced(custom_theme)
174
- [
175
- "/app/assets/stylesheets/#{custom_theme}.tailwind.css",
176
- "/app/views/themes/#{custom_theme}/layouts/_account.html.erb",
177
- "/app/views/themes/#{custom_theme}/layouts/_devise.html.erb",
178
- "/bin/rails",
179
- "/lib/bullet_train/themes/#{custom_theme}/engine.rb",
180
- "/lib/bullet_train/themes/#{custom_theme}/version.rb",
181
- "/lib/bullet_train/themes/#{custom_theme}.rb",
182
- "/lib/tasks/bullet_train/themes/#{custom_theme}_tasks.rake",
183
- "/test/bullet_train/themes/#{custom_theme}_test.rb",
184
- "/test/dummy/app/views/layouts/mailer.html.erb",
185
- "/test/dummy/config/application.rb",
186
- "/bullet_train-themes-#{custom_theme}.gemspec",
187
- "/Gemfile",
188
- "/README.md"
189
- ].map { |file| @repo_path + file }
190
- end
191
-
192
- def directories_to_remove_from_main_app(custom_theme)
193
- [
194
- "./app/assets/stylesheets/#{custom_theme}/",
195
- "./app/views/themes/#{custom_theme}/",
196
- "./app/lib/"
197
- ].map { |directory| directory unless directory == "./app/lib/" && Dir.empty?(directory) }
198
- end
199
-
200
- # Since we're cloning a fresh gem, file names that contain the original
201
- # theme stay the same, i.e. - tailwind.light.config.js. However, the names have
202
- # already been changed in the main app when the original theme was ejected.
203
- # Here, we build the correct string that is in the main app to compare the
204
- # files' contents. Then later on we actually rename the new gem's file names.
205
- def build_main_app_file_name(original_theme, custom_theme, custom_gem_file)
206
- main_app_file = custom_gem_file
207
- custom_gem_file_hierarchy = custom_gem_file.split("/")
208
- if custom_gem_file_hierarchy.last.match?(original_theme)
209
- custom_gem_file_hierarchy.last.gsub!(original_theme, custom_theme)
210
- main_app_file = custom_gem_file_hierarchy.join("/")
211
- end
212
- main_app_file
213
- end
214
-
215
- # This addresses one specific file where the hierarchy is
216
- # different after the file is ejected into the main application.
217
- def adjust_directory_hierarchy(file_name, theme_name)
218
- file_name.match?("lib/bullet_train/themes/#{theme_name}") ? file_name.gsub(/\/app/, "") : file_name
219
- end
220
-
221
- # i.e. - foo_bar or foo-bar to FooBar
222
- def constantize_from_snake_case(str)
223
- str.split(/[_|-]/).map(&:capitalize).join
224
- end
225
- end
226
- end
227
- end
228
- end
@@ -1,18 +0,0 @@
1
- # TODO: We overwrite/edit/create files a lot in Bullet Train,
2
- # so I feel like this and a lot of similar content could go inside its own gem.
3
- module BulletTrain
4
- module Themes
5
- module Light
6
- module FileReplacer
7
- def self.files_have_same_content?(first_file_name, second_file_name)
8
- File.open(first_file_name).readlines == File.open(second_file_name).readlines
9
- end
10
-
11
- # Replaces the old content with a brand new file.
12
- def self.replace_content(old:, new:)
13
- File.write(old, File.open(new).readlines.join(""))
14
- end
15
- end
16
- end
17
- end
18
- end