bullet_train 1.2.21 → 1.2.23

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: aded6e1793584701eb001f64681e06d155528f81465185b23bc3f5265c3bcec7
4
- data.tar.gz: e496895bf0a74a0470b3aae6954dbeb19240467892fa4b9d655318faf17b93e1
3
+ metadata.gz: 8d9110b69050fc6e8801f6e37118a735e84978d0d67b28988b4fee47a68fc3b1
4
+ data.tar.gz: 4bfc8a9ccb219b0fccf82fdc153c02a6076443cc29ed4e064a63bad97f8a2b40
5
5
  SHA512:
6
- metadata.gz: 6770a9c6974333bc0c21e3aaa7d8ef07dbb7d7f89dd34f857304f36df0357ccffe56b977247c028531277ae12e2a87b793aa0ccae31691fed7a7a2ae293c8a01
7
- data.tar.gz: 382f88ff873e58f3ca8bb4b4d491b5fec91d99a2e317279d381fa61e165f2afaa0cd50db132ffc86be241b3fd802ded9dd9b1d6e29a9768c7c09ed0caf6a5942
6
+ metadata.gz: 9f43b9c8a0185d73c230fdad54405bb480219e04ca9917964d502f6db13ade9bf26d766ae4c7d0dc8926cfb66d5d745252775585fb1059fa35cac03d29e25033
7
+ data.tar.gz: a0b31fd936cd59281d3012972b682bc932bb3c70f9a6f80bdcdc0d6d1735550bf6a183b3a46699003b8bfde819894b463539c3b2799daf1d04f1a8b7e440a9c9
@@ -11,9 +11,10 @@ module Invitations::Base
11
11
 
12
12
  validates :email, presence: true
13
13
 
14
- before_create :generate_uuid
15
14
  after_create :set_added_by_membership
16
15
  after_create :send_invitation_email
16
+
17
+ attribute :uuid, default: -> { SecureRandom.hex }
17
18
  end
18
19
 
19
20
  def set_added_by_membership
@@ -24,10 +25,6 @@ module Invitations::Base
24
25
  UserMailer.invited(uuid).deliver_later
25
26
  end
26
27
 
27
- def generate_uuid
28
- self.uuid = SecureRandom.hex
29
- end
30
-
31
28
  def accept_for(user)
32
29
  User.transaction do
33
30
  user.memberships << membership
@@ -128,7 +128,7 @@ module Memberships::Base
128
128
 
129
129
  def last_initial
130
130
  return nil unless last_name.present?
131
- "#{last_name}."
131
+ "#{last_name[0]}."
132
132
  end
133
133
 
134
134
  def first_name_last_initial
@@ -44,11 +44,7 @@
44
44
  </div>
45
45
 
46
46
  <% if devise_mapping.rememberable? %>
47
- <% # TODO This needs to be its own component. Can't have this kind of styling here. %>
48
- <div class="flex items-center">
49
- <%= form.check_box :remember_me, class: "h-4 w-4 text-blue focus:ring-blue-800 border-slate-300 rounded dark:bg-slate-800 dark:border-slate-900" %>
50
- <%= form.label :remember_me, class: "ml-2 block" %>
51
- </div>
47
+ <%= render 'shared/fields/option', method: :remember_me, form: form, single_check_box: true %>
52
48
  <% end %>
53
49
  <% end %>
54
50
  <% end %>
@@ -15,6 +15,7 @@ The helper methods below can also be directly invoked in your application if you
15
15
  | FONTAWESOME_NPM_AUTH_TOKEN | String | `"your_font_awesome_token"` | `font_awesome?` |
16
16
  | SILENCE_LOGS | Boolean | `"true"` | `silence_logs?` |
17
17
  | TESTING_PROVISION_KEY | String | `"asdf123"` | N/A |
18
+ | OPENAI_ACCESS_TOKEN | String |`your_openai_token`| `openai_enabled?` |
18
19
 
19
20
  | Option | Description |
20
21
  | --- | --- |
@@ -27,3 +28,4 @@ The helper methods below can also be directly invoked in your application if you
27
28
  | FONTAWESOME_NPM_AUTH_TOKEN | Enables use of Font Awesome. |
28
29
  | SILENCE_LOGS | Silences Super Scaffolding logs. |
29
30
  | TESTING_PROVISION_KEY | Creates a test `Platform::Application` by accessing `/testing/provision?key=your_provision_key` |
31
+ | OPENAI_ACCESS_TOKEN | Enables use [OpenAI](https://openai.com/) with the [ruby-openai](https://github.com/alexrudall/ruby-openai) gem. |
@@ -114,7 +114,7 @@ Certain form field partials like `buttons` and `super_select` can also have thei
114
114
  | `boolean` | `boolean` | | `assign_boolean` | | |
115
115
  | [`buttons`](/docs/field-partials/buttons.md) | `string` | Optionally | `assign_checkboxes` | | |
116
116
  | `cloudinary_image` | `string` | | | | |
117
- | `color_picker` | | | | [pickr](https://simonwep.github.io/pickr/) | |
117
+ | `color_picker` | `string` | | | [pickr](https://simonwep.github.io/pickr/) | |
118
118
  | `date_and_time_field` | `datetime` | | `assign_date_and_time` | [Date Range Picker](https://www.daterangepicker.com) | |
119
119
  | `date_field` | `date` | | `assign_date` | [Date Range Picker](https://www.daterangepicker.com) | |
120
120
  | `email_field` | `string` | | | | |
@@ -12,7 +12,7 @@ The `--sortable` option:
12
12
 
13
13
  1. Wraps the table's body in a `sortable` Stimulus controller, providing drag-and-drop re-ordering;
14
14
  2. Adds a `reorder` action to your resource via `include SortableActions`, triggered automatically on re-order;
15
- 3. Adds a migration to add the `sort_order` column to your model to store the ordering;
15
+ 3. Adds a `sort_order` attribute to your model to store the ordering;
16
16
  4. Adds a `default_scope` which orders by `sort_order` and auto increments `sort_order` on create via `include Sortable` on the model.
17
17
 
18
18
  ## Disabling Saving on Re-order
@@ -134,4 +134,4 @@ And on the `sortable` element, catch the `sortable:drop`, `sortable:drag` (for c
134
134
  data-confirm-reorder-target="sortable"
135
135
  ...
136
136
  >
137
- ```
137
+ ```
@@ -72,7 +72,10 @@ module BulletTrain
72
72
  if open
73
73
  path = source_file[:package_name] ? source_file[:absolute_path] : (source_file[:project_path]).to_s
74
74
  puts "Opening `#{path}`.\n".green
75
- exec "open #{path}"
75
+
76
+ # TODO: Use TerminalCommands to open this file
77
+ open_command = `which open`.present? ? "open" : "xdg-open"
78
+ exec "#{open_command} #{path}"
76
79
  end
77
80
  else
78
81
  puts "Couldn't resolve `#{@needle}`.".red
@@ -101,7 +104,8 @@ module BulletTrain
101
104
 
102
105
  if result[:absolute_path]
103
106
  if result[:absolute_path].include?("/bullet_train")
104
- base_path = "bullet_train" + result[:absolute_path].partition("/bullet_train").last
107
+ regex = /#{"bullet_train-core" if result[:absolute_path].include?("bullet_train-core")}\/bullet_train[.\-_a-z|0-9]*.*/
108
+ base_path = result[:absolute_path].scan(regex).pop
105
109
 
106
110
  # Try to calculate which package the file is from, and what it's path is within that project.
107
111
  ["app", "config", "lib"].each do |directory|
@@ -146,14 +150,13 @@ module BulletTrain
146
150
  # all we need to do is change it to "shared/attributes/code"
147
151
  partial_parts.last.gsub!(/(_)|(\.html\.erb)/, "")
148
152
  @needle = partial_parts.join("/")
149
- elsif @needle.match?(/bullet_train-/)
153
+ elsif @needle.match?(/bullet_train/)
150
154
  # If it's a full path, we need to make sure we're getting it from the right package.
151
- _, partial_view_package, partial_path_without_package = @needle.partition(/bullet_train-[a-z|\-_0-9.]*/)
155
+ _, partial_view_package, partial_path_without_package = @needle.partition(/bullet_train-core\/bullet_train[a-z|\-_0-9.]*/)
152
156
 
153
- # Pop off the version so we can call `bundle show` correctly.
154
- # Also change `bullet_train-base` to `bullet_train`.
157
+ # Pop off `bullet_train-core` and the gem's version so we can call `bundle show` correctly.
158
+ partial_view_package.gsub!(/bullet_train-core\//, "")
155
159
  partial_view_package.gsub!(/[-|.0-9]*$/, "") if partial_view_package.match?(/[-|.0-9]*$/)
156
- partial_view_package.gsub!("-base", "") if /base/.match?(@needle)
157
160
 
158
161
  local_package_path = `bundle show #{partial_view_package}`.chomp
159
162
  return local_package_path + partial_path_without_package
@@ -1,3 +1,3 @@
1
1
  module BulletTrain
2
- VERSION = "1.2.21"
2
+ VERSION = "1.2.23"
3
3
  end
data/lib/bullet_train.rb CHANGED
@@ -33,6 +33,7 @@ require "commonmarker"
33
33
  require "extended_email_reply_parser"
34
34
  require "pagy"
35
35
  require "devise/pwned_password"
36
+ require "openai"
36
37
 
37
38
  module BulletTrain
38
39
  mattr_accessor :routing_concerns, default: []
@@ -152,3 +153,11 @@ end
152
153
  def silence_logs?
153
154
  ENV["SILENCE_LOGS"].present?
154
155
  end
156
+
157
+ def openai_enabled?
158
+ ENV["OPENAI_ACCESS_TOKEN"].present?
159
+ end
160
+
161
+ def openai_organization_exists?
162
+ ENV["OPENAI_ORGANIZATION_ID"]
163
+ end
@@ -112,15 +112,23 @@ namespace :bullet_train do
112
112
  puts ""
113
113
  puts "bin/hack: " + "Clone bullet_train-core and link up gems (will only link up gems if already cloned).".blue
114
114
  puts "bin/hack --link: " + "Link all of your Bullet Train gems to `local/bullet_train-core`.".blue
115
+ puts "bin/hack --link github: " + "Link all of your Bullet Train gems to the public repositories on GitHub".blue
115
116
  puts "bin/hack --link (version-number): " + "Link all of your Bullet Train gems to the version number passed.".blue
116
117
  puts "bin/hack --reset: " + "Resets all of your gems to their original definition.".blue
117
118
  puts "bin/hack --watch-js: " + "Watches for any changes in JavaScript files gems that have an npm package.".blue
118
119
  puts "bin/hack --clean-js: " + "Resets all of your npm packages from `local/bullet_train-core` to their original definition.".blue
119
120
  exit
120
121
  when "--link", "--reset"
121
- version = process[:values].pop
122
- set_core_gems(process[:flag], version, framework_packages)
123
- stream "bundle install"
122
+ link_flag_value = process[:values].pop
123
+ set_core_gems(process[:flag], link_flag_value, framework_packages)
124
+
125
+ # Bundler will throw an error if we try to `bundle install` right after adding the GitHub link to the Gemfile.
126
+ if link_flag_value == "github"
127
+ puts ""
128
+ puts "Now you can run `bundle install` to check out the public repositories on GitHub."
129
+ else
130
+ stream "bundle install"
131
+ end
124
132
  when "--watch-js", "--clean-js"
125
133
  package_name = process[:values].pop
126
134
  framework_package = framework_packages.select { |k, v| k.to_s == package_name }
@@ -218,9 +226,10 @@ namespace :bullet_train do
218
226
  end
219
227
 
220
228
  # Pass "--link" or "--reset" as a flag to set the gems.
221
- def set_core_gems(flag, version, framework_packages)
229
+ def set_core_gems(flag, link_flag_value, framework_packages)
222
230
  packages = framework_packages.keys
223
231
  gemfile_lines = File.readlines("./Gemfile")
232
+ version_regexp = /[\d|.]/
224
233
 
225
234
  packages.each do |package|
226
235
  original_path = "gem \"#{package}\""
@@ -241,7 +250,14 @@ namespace :bullet_train do
241
250
  puts "We can't do anything with this. Sorry! We'll proceed, but you have to link this package yourself.".red
242
251
  elsif `cat Gemfile | grep "gem \\\"#{package}\\\""`.chomp.present?
243
252
  puts "#{package} is directly present in the `Gemfile`, so we'll update that line.".green
244
- line = version.present? ? "#{line.chomp}, \"#{version}\"\n" : line.gsub(original_path, local_path)
253
+
254
+ line = if link_flag_value == "github"
255
+ "#{line.chomp}, git: 'http://github.com/bullet-train-co/bullet_train-core.git'\n"
256
+ elsif link_flag_value&.match?(version_regexp)
257
+ "#{line.chomp}, \"#{link_flag_value}\"\n"
258
+ else
259
+ line.gsub(original_path, local_path)
260
+ end
245
261
  end
246
262
  elsif flag == "--reset"
247
263
  if line.match?(/bullet_train/)
@@ -258,8 +274,10 @@ namespace :bullet_train do
258
274
  if flag == "--link"
259
275
  unless match_found
260
276
  puts "Could not find #{package}. Adding to the end of the Gemfile.".blue
261
- new_lines << if version
262
- "#{original_path.chomp}, \"#{version}\"\n"
277
+ new_lines << if link_flag_value == "github"
278
+ "#{original_path.chomp}, git: 'http://github.com/bullet-train-co/bullet_train-core.git'\n"
279
+ elsif link_flag_value&.match?(version_regexp)
280
+ "#{original_path.chomp}, \"#{link_flag_value}\"\n"
263
281
  else
264
282
  "#{local_path}\n"
265
283
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.21
4
+ version: 1.2.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-11 00:00:00.000000000 Z
11
+ date: 2023-04-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -388,6 +388,20 @@ dependencies:
388
388
  - - ">="
389
389
  - !ruby/object:Gem::Version
390
390
  version: '0'
391
+ - !ruby/object:Gem::Dependency
392
+ name: ruby-openai
393
+ requirement: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - ">="
396
+ - !ruby/object:Gem::Version
397
+ version: '0'
398
+ type: :runtime
399
+ prerelease: false
400
+ version_requirements: !ruby/object:Gem::Requirement
401
+ requirements:
402
+ - - ">="
403
+ - !ruby/object:Gem::Version
404
+ version: '0'
391
405
  - !ruby/object:Gem::Dependency
392
406
  name: unicode-emoji
393
407
  requirement: !ruby/object:Gem::Requirement
@@ -722,7 +736,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
722
736
  - !ruby/object:Gem::Version
723
737
  version: '0'
724
738
  requirements: []
725
- rubygems_version: 3.4.1
739
+ rubygems_version: 3.3.7
726
740
  signing_key:
727
741
  specification_version: 4
728
742
  summary: Bullet Train