bullet_train-themes-light 1.0.47 → 1.0.48

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c253f5dd719876aebed5b2e12920b2bfe180848305a77cfc8a7ebe44d6d7f0c2
4
- data.tar.gz: ea57904da051edeb079bbc2bd3fd3afca0c422b5eaaa5925e8ac2665ff716db1
3
+ metadata.gz: d63e69ed21f864e2c966cb7077c16bf4253d783982aa3fb0482fcfcae4094c1e
4
+ data.tar.gz: 32fc62dfbe0d979b1c66b2276a54b59b99132d7c2981525175e545ac1ce168ab
5
5
  SHA512:
6
- metadata.gz: a51ee5dfb6568b0a02d65852993609e76e36dd027dae87109eae5d7e32763969cdcf7710b241aeae112e062c8bb83a1432447ed4921c8801a68787cd9b730711
7
- data.tar.gz: 31340a496d57fece4a5125277f5edbe534bc683cbde4da17a933856e75a58853b80344c9747e03aa091a43a133f6506b3d786d2fc95eb2d26e9e9ac51dff946b
6
+ metadata.gz: ddf7d29cbd347d0ec62853f2f09c9f4e44be1f13b762d5b13fbdbbaebcf1907a8f83916ec8f00d0c9793034817a657a1af924a21af992044129bf1a1c8deecb7
7
+ data.tar.gz: 01ffc7eb739b75d5df0ef6a735aa374e13503e86ca523cd412ef8c88800bf15d4f85d6f8b17a3390580e6a516cb2b9584fbffbeb6dfb7db6afe3a523a54aff90
@@ -5,6 +5,7 @@
5
5
 
6
6
  @import './bulk_actions';
7
7
  @import "./electron";
8
+ @import './devise';
8
9
  @import './fields';
9
10
  @import './turn';
10
11
 
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This takes care of the window's contents shifting when the
3
+ * scrollbar appears and disappears during the turn.css animation
4
+ */
5
+
6
+ /* Chrome, Safari and Opera */
7
+ .devise_layout::-webkit-scrollbar {
8
+ display: none;
9
+ }
10
+
11
+ /* Firefox and Edge */
12
+ .devise_layout {
13
+ -ms-overflow-style: none;
14
+ scrollbar-width: none;
15
+ }
@@ -178,8 +178,18 @@
178
178
  }
179
179
 
180
180
  trix-toolbar {
181
+ @apply opacity-50 !important;
182
+
183
+ &.visible {
184
+ @apply opacity-100 !important;
185
+ }
186
+
181
187
  .trix-button-group, .trix-button {
182
- @apply border-darkPrimary-900 !important;
188
+ @apply border-darkPrimary-400 !important;
189
+ }
190
+
191
+ .trix-button:disabled::before {
192
+ @apply opacity-25;
183
193
  }
184
194
  }
185
195
 
@@ -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-black-400 font-light">
5
5
  <%= yield %>
6
6
  </h3>
7
7
  </div>
@@ -5,7 +5,7 @@ form ||= current_fields_form
5
5
  # returns a struct with `label`, `placeholder`, and `help` methods.
6
6
  labels = labels_for(form, method)
7
7
  options ||= {}
8
- options[:id] ||= id_for(form, method)
8
+ options[:id] ||= form.field_id(method)
9
9
  # options[:disabled] ||= !field_editable?(form.object, method) if user_signed_in?
10
10
  options[:placeholder] ||= labels.placeholder if labels.placeholder
11
11
  other_options ||= {}
@@ -64,7 +64,7 @@ end
64
64
  <% end %>
65
65
 
66
66
  <% # any help text. %>
67
- <% if content_for?(:help) || other_options[:help] || content_for?(:after_help) %>
67
+ <% if content_for?(:help) || other_options[:help].present? || content_for?(:after_help) %>
68
68
  <p class="mt-1.5 text-xs text-gray-500 dark:text-gray-400">
69
69
  <%= yield :help %>
70
70
  <% flush_content_for :help %>
@@ -9,8 +9,6 @@
9
9
  <div class="h-screen md:h-auto overflow-hidden md:rounded-lg flex shadow main-container"
10
10
  data-controller="mobile-menu"
11
11
  data-mobile-menu-hidden-class="hidden"
12
- data-mobile-menu-show-event-name-value="mobile-menu:show"
13
- data-mobile-menu-hide-event-name-value="mobile-menu:hide"
14
12
  >
15
13
 
16
14
  <% menu = capture do %>
@@ -19,7 +17,8 @@
19
17
 
20
18
  <div class="lg:hidden absolute right-0">
21
19
  <button class="ml-1 flex items-center justify-center h-10 w-10 rounded-full focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white dark:ring-transparent"
22
- data-action="reveal#hide"
20
+ id="mobile-menu-close"
21
+ data-action="mobile-menu#close"
23
22
  >
24
23
  <span class="sr-only">Close Application Menu</span>
25
24
  <svg class="h-6 w-6 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
@@ -56,20 +55,13 @@
56
55
 
57
56
  <div class="lg:hidden hidden"
58
57
  data-mobile-menu-target="wrapper"
59
-
60
- data-controller="reveal"
61
- data-reveal-away-value="true"
62
- data-reveal-hide-keys-value="escape"
63
-
64
- data-action="mobile-menu:show->reveal#show mobile-menu:hide->reveal#hide mobile-menu-toggle->reveal#toggle reveal:hidden->mobile-menu#hideWrapper"
58
+ id="mobile-menu-backdrop"
65
59
  >
66
60
  <div class="fixed inset-0 flex z-40">
67
61
  <button
68
- data-action="reveal#hide"
69
-
70
- hidden
71
- data-reveal
72
- data-transition
62
+ data-mobile-menu-target="revealable"
63
+ data-action="mobile-menu#close"
64
+
73
65
  data-transition-enter="transition-opacity ease-linear duration-200"
74
66
  data-transition-enter-start="opacity-0"
75
67
  data-transition-enter-end="opacity-100"
@@ -77,14 +69,13 @@
77
69
  data-transition-leave-start="opacity-100"
78
70
  data-transition-leave-end="opacity-0"
79
71
 
80
- class="fixed inset-0" aria-hidden="true"
72
+ class="hidden fixed inset-0" aria-hidden="true"
81
73
  >
82
74
  <div class="absolute inset-0 bg-light-gradient opacity-75"></div>
83
75
  </button>
84
76
  <div
85
- hidden
86
- data-reveal
87
- data-transition
77
+ data-mobile-menu-target="revealable"
78
+
88
79
  data-transition-enter="transition ease-in-out duration-200 transform"
89
80
  data-transition-enter-start="-trandarkPrimary-x-full"
90
81
  data-transition-enter-end="trandarkPrimary-x-0"
@@ -92,7 +83,7 @@
92
83
  data-transition-leave-start="trandarkPrimary-x-0"
93
84
  data-transition-leave-end="-trandarkPrimary-x-full"
94
85
 
95
- class="relative flex-1 flex flex-col max-w-xs w-full pb-4 bg-dark-gradient shadow-xl"
86
+ class="hidden relative flex-1 flex flex-col max-w-xs w-full pb-4 bg-darkPrimary-800 shadow-xl"
96
87
  >
97
88
  <%= menu %>
98
89
  </div>
@@ -109,8 +100,9 @@
109
100
  <div class="flex flex-col w-0 flex-1 overflow-y-auto bg-gray-100 dark:bg-darkPrimary-800 lg:border-l dark:border-gray-500">
110
101
  <main class="flex-1 relative z-0 focus:outline-none" tabindex="0">
111
102
  <div class="flex flex-row items-center shadow-sm electron-draggable">
112
- <button class="mobile-menu-trigger lg:hidden h-12 w-12 ml-1 flex-none inline-flex items-center justify-center rounded-md text-gray-500 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
113
- data-action="mobile-menu#toggle"
103
+ <button class="lg:hidden h-12 w-12 ml-1 flex-none inline-flex items-center justify-center rounded-md text-gray-500 hover:text-gray-900 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-blue-500"
104
+ id="mobile-menu-open"
105
+ data-action="mobile-menu#open"
114
106
  >
115
107
  <span class="sr-only">Open Application Menu</span>
116
108
  <svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <%= render 'shared/layouts/head' %>
5
5
  </head>
6
- <body class="bg-light-gradient text-gray-700 text-sm font-normal electron-draggable dark:bg-dark-gradient dark:text-darkPrimary-300">
6
+ <body class="devise_layout bg-light-gradient text-gray-700 text-sm font-normal electron-draggable dark:bg-dark-gradient dark:text-darkPrimary-300">
7
7
  <div data-turn-enter data-turn-exit>
8
8
  <%= yield %>
9
9
  </div>
@@ -34,8 +34,12 @@ module BulletTrain
34
34
  custom_gem_file[:file_name] = adjust_directory_hierarchy(custom_gem_file[:file_name], original_theme)
35
35
 
36
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)
37
+ begin
38
+ if custom_gem_file[:must_compare] && !BulletTrain::Themes::Light::FileReplacer.files_have_same_content?(custom_gem_file[:file_name], main_app_file)
39
+ BulletTrain::Themes::Light::FileReplacer.replace_content(old: custom_gem_file[:file_name], new: main_app_file)
40
+ end
41
+ rescue Errno::ENOENT => _
42
+ puts "Skipping \`#{main_app_file}\` because it isn't present."
39
43
  end
40
44
 
41
45
  # Only rename file names that still have the original theme in them, i.e. - ./tailwind.config.light.js
@@ -166,7 +170,9 @@ module BulletTrain
166
170
  "./app/assets/stylesheets/#{custom_theme}.tailwind.css",
167
171
  "./app/javascript/application.#{custom_theme}.js",
168
172
  "./app/lib/bullet_train/themes/#{custom_theme}.rb",
169
- Dir.glob("./app/views/themes/#{custom_theme}/**/*.html.erb")
173
+ Dir.glob("./app/views/themes/#{custom_theme}/**/*.html.erb"),
174
+ "./tailwind.mailer.#{custom_theme}.config.js",
175
+ "./tailwind.#{custom_theme}.config.js",
170
176
  ].flatten
171
177
  end
172
178
 
@@ -1,7 +1,7 @@
1
1
  module BulletTrain
2
2
  module Themes
3
3
  module Light
4
- VERSION = "1.0.47"
4
+ VERSION = "1.0.48"
5
5
  end
6
6
  end
7
7
  end
@@ -9,6 +9,7 @@ module BulletTrain
9
9
  module Light
10
10
  # TODO Not sure this is the right place for this in the long-term.
11
11
  mattr_accessor :color, default: :blue
12
+ mattr_accessor :original_devise_path
12
13
 
13
14
  class Theme < BulletTrain::Themes::TailwindCss::Theme
14
15
  def directory_order
@@ -0,0 +1,177 @@
1
+ module BulletTrain
2
+ module Themes
3
+ module Application
4
+ def self.eject_theme(theme_name, ejected_theme_name)
5
+ theme_parts = theme_name.humanize.split.map { |str| str.capitalize }
6
+ constantized_theme = theme_parts.join
7
+ humanized_theme = theme_parts.join(" ")
8
+
9
+ theme_base_path = `bundle show --paths bullet_train-themes-#{theme_name}`.chomp
10
+ puts "Ejecting from #{humanized_theme} theme in `#{theme_base_path}`."
11
+
12
+ puts "Ejecting Tailwind configuration into `./tailwind.#{ejected_theme_name}.config.js`."
13
+ `cp #{theme_base_path}/tailwind.#{theme_name}.config.js #{Rails.root}/tailwind.#{ejected_theme_name}.config.js`
14
+
15
+ puts "Ejecting Tailwind mailer configuration into `./tailwind.mailer.#{ejected_theme_name}.config.js`."
16
+ `cp #{theme_base_path}/tailwind.mailer.#{theme_name}.config.js #{Rails.root}/tailwind.mailer.#{ejected_theme_name}.config.js`
17
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/#{theme_name}/#{ejected_theme_name}/g" #{Rails.root}/tailwind.mailer.#{ejected_theme_name}.config.js)
18
+
19
+ puts "Ejecting stylesheets into `./app/assets/stylesheets/#{ejected_theme_name}`."
20
+ `mkdir #{Rails.root}/app/assets/stylesheets`
21
+ `cp -R #{theme_base_path}/app/assets/stylesheets/#{theme_name} #{Rails.root}/app/assets/stylesheets/#{ejected_theme_name}`
22
+ `cp -R #{theme_base_path}/app/assets/stylesheets/#{theme_name}.tailwind.css #{Rails.root}/app/assets/stylesheets/#{ejected_theme_name}.tailwind.css`
23
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{ejected_theme_name}/g" #{Rails.root}/app/assets/stylesheets/#{ejected_theme_name}.tailwind.css)
24
+
25
+ puts "Ejecting JavaScript into `./app/javascript/application.#{ejected_theme_name}.js`."
26
+ `cp #{theme_base_path}/app/javascript/application.#{theme_name}.js #{Rails.root}/app/javascript/application.#{ejected_theme_name}.js`
27
+
28
+ puts "Ejecting all theme partials into `./app/views/themes/#{ejected_theme_name}`."
29
+ `mkdir #{Rails.root}/app/views/themes`
30
+ `cp -R #{theme_base_path}/app/views/themes/#{theme_name} #{Rails.root}/app/views/themes/#{ejected_theme_name}`
31
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/#{theme_name}/#{ejected_theme_name}/g" #{Rails.root}/app/views/themes/#{ejected_theme_name}/layouts/_head.html.erb)
32
+
33
+ puts "Cutting local `Procfile.dev` over from `#{theme_name}` to `#{ejected_theme_name}`."
34
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/#{theme_name}/#{ejected_theme_name}/g" #{Rails.root}/Procfile.dev)
35
+
36
+ puts "Cutting local `package.json` over from `#{theme_name}` to `#{ejected_theme_name}`."
37
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/#{theme_name}/#{ejected_theme_name}/g" #{Rails.root}/package.json)
38
+
39
+ # Stub out the class that represents this theme and establishes its inheritance structure.
40
+ target_path = "#{Rails.root}/app/lib/bullet_train/themes/#{ejected_theme_name}.rb"
41
+ puts "Stubbing out a class that represents this theme in `.#{target_path}`."
42
+ `mkdir -p #{Rails.root}/app/lib/bullet_train/themes`
43
+ `cp #{theme_base_path}/lib/bullet_train/themes/#{theme_name}.rb #{target_path}`
44
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/module #{constantized_theme}/module #{ejected_theme_name.titlecase}/g" #{target_path})
45
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/TailwindCss/#{constantized_theme}/g" #{target_path})
46
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/#{theme_name}/#{ejected_theme_name}/g" #{target_path})
47
+ ["require", "TODO", "mattr_accessor"].each do |thing_to_remove|
48
+ `grep -v #{thing_to_remove} #{target_path} > #{target_path}.tmp`
49
+ `mv #{target_path}.tmp #{target_path}`
50
+ end
51
+ `standardrb --fix #{target_path}`
52
+
53
+ puts "Cutting local project over from `#{theme_name}` to `#{ejected_theme_name}` in `app/helpers/application_helper.rb`."
54
+ %x(sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/:#{theme_name}/:#{ejected_theme_name}/g" #{Rails.root}/app/helpers/application_helper.rb)
55
+
56
+ puts "You must restart `bin/dev` at this point, because of the changes to `Procfile.dev` and `package.json`."
57
+ end
58
+
59
+ def self.release_theme(original_theme_name, args)
60
+ if original_theme_name != "light"
61
+ puts "You can only release new themes based off of Bullet Train's Light theme. Please eject a new theme from there, and publish your gem once you've finished making changes.".red
62
+ exit 1
63
+ end
64
+
65
+ puts "Preparing to release your custom theme: ".blue + args[:theme_name]
66
+ puts ""
67
+ puts "Before we make a new Ruby gem for your theme, you'll have to set up a GitHub repository first.".blue
68
+ puts "Hit <Return> and we'll open a browser to GitHub where you can create a new repository.".blue
69
+ puts "Make sure you name the repository ".blue + "bullet_train-themes-#{args[:theme_name]}"
70
+ puts ""
71
+ puts "When you're done, copy the SSH path from the new repository and return here.".blue
72
+ ask "We'll ask you to paste it to us in the next step."
73
+ `#{Gem::Platform.local.os == "linux" ? "xdg-open" : "open"} https://github.com/new`
74
+
75
+ ssh_path = ask "OK, what was the SSH path? (It should look like `git@github.com:your-account/your-new-repo.git`.)"
76
+ puts ""
77
+ puts "Great, you're all set.".blue
78
+ puts "We'll take it from here, so sit back and enjoy the ride 🚄️".blue
79
+ puts ""
80
+ puts "Creating a Ruby gem for ".blue + "#{args[:theme_name]}..."
81
+
82
+ Dir.mkdir("local") unless Dir.exist?("./local")
83
+ if Dir.exist?("./local/bullet_train-themes-#{args[:theme_name]}")
84
+ raise "You already have a repository named `bullet_train-themes-#{args[:theme_name]}` in `./local`.\n" \
85
+ "Make sure you delete it first to create an entirely new gem."
86
+ end
87
+ `git clone git@github.com:bullet-train-co/bullet_train-themes-light.git ./local/bullet_train-themes-#{args[:theme_name]}`
88
+
89
+ custom_file_replacer = BulletTrain::Themes::Light::CustomThemeFileReplacer.new(args[:theme_name])
90
+ custom_file_replacer.replace_theme("light", args[:theme_name])
91
+
92
+ work_tree_flag = "--work-tree=local/bullet_train-themes-#{args[:theme_name]}"
93
+ git_dir_flag = "--git-dir=local/bullet_train-themes-#{args[:theme_name]}/.git"
94
+ path = "./local/bullet_train-themes-#{args[:theme_name]}"
95
+
96
+ # Set up the proper remote.
97
+ `git #{work_tree_flag} #{git_dir_flag} remote set-url origin #{ssh_path}`
98
+ `git #{work_tree_flag} #{git_dir_flag} add .`
99
+ `git #{work_tree_flag} #{git_dir_flag} commit -m "Add initial files"`
100
+
101
+ # Build the gem.
102
+ `(cd #{path} && gem build bullet_train-themes-#{args[:theme_name]}.gemspec)`
103
+ `git #{work_tree_flag} #{git_dir_flag} add .`
104
+ `git #{work_tree_flag} #{git_dir_flag} commit -m "Build gem"`
105
+
106
+ # Commit the deleted files on the main application.
107
+ `git add .`
108
+ `git commit -m "Remove #{args[:theme_name]} files from application"`
109
+
110
+ # Push the gem's source code, but not the last commit in the main application.
111
+ `git #{work_tree_flag} #{git_dir_flag} push -u origin main`
112
+
113
+ puts ""
114
+ puts ""
115
+ puts "You're all set! Copy and paste the following commands to publish your gem:".blue
116
+ puts "cd ./local/bullet_train-themes-#{args[:theme_name]}"
117
+ puts "gem push bullet_train-themes-#{args[:theme_name]}-1.0.gem && cd ../../"
118
+ puts ""
119
+ puts "You may have to wait for some time until the gem can be downloaded via the Gemfile.".blue
120
+ puts "After a few minutes, run the following command in your main application:".blue
121
+ puts "bundle add bullet_train-themes-#{args[:theme_name]}"
122
+ puts "rake bullet_train:themes:#{args[:theme_name]}:install"
123
+ puts ""
124
+ puts "Then you'll be ready to use your custom gem in your Bullet Train application.".blue
125
+ end
126
+
127
+ def self.install_theme(theme_name)
128
+ # Grabs the current theme from
129
+ # def current_theme
130
+ # :theme_name
131
+ # end
132
+ current_theme_regexp = /(^ :)(.*)/
133
+ current_theme = nil
134
+
135
+ new_lines = []
136
+ [
137
+ "./app/helpers/application_helper.rb",
138
+ "./Procfile.dev",
139
+ "./package.json"
140
+ ].each do |file|
141
+ File.open(file, "r") do |f|
142
+ new_lines = f.readlines
143
+ new_lines = new_lines.map do |line|
144
+ # Make sure we get the current theme before trying to replace it in any of the files.
145
+ # We grab it from the first file in the array above.
146
+ current_theme = line.scan(current_theme_regexp).flatten.last if line.match?(current_theme_regexp)
147
+
148
+ line.gsub!(/#{current_theme}/, theme_name) unless current_theme.nil?
149
+ line
150
+ end
151
+ end
152
+
153
+ File.open(file, "w") do |f|
154
+ f.puts new_lines.join
155
+ end
156
+ end
157
+ end
158
+
159
+ def self.clean_theme(theme_name, args)
160
+ theme_base_path = `bundle show --paths bullet_train-themes-#{theme_name}`.chomp
161
+ `find app/views/themes/#{args[:theme]} | grep html.erb`.lines.map(&:chomp).each do |path|
162
+ _, file = path.split("app/views/themes/#{args[:theme]}/")
163
+ original_theme_path = "#{theme_base_path}/app/views/themes/#{theme_name}/#{file}"
164
+ if File.read(path) == File.read(original_theme_path)
165
+ puts "No changes in \`#{path}\` since being ejected. Removing."
166
+ `rm #{path}`
167
+ end
168
+ end
169
+ end
170
+
171
+ def self.ask(string)
172
+ puts string.blue
173
+ $stdin.gets.strip
174
+ end
175
+ end
176
+ end
177
+ end
@@ -1,160 +1,31 @@
1
+ require "tasks/application"
2
+
1
3
  namespace :bullet_train do
2
4
  namespace :themes do
3
5
  namespace :light do
4
6
  desc "Fork the \"Light\" theme into your local repository."
5
7
  task :eject, [:destination] => :environment do |task, args|
6
- theme_base_path = `bundle show --paths bullet_train-themes-light`.chomp
7
- puts "Ejecting from Light theme in `#{theme_base_path}`."
8
-
9
- puts "Ejecting Tailwind configuration into `./tailwind.#{args[:destination]}.config.js`."
10
- `cp #{theme_base_path}/tailwind.light.config.js #{Rails.root}/tailwind.#{args[:destination]}.config.js`
11
-
12
- puts "Ejecting Tailwind mailer configuration into `./tailwind.mailer.#{args[:destination]}.config.js`."
13
- `cp #{theme_base_path}/tailwind.mailer.light.config.js #{Rails.root}/tailwind.mailer.#{args[:destination]}.config.js`
14
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{args[:destination]}/g" #{Rails.root}/tailwind.mailer.#{args[:destination]}.config.js`
15
-
16
- puts "Ejecting stylesheets into `./app/assets/stylesheets/#{args[:destination]}`."
17
- `mkdir #{Rails.root}/app/assets/stylesheets`
18
- `cp -R #{theme_base_path}/app/assets/stylesheets/light #{Rails.root}/app/assets/stylesheets/#{args[:destination]}`
19
- `cp -R #{theme_base_path}/app/assets/stylesheets/light.tailwind.css #{Rails.root}/app/assets/stylesheets/#{args[:destination]}.tailwind.css`
20
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{args[:destination]}/g" #{Rails.root}/app/assets/stylesheets/#{args[:destination]}.tailwind.css`
21
-
22
- puts "Ejecting JavaScript into `./app/javascript/application.#{args[:destination]}.js`."
23
- `cp #{theme_base_path}/app/javascript/application.light.js #{Rails.root}/app/javascript/application.#{args[:destination]}.js`
24
-
25
- puts "Ejecting all theme partials into `./app/views/themes/#{args[:destination]}`."
26
- `mkdir #{Rails.root}/app/views/themes`
27
- `cp -R #{theme_base_path}/app/views/themes/light #{Rails.root}/app/views/themes/#{args[:destination]}`
28
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{args[:destination]}/g" #{Rails.root}/app/views/themes/#{args[:destination]}/layouts/_head.html.erb`
29
-
30
- puts "Cutting local `Procfile.dev` over from `light` to `#{args[:destination]}`."
31
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{args[:destination]}/g" #{Rails.root}/Procfile.dev`
32
-
33
- puts "Cutting local `package.json` over from `light` to `#{args[:destination]}`."
34
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{args[:destination]}/g" #{Rails.root}/package.json`
35
-
36
- # Stub out the class that represents this theme and establishes its inheritance structure.
37
- target_path = "#{Rails.root}/app/lib/bullet_train/themes/#{args[:destination]}.rb"
38
- puts "Stubbing out a class that represents this theme in `.#{target_path}`."
39
- `mkdir -p #{Rails.root}/app/lib/bullet_train/themes`
40
- `cp #{theme_base_path}/lib/bullet_train/themes/light.rb #{target_path}`
41
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/module Light/module #{args[:destination].titlecase}/g" #{target_path}`
42
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/TailwindCss/Light/g" #{target_path}`
43
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/light/#{args[:destination]}/g" #{target_path}`
44
- ["require", "TODO", "mattr_accessor"].each do |thing_to_remove|
45
- `grep -v #{thing_to_remove} #{target_path} > #{target_path}.tmp`
46
- `mv #{target_path}.tmp #{target_path}`
47
- end
48
- `standardrb --fix #{target_path}`
49
-
50
- puts "Cutting local project over from `light` to `#{args[:destination]}` in `app/helpers/application_helper.rb`."
51
- `sed -i #{'""' if `echo $OSTYPE`.include?("darwin")} "s/:light/:#{args[:destination]}/g" #{Rails.root}/app/helpers/application_helper.rb`
52
-
53
- puts "You must restart `bin/dev` at this point, because of the changes to `Procfile.dev` and `package.json`."
8
+ BulletTrain::Themes::Application.eject_theme(get_theme_name_from_task(task), args[:destination])
54
9
  end
55
10
 
56
11
  desc "Publish your custom theme theme as a Ruby gem."
57
12
  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
13
+ BulletTrain::Themes::Application.release_theme(get_theme_name_from_task(task), args)
117
14
  end
118
15
 
119
16
  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
17
+ task :install do |task|
18
+ BulletTrain::Themes::Application.install_theme(get_theme_name_from_task(task))
19
+ end
148
20
 
149
- File.open(file, "w") do |f|
150
- f.puts new_lines.join
151
- end
152
- end
21
+ desc "List view partials in theme that haven't changed since ejection from \"Light\"."
22
+ task :clean, [:theme] => :environment do |task, args|
23
+ BulletTrain::Themes::Application.clean_theme(get_theme_name_from_task(task), args)
153
24
  end
154
25
 
155
- def ask(string)
156
- puts string.blue
157
- $stdin.gets.strip
26
+ # Grabs the theme name from task, i.e. - bullet_train:theme:light:eject.
27
+ def get_theme_name_from_task(task)
28
+ task.name.split(":")[2]
158
29
  end
159
30
  end
160
31
  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.47
4
+ version: 1.0.48
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-30 00:00:00.000000000 Z
11
+ date: 2022-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -68,6 +68,7 @@ files:
68
68
  - app/assets/stylesheets/light/actiontext.css
69
69
  - app/assets/stylesheets/light/application.css
70
70
  - app/assets/stylesheets/light/bulk_actions.css
71
+ - app/assets/stylesheets/light/devise.css
71
72
  - app/assets/stylesheets/light/electron.css
72
73
  - app/assets/stylesheets/light/fields/cloudinary_image.css
73
74
  - app/assets/stylesheets/light/fields/date_field.css
@@ -128,6 +129,7 @@ files:
128
129
  - lib/bullet_train/themes/light/engine.rb
129
130
  - lib/bullet_train/themes/light/file_replacer.rb
130
131
  - lib/bullet_train/themes/light/version.rb
132
+ - lib/tasks/application.rb
131
133
  - lib/tasks/bullet_train/themes/light_tasks.rake
132
134
  - tailwind.light.config.js
133
135
  homepage: https://github.com/bullet-train-co/bullet_train-themes-light