jets-cli 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +2 -0
  5. data/.travis.yml +6 -0
  6. data/Gemfile +11 -0
  7. data/Gemfile.lock +263 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +28 -0
  10. data/Rakefile +8 -0
  11. data/bin/console +14 -0
  12. data/bin/jets +14 -0
  13. data/bin/setup +8 -0
  14. data/jets-cli.gemspec +42 -0
  15. data/lib/generators/jets/engine/engine_generator.rb +24 -0
  16. data/lib/generators/jets/engine/templates/%name%.gemspec.tt +31 -0
  17. data/lib/generators/jets/engine/templates/.bundle/config +2 -0
  18. data/lib/generators/jets/engine/templates/.gitignore.tt +16 -0
  19. data/lib/generators/jets/engine/templates/.pryrc.tt +33 -0
  20. data/lib/generators/jets/engine/templates/.rspec +3 -0
  21. data/lib/generators/jets/engine/templates/.rubocop.yml.tt +3 -0
  22. data/lib/generators/jets/engine/templates/Gemfile +19 -0
  23. data/lib/generators/jets/engine/templates/Gemfile.runtime +0 -0
  24. data/lib/generators/jets/engine/templates/README.md.tt +3 -0
  25. data/lib/generators/jets/engine/templates/Rakefile.tt +9 -0
  26. data/lib/generators/jets/engine/templates/bin/console.tt +9 -0
  27. data/lib/generators/jets/engine/templates/bin/rails.tt +11 -0
  28. data/lib/generators/jets/engine/templates/config/.keep +0 -0
  29. data/lib/generators/jets/engine/templates/db/migrate/.keep +0 -0
  30. data/lib/generators/jets/engine/templates/lib/%name%.rb.tt +22 -0
  31. data/lib/generators/jets/engine/templates/lib/%name%/engine.rb.tt +31 -0
  32. data/lib/generators/jets/engine/templates/lib/%name%/version.rb.tt +5 -0
  33. data/lib/generators/jets/engine/templates/spec/factories/.keep +0 -0
  34. data/lib/generators/jets/engine/templates/spec/internal/config/database.yml.tt +6 -0
  35. data/lib/generators/jets/engine/templates/spec/internal/config/storage.yml.tt +3 -0
  36. data/lib/generators/jets/engine/templates/spec/internal/db/schema.rb +4 -0
  37. data/lib/generators/jets/engine/templates/spec/rails_helper.rb.tt +57 -0
  38. data/lib/generators/jets/engine/templates/spec/spec_helper.rb +6 -0
  39. data/lib/jets/cli.rb +13 -0
  40. data/lib/jets/cli/exceptions.rb +9 -0
  41. data/lib/jets/cli/main.rb +96 -0
  42. data/lib/jets/cli/version.rb +7 -0
  43. metadata +198 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 90f8227940a09c2f094ac5a77a0dbc7164c11e4f0cc8aae5f4520f9497c0b973
4
+ data.tar.gz: 2e339a34aad9a16e69210a9bd50b99dae3d8c1265d53b8a2599a684e87dd5a10
5
+ SHA512:
6
+ metadata.gz: e72ec74be5a9125bbe72ae299174f353c4a814b22cd9615bc6654be27a4ea2af4c79af70610b6ec0d92ff34f435d7807c6f551a11b64a4abdabc3d8536f73141
7
+ data.tar.gz: 92cd8285d620049006165ed850c8fba099ce069f59446a17b968b83bdac1332660777987b5376ee3f7ddf0e988cfffd57fe65576f4fc23a59509ae6e328a8e7e
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+ /engines
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format Fuubar
3
+ --require spec_helper
@@ -0,0 +1,2 @@
1
+ inherit_gem:
2
+ jets-rubocop: config/base.yml
@@ -0,0 +1,6 @@
1
+ ---
2
+ language: ruby
3
+ cache: bundler
4
+ rvm:
5
+ - 2.7.0
6
+ before_install: gem install bundler -v 2.1.4
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ # Specify your gem's dependencies in jets-cli.gemspec
6
+ gemspec
7
+
8
+ gem "rake", "~> 12.0"
9
+ gem "rspec", "~> 3.0"
10
+
11
+ gem "jets-rubocop", path: "../jets-rubocop"
@@ -0,0 +1,263 @@
1
+ PATH
2
+ remote: ../jets-rubocop
3
+ specs:
4
+ jets-rubocop (0.1.0)
5
+ fuubar (~> 2.5)
6
+ pry (~> 0.13)
7
+ rspec-instafail (~> 1.0)
8
+ rspec_junit_formatter (~> 0.4)
9
+ rubocop-rails (~> 2.6)
10
+ rubocop-rspec (~> 1.41)
11
+ standard (~> 0.3.0)
12
+
13
+ PATH
14
+ remote: .
15
+ specs:
16
+ jets-cli (0.1.0)
17
+ rails (~> 6.0)
18
+ thor
19
+
20
+ GEM
21
+ remote: https://rubygems.org/
22
+ specs:
23
+ actioncable (6.0.3.4)
24
+ actionpack (= 6.0.3.4)
25
+ nio4r (~> 2.0)
26
+ websocket-driver (>= 0.6.1)
27
+ actionmailbox (6.0.3.4)
28
+ actionpack (= 6.0.3.4)
29
+ activejob (= 6.0.3.4)
30
+ activerecord (= 6.0.3.4)
31
+ activestorage (= 6.0.3.4)
32
+ activesupport (= 6.0.3.4)
33
+ mail (>= 2.7.1)
34
+ actionmailer (6.0.3.4)
35
+ actionpack (= 6.0.3.4)
36
+ actionview (= 6.0.3.4)
37
+ activejob (= 6.0.3.4)
38
+ mail (~> 2.5, >= 2.5.4)
39
+ rails-dom-testing (~> 2.0)
40
+ actionpack (6.0.3.4)
41
+ actionview (= 6.0.3.4)
42
+ activesupport (= 6.0.3.4)
43
+ rack (~> 2.0, >= 2.0.8)
44
+ rack-test (>= 0.6.3)
45
+ rails-dom-testing (~> 2.0)
46
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
47
+ actiontext (6.0.3.4)
48
+ actionpack (= 6.0.3.4)
49
+ activerecord (= 6.0.3.4)
50
+ activestorage (= 6.0.3.4)
51
+ activesupport (= 6.0.3.4)
52
+ nokogiri (>= 1.8.5)
53
+ actionview (6.0.3.4)
54
+ activesupport (= 6.0.3.4)
55
+ builder (~> 3.1)
56
+ erubi (~> 1.4)
57
+ rails-dom-testing (~> 2.0)
58
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
59
+ activejob (6.0.3.4)
60
+ activesupport (= 6.0.3.4)
61
+ globalid (>= 0.3.6)
62
+ activemodel (6.0.3.4)
63
+ activesupport (= 6.0.3.4)
64
+ activerecord (6.0.3.4)
65
+ activemodel (= 6.0.3.4)
66
+ activesupport (= 6.0.3.4)
67
+ activestorage (6.0.3.4)
68
+ actionpack (= 6.0.3.4)
69
+ activejob (= 6.0.3.4)
70
+ activerecord (= 6.0.3.4)
71
+ marcel (~> 0.3.1)
72
+ activesupport (6.0.3.4)
73
+ concurrent-ruby (~> 1.0, >= 1.0.2)
74
+ i18n (>= 0.7, < 2)
75
+ minitest (~> 5.1)
76
+ tzinfo (~> 1.1)
77
+ zeitwerk (~> 2.2, >= 2.2.2)
78
+ aruba (1.0.3)
79
+ childprocess (>= 2.0, < 5.0)
80
+ contracts (~> 0.16.0)
81
+ cucumber (>= 2.4, < 6.0)
82
+ ffi (~> 1.9)
83
+ rspec-expectations (~> 3.4)
84
+ thor (~> 1.0)
85
+ ast (2.4.1)
86
+ builder (3.2.4)
87
+ childprocess (4.0.0)
88
+ coderay (1.1.3)
89
+ concurrent-ruby (1.1.7)
90
+ contracts (0.16.0)
91
+ crass (1.0.6)
92
+ cucumber (5.2.0)
93
+ builder (~> 3.2, >= 3.2.4)
94
+ cucumber-core (~> 8.0, >= 8.0.1)
95
+ cucumber-create-meta (~> 2.0, >= 2.0.2)
96
+ cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
97
+ cucumber-gherkin (~> 15.0, >= 15.0.2)
98
+ cucumber-html-formatter (~> 9.0, >= 9.0.0)
99
+ cucumber-messages (~> 13.1, >= 13.1.0)
100
+ cucumber-wire (~> 4.0, >= 4.0.1)
101
+ diff-lcs (~> 1.4, >= 1.4.4)
102
+ multi_test (~> 0.1, >= 0.1.2)
103
+ sys-uname (~> 1.2, >= 1.2.1)
104
+ cucumber-core (8.0.1)
105
+ cucumber-gherkin (~> 15.0, >= 15.0.2)
106
+ cucumber-messages (~> 13.0, >= 13.0.1)
107
+ cucumber-tag-expressions (~> 2.0, >= 2.0.4)
108
+ cucumber-create-meta (2.0.4)
109
+ cucumber-messages (~> 13.1, >= 13.1.0)
110
+ sys-uname (~> 1.2, >= 1.2.1)
111
+ cucumber-cucumber-expressions (10.3.0)
112
+ cucumber-gherkin (15.0.2)
113
+ cucumber-messages (~> 13.0, >= 13.0.1)
114
+ cucumber-html-formatter (9.0.0)
115
+ cucumber-messages (~> 13.0, >= 13.0.1)
116
+ cucumber-messages (13.2.1)
117
+ protobuf-cucumber (~> 3.10, >= 3.10.8)
118
+ cucumber-tag-expressions (2.0.4)
119
+ cucumber-wire (4.0.1)
120
+ cucumber-core (~> 8.0, >= 8.0.1)
121
+ cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
122
+ cucumber-messages (~> 13.0, >= 13.0.1)
123
+ diff-lcs (1.4.4)
124
+ erubi (1.10.0)
125
+ ffi (1.13.1)
126
+ fuubar (2.5.0)
127
+ rspec-core (~> 3.0)
128
+ ruby-progressbar (~> 1.4)
129
+ globalid (0.4.2)
130
+ activesupport (>= 4.2.0)
131
+ i18n (1.8.5)
132
+ concurrent-ruby (~> 1.0)
133
+ jaro_winkler (1.5.4)
134
+ loofah (2.8.0)
135
+ crass (~> 1.0.2)
136
+ nokogiri (>= 1.5.9)
137
+ mail (2.7.1)
138
+ mini_mime (>= 0.1.1)
139
+ marcel (0.3.3)
140
+ mimemagic (~> 0.3.2)
141
+ method_source (1.0.0)
142
+ middleware (0.1.0)
143
+ mimemagic (0.3.5)
144
+ mini_mime (1.0.2)
145
+ mini_portile2 (2.4.0)
146
+ minitest (5.14.2)
147
+ multi_test (0.1.2)
148
+ nio4r (2.5.4)
149
+ nokogiri (1.10.10)
150
+ mini_portile2 (~> 2.4.0)
151
+ parallel (1.20.1)
152
+ parser (2.7.2.0)
153
+ ast (~> 2.4.1)
154
+ protobuf-cucumber (3.10.8)
155
+ activesupport (>= 3.2)
156
+ middleware
157
+ thor
158
+ thread_safe
159
+ pry (0.13.1)
160
+ coderay (~> 1.1)
161
+ method_source (~> 1.0)
162
+ rack (2.2.3)
163
+ rack-test (1.1.0)
164
+ rack (>= 1.0, < 3)
165
+ rails (6.0.3.4)
166
+ actioncable (= 6.0.3.4)
167
+ actionmailbox (= 6.0.3.4)
168
+ actionmailer (= 6.0.3.4)
169
+ actionpack (= 6.0.3.4)
170
+ actiontext (= 6.0.3.4)
171
+ actionview (= 6.0.3.4)
172
+ activejob (= 6.0.3.4)
173
+ activemodel (= 6.0.3.4)
174
+ activerecord (= 6.0.3.4)
175
+ activestorage (= 6.0.3.4)
176
+ activesupport (= 6.0.3.4)
177
+ bundler (>= 1.3.0)
178
+ railties (= 6.0.3.4)
179
+ sprockets-rails (>= 2.0.0)
180
+ rails-dom-testing (2.0.3)
181
+ activesupport (>= 4.2.0)
182
+ nokogiri (>= 1.6)
183
+ rails-html-sanitizer (1.3.0)
184
+ loofah (~> 2.3)
185
+ railties (6.0.3.4)
186
+ actionpack (= 6.0.3.4)
187
+ activesupport (= 6.0.3.4)
188
+ method_source
189
+ rake (>= 0.8.7)
190
+ thor (>= 0.20.3, < 2.0)
191
+ rainbow (3.0.0)
192
+ rake (12.3.3)
193
+ rexml (3.2.4)
194
+ rspec (3.10.0)
195
+ rspec-core (~> 3.10.0)
196
+ rspec-expectations (~> 3.10.0)
197
+ rspec-mocks (~> 3.10.0)
198
+ rspec-core (3.10.0)
199
+ rspec-support (~> 3.10.0)
200
+ rspec-expectations (3.10.0)
201
+ diff-lcs (>= 1.2.0, < 2.0)
202
+ rspec-support (~> 3.10.0)
203
+ rspec-instafail (1.0.0)
204
+ rspec
205
+ rspec-mocks (3.10.0)
206
+ diff-lcs (>= 1.2.0, < 2.0)
207
+ rspec-support (~> 3.10.0)
208
+ rspec-support (3.10.0)
209
+ rspec_junit_formatter (0.4.1)
210
+ rspec-core (>= 2, < 4, != 2.12.0)
211
+ rubocop (0.82.0)
212
+ jaro_winkler (~> 1.5.1)
213
+ parallel (~> 1.10)
214
+ parser (>= 2.7.0.1)
215
+ rainbow (>= 2.2.2, < 4.0)
216
+ rexml
217
+ ruby-progressbar (~> 1.7)
218
+ unicode-display_width (>= 1.4.0, < 2.0)
219
+ rubocop-performance (1.5.2)
220
+ rubocop (>= 0.71.0)
221
+ rubocop-rails (2.6.0)
222
+ activesupport (>= 4.2.0)
223
+ rack (>= 1.1)
224
+ rubocop (>= 0.82.0)
225
+ rubocop-rspec (1.41.0)
226
+ rubocop (>= 0.68.1)
227
+ ruby-progressbar (1.10.1)
228
+ sprockets (4.0.2)
229
+ concurrent-ruby (~> 1.0)
230
+ rack (> 1, < 3)
231
+ sprockets-rails (3.2.2)
232
+ actionpack (>= 4.0)
233
+ activesupport (>= 4.0)
234
+ sprockets (>= 3.0.0)
235
+ standard (0.3.0)
236
+ rubocop (~> 0.82.0)
237
+ rubocop-performance (~> 1.5.2)
238
+ sys-uname (1.2.2)
239
+ ffi (~> 1.1)
240
+ thor (1.0.1)
241
+ thread_safe (0.3.6)
242
+ tzinfo (1.2.8)
243
+ thread_safe (~> 0.1)
244
+ unicode-display_width (1.7.0)
245
+ websocket-driver (0.7.3)
246
+ websocket-extensions (>= 0.1.0)
247
+ websocket-extensions (0.1.5)
248
+ zeitwerk (2.4.2)
249
+
250
+ PLATFORMS
251
+ ruby
252
+
253
+ DEPENDENCIES
254
+ aruba
255
+ bundler
256
+ jets-cli!
257
+ jets-rubocop!
258
+ pry
259
+ rake (~> 12.0)
260
+ rspec (~> 3.0)
261
+
262
+ BUNDLED WITH
263
+ 2.1.4
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 Lauri Jutila
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,28 @@
1
+ # Jets CLI
2
+
3
+ Jets CLI – a command line interface for Jets.
4
+
5
+ ## Installation
6
+
7
+ Install the gem as:
8
+
9
+ $ gem install jets-cli
10
+
11
+ ## Usage
12
+
13
+ Here be the instructions.
14
+
15
+ ## Development
16
+
17
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
18
+
19
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
20
+
21
+ ## Contributing
22
+
23
+ Bug reports and pull requests are welcome on GitHub at https://github.com/getjets/jets-cli.
24
+
25
+
26
+ ## License
27
+
28
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "jets/cli"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "jets/cli"
5
+
6
+ begin
7
+ Jets::CLI::Main.start(ARGV)
8
+ rescue Jets::CLI::Exceptions::CommandFailed => exception
9
+ if ENV["DEBUG"]
10
+ puts "Command failed with: #{exception.message}"
11
+ puts exception.backtrace.take(15).join("\n")
12
+ end
13
+ exit(1)
14
+ end
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "lib/jets/cli/version"
4
+
5
+ rails_version = "~> 6.0"
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "jets-cli"
9
+ spec.version = Jets::CLI::VERSION
10
+ spec.authors = ["Lauri Jutila"]
11
+
12
+ spec.summary = "Jets CLI"
13
+ spec.description = "Jets CLI for using Jets with your Rails application"
14
+ spec.homepage = "https://github.com/getjets/jets-cli"
15
+ spec.license = "MIT"
16
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
17
+
18
+ spec.metadata["homepage_uri"] = spec.homepage
19
+ spec.metadata["source_code_uri"] = "https://github.com/getjets/jets-cli"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path("..", __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+
27
+ spec.bindir = "bin"
28
+ # spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
29
+ spec.executables << "jets"
30
+ spec.require_paths = ["lib"]
31
+
32
+ spec.add_dependency "rails", rails_version
33
+ spec.add_dependency "thor", "~> 1.0"
34
+
35
+ spec.add_development_dependency "aruba", "~> 1.0"
36
+ spec.add_development_dependency "bundler", "~> 2"
37
+ spec.add_development_dependency "pry", "~> 0.13"
38
+ spec.add_development_dependency "rake", "~> 12.3"
39
+ spec.add_development_dependency "rspec", "~> 3.9"
40
+
41
+ spec.add_development_dependency "jets-rubocop", "~> 0.1"
42
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/generators"
4
+
5
+ module Jets
6
+ module Generators
7
+ class EngineGenerator < ::Rails::Generators::NamedBase
8
+ include ::Rails::Generators::ResourceHelpers
9
+
10
+ namespace "jets"
11
+ source_root File.expand_path("templates", __dir__)
12
+
13
+ desc "Generates a Rails engine with given NAME with Jets conventions " \
14
+ "and configurations."
15
+
16
+ def create_engine_file
17
+ directory(".", "engines/#{name}")
18
+
19
+ chmod "engines/#{name}/bin/console", 0o755, verbose: false
20
+ chmod "engines/#{name}/bin/rails", 0o755, verbose: false
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
+
5
+ require "<%= name %>/version"
6
+
7
+ # Use Rails version from the project's root
8
+ rails_version = File.read(File.join(__dir__, "../../.rails-version"))
9
+
10
+ Gem::Specification.new do |s|
11
+ s.name = "<%= name %>"
12
+ s.version = <%= class_name %>::VERSION
13
+ s.authors = ["TODO"]
14
+ s.summary = "TODO:"
15
+ s.description = "TODO:"
16
+
17
+ s.files = Dir["{app,config,db,lib}/**/*"]
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency "rails", rails_version
21
+ s.add_dependency "pg", "~> 1.0"
22
+
23
+ s.add_development_dependency "brakeman", "~> 4.7"
24
+ s.add_development_dependency "bundler", ">= 2.0"
25
+ s.add_development_dependency "pry-byebug", ">= 3.4"
26
+ s.add_development_dependency "rake", "~> 13.0"
27
+
28
+ # Internal
29
+ s.add_development_dependency "jets-rubocop"
30
+ s.add_development_dependency "jets-testing"
31
+ end
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_GEMFILE: "../../Gemfile"
@@ -0,0 +1,16 @@
1
+ log/*.log
2
+ pkg/
3
+ spec/internal/log/*.log
4
+ spec/internal/tmp/
5
+ spec/examples.txt
6
+ tmp/
7
+ /node_modules
8
+ /public/packs*
9
+ yarn-debug.log*
10
+ .yarn-integrity
11
+ package-lock.json
12
+ yarn-error.log
13
+ .offspring
14
+ .rspec-local
15
+ /.pry_history
16
+ /test-results
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ def formatted_env
4
+ if defined?(Rails)
5
+ case Rails.env
6
+ when "production"
7
+ bold_upcased_env = Pry::Helpers::Text.bold(Rails.env.upcase)
8
+ Pry::Helpers::Text.red(bold_upcased_env)
9
+ when "staging"
10
+ Pry::Helpers::Text.yellow(Rails.env)
11
+ when "development"
12
+ Pry::Helpers::Text.green(Rails.env)
13
+ else
14
+ Rails.env
15
+ end
16
+ else
17
+ Pry::Helpers::Text.green("<%= name %>")
18
+ end
19
+ end
20
+
21
+ def app_name
22
+ if defined?(Rails)
23
+ File.basename(Rails.root)
24
+ else
25
+ "<%= name %>"
26
+ end
27
+ end
28
+
29
+ Pry.config.prompt = Pry::Prompt.new(
30
+ "jets-rubocop",
31
+ "Jets Rubocop prompt",
32
+ [proc { |obj, nest_level, _| "[#{app_name}][#{formatted_env}] #{obj}:#{nest_level}> " }]
33
+ )
@@ -0,0 +1,3 @@
1
+ --color
2
+ --format Fuubar
3
+ --require spec_helper
@@ -0,0 +1,3 @@
1
+ inherit_gem:
2
+ jets-rubocop:
3
+ - config/base.yml
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ git_source(:github) do |repo_name|
6
+ repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
7
+ "https://github.com/#{repo_name}.git"
8
+ end
9
+
10
+ gemspec
11
+
12
+ eval_gemfile "./Gemfile.runtime"
13
+
14
+ gem "jets-testing"
15
+ gem "jets-rubocop"
16
+
17
+ # Speed up application code loading
18
+ # https://github.com/Shopify/bootsnap
19
+ gem "bootsnap", ">= 1.4.3", require: false
@@ -0,0 +1,3 @@
1
+ # <%= class_name %> Engine
2
+
3
+ TODO: Write the purpose and description of this engine.
@@ -0,0 +1,9 @@
1
+ require "bundler/setup"
2
+ require "<%= name %>"
3
+ require_relative "spec/rails_helper"
4
+
5
+ begin
6
+ require "rspec/core/rake_task"
7
+ RSpec::Core::RakeTask.new(:spec)
8
+ rescue LoadError
9
+ end
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+ require "pry"
6
+ require "<%= name %>"
7
+ require_relative "../spec/rails_helper"
8
+
9
+ Pry.start
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require "bundler/setup"
5
+
6
+ ENGINE_ROOT = File.expand_path("..", __dir__)
7
+ ENGINE_PATH = File.expand_path("../lib/<%= name %>/engine", __dir__)
8
+
9
+ require_relative "../spec/rails_helper"
10
+
11
+ require "rails/engine/commands"
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails"
4
+
5
+ require "<%= name %>/version"
6
+
7
+ module <%= class_name %>
8
+ class << self
9
+ # Configure table_name_prefix for all the models from the engine
10
+ # if there could be a collision with other engines, or the main
11
+ # app models.
12
+ #
13
+ # This is useful during the gradual migration to component-based
14
+ # architecture.
15
+
16
+ def table_name_prefix
17
+ ""
18
+ end
19
+ end
20
+ end
21
+
22
+ require "<%= name %>/engine"
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rails/engine"
4
+
5
+ module <%= class_name %>
6
+ class << self
7
+ def configure
8
+ yield Engine.config
9
+ end
10
+ end
11
+
12
+ class Engine < ::Rails::Engine
13
+ isolate_namespace <%= class_name %>
14
+
15
+ config.autoload_paths += Dir["#{config.root}/app/**/concerns"]
16
+
17
+ initializer "<%= name %>" do |app|
18
+ app.config.paths["db/migrate"].concat(config.paths["db/migrate"].expanded)
19
+
20
+ # For migration_context (used for checking if migrations are pending)
21
+ ActiveRecord::Migrator.migrations_path += config.paths["db/migrate"].expanded.flatten
22
+
23
+ engine_factories_path = root.join("spec", "factories")
24
+
25
+ # This hook is provided by `jets-factory` gem
26
+ ActiveSupport.on_load(:factory_bot) do
27
+ FactoryBot.definition_file_paths.unshift engine_factories_path
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module <%= class_name %>
4
+ VERSION = "0.1.0"
5
+ end
@@ -0,0 +1,6 @@
1
+ test:
2
+ adapter: postgresql
3
+ url: <%%= ENV["DATABASE_URL"].sub("postgres://", "postgis://") %>
4
+ pool: <%%= ENV["DB_POOL_SIZE"] || 5 %>
5
+ timeout: 5000
6
+ database: engine_<%= name %>_test
@@ -0,0 +1,3 @@
1
+ test:
2
+ service: Disk
3
+ root: <%= Rails.root.join("../../tmp/storage") %>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ ActiveRecord::Schema.define do
4
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Engine root is used by rails_configuration to correctly
4
+ # load fixtures and support files
5
+
6
+ ENGINE_ROOT = Pathname.new(File.expand_path("..", __dir__))
7
+
8
+ ENV["RAILS_ENV"] = "test"
9
+ ENV["BOOTSNAP_CACHE_DIR"] = File.join(ENGINE_ROOT, "spec", "internal", "tmp", "cache")
10
+
11
+ require "bootsnap/setup"
12
+
13
+ require "combustion"
14
+ require "jets/testing/ext/combustion_bundler_patch"
15
+
16
+ begin
17
+ # Customize your Combustion test application.
18
+ # Combustion.initialize! :active_record, :active_job, :active_storage, :action_mailer, :action_controller
19
+ Combustion.initialize! :active_record, bundler_groups: :<%= name %> do
20
+ config.logger = Logger.new(nil)
21
+ config.log_level = :fatal
22
+
23
+ config.autoloader = :zeitwerk
24
+
25
+ # Always use test adapter for active_job
26
+ # config.active_job.queue_adapter = :test
27
+ #
28
+ # Always use test service to active_storage
29
+ # config.active_storage.service = :test
30
+ #
31
+ # Enable verbose logging for active_record
32
+ # config.active_record.verbose_query_logs = true
33
+ end
34
+ rescue => e
35
+ # Fail fast if application couldn't be loaded
36
+ $stdout.puts "Failed to load the app: #{e.message}\n#{e.backtrace.take(5).join("\n")}"
37
+ exit(1)
38
+ end
39
+
40
+ # if you need url helpers (e.g. with active storage)
41
+ # Rails.application.default_url_options[:host] = "localhost"
42
+ # <%= class_name %>::Engine.routes.default_url_options[:host] = "localhost"
43
+
44
+ require "jets/testing/rails_configuration"
45
+
46
+ # action_policy helpers
47
+ # require "action_policy/rspec"
48
+ # require "action_policy/rspec/dsl"
49
+
50
+ # Additional RSpec configuration
51
+ #
52
+ # RSpec.configure do |config|
53
+ # config.after(:suite) do
54
+ # # Cleanup attachments generated during tests
55
+ # FileUtils.rm_rf(ActiveStorage::Blob.service.root)
56
+ # end
57
+ # end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/setup"
4
+ require "pry-byebug"
5
+
6
+ require "jets/testing/rspec_configuration"
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "jets/cli/main"
4
+ require "jets/cli/version"
5
+ require "jets/cli/exceptions"
6
+
7
+ require "shellwords"
8
+
9
+ module Jets
10
+ module CLI
11
+ class Error < StandardError; end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module CLI
5
+ module Exceptions
6
+ class CommandFailed < StandardError; end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "thor"
4
+
5
+ module Jets
6
+ module CLI
7
+ class Main < Thor
8
+ RESERVED_COMMANDS = %i[all generate gems engines].freeze
9
+
10
+ class_option :ignore_failures, type: :boolean, default: false
11
+
12
+ def self.exit_on_failure?
13
+ true
14
+ end
15
+
16
+ desc "NAME bundle [OPTIONS]", "Run `bundle` command for given engine"
17
+ long_desc <<-LONGDESC
18
+ `jets NAME bundle` will run `bundle` command for given engine.
19
+ LONGDESC
20
+ def bundle(*args)
21
+ exec_command("bundle", *args)
22
+ end
23
+
24
+ %w[rake rubocop rspec].each do |command|
25
+ desc "NAME #{command} [OPTIONS]", "Run `#{command}` command for given engine"
26
+ define_method(command) do |*args|
27
+ bundle(*(["exec", command] + args))
28
+ end
29
+ end
30
+
31
+ desc "NAME rails [OPTIONS]", "Run `rails` command for given engine"
32
+ def rails(*args)
33
+ exec_command("./bin/rails", *args)
34
+ end
35
+
36
+ private
37
+
38
+ def engine
39
+ @engine ||= options[:engine] || ENV["ENGINE"]
40
+ end
41
+
42
+ def engines
43
+ @engines ||= Dir["*", base: "engines"]
44
+ end
45
+
46
+ def gems
47
+ @gems ||= Dir["*", base: "gems"]
48
+ end
49
+
50
+ def engine_root
51
+ @engine_root ||= "#{options[:gem] ? "gems" : "engines"}/#{engine}"
52
+ end
53
+
54
+ def app_root
55
+ # @app_root ||= File.expand_path("..", __dir__)
56
+ @app_root ||= if defined?(Rails)
57
+ Rails.root
58
+ else
59
+ Dir.pwd
60
+ end
61
+ end
62
+
63
+ def exec_command(*args)
64
+ if engine.nil? || engine.empty?
65
+ @engine = args.each do |arg|
66
+ next unless match = arg&.match(%r{^(engines|gems)/(?<name>[a-z_]+)}) # rubocop:disable Lint/AssignmentInCondition
67
+ break match[:name]
68
+ end
69
+
70
+ if engine
71
+ args.map! { |arg| arg ? arg.sub("#{engine_root}/", "") : arg }
72
+ else
73
+ raise "You did not provide an engine name."
74
+ end
75
+ end
76
+
77
+ subshell(engine_root, *args)
78
+ end
79
+
80
+ def subshell(dir, command, *args)
81
+ Bundler.with_original_env do
82
+ new_root = File.join(app_root, dir)
83
+
84
+ Dir.chdir(new_root) do
85
+ return if Kernel.system(command, *args)
86
+ end
87
+ end
88
+
89
+ message = "Command `#{command}` (from #{dir}) returned non-zero exit code"
90
+
91
+ $stdout.puts message
92
+ raise CommandFailedException, message unless options[:ignore_failures]
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Jets
4
+ module CLI
5
+ VERSION = "0.1.0"
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,198 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jets-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Lauri Jutila
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-11-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: aruba
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.13'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.13'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '12.3'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '12.3'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.9'
111
+ - !ruby/object:Gem::Dependency
112
+ name: jets-rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.1'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.1'
125
+ description: Jets CLI for using Jets with your Rails application
126
+ email:
127
+ executables:
128
+ - jets
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".rspec"
134
+ - ".rubocop.yml"
135
+ - ".travis.yml"
136
+ - Gemfile
137
+ - Gemfile.lock
138
+ - LICENSE.txt
139
+ - README.md
140
+ - Rakefile
141
+ - bin/console
142
+ - bin/jets
143
+ - bin/setup
144
+ - jets-cli.gemspec
145
+ - lib/generators/jets/engine/engine_generator.rb
146
+ - lib/generators/jets/engine/templates/%name%.gemspec.tt
147
+ - lib/generators/jets/engine/templates/.bundle/config
148
+ - lib/generators/jets/engine/templates/.gitignore.tt
149
+ - lib/generators/jets/engine/templates/.pryrc.tt
150
+ - lib/generators/jets/engine/templates/.rspec
151
+ - lib/generators/jets/engine/templates/.rubocop.yml.tt
152
+ - lib/generators/jets/engine/templates/Gemfile
153
+ - lib/generators/jets/engine/templates/Gemfile.runtime
154
+ - lib/generators/jets/engine/templates/README.md.tt
155
+ - lib/generators/jets/engine/templates/Rakefile.tt
156
+ - lib/generators/jets/engine/templates/bin/console.tt
157
+ - lib/generators/jets/engine/templates/bin/rails.tt
158
+ - lib/generators/jets/engine/templates/config/.keep
159
+ - lib/generators/jets/engine/templates/db/migrate/.keep
160
+ - lib/generators/jets/engine/templates/lib/%name%.rb.tt
161
+ - lib/generators/jets/engine/templates/lib/%name%/engine.rb.tt
162
+ - lib/generators/jets/engine/templates/lib/%name%/version.rb.tt
163
+ - lib/generators/jets/engine/templates/spec/factories/.keep
164
+ - lib/generators/jets/engine/templates/spec/internal/config/database.yml.tt
165
+ - lib/generators/jets/engine/templates/spec/internal/config/storage.yml.tt
166
+ - lib/generators/jets/engine/templates/spec/internal/db/schema.rb
167
+ - lib/generators/jets/engine/templates/spec/rails_helper.rb.tt
168
+ - lib/generators/jets/engine/templates/spec/spec_helper.rb
169
+ - lib/jets/cli.rb
170
+ - lib/jets/cli/exceptions.rb
171
+ - lib/jets/cli/main.rb
172
+ - lib/jets/cli/version.rb
173
+ homepage: https://github.com/getjets/jets-cli
174
+ licenses:
175
+ - MIT
176
+ metadata:
177
+ homepage_uri: https://github.com/getjets/jets-cli
178
+ source_code_uri: https://github.com/getjets/jets-cli
179
+ post_install_message:
180
+ rdoc_options: []
181
+ require_paths:
182
+ - lib
183
+ required_ruby_version: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 2.3.0
188
+ required_rubygems_version: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ requirements: []
194
+ rubygems_version: 3.1.2
195
+ signing_key:
196
+ specification_version: 4
197
+ summary: Jets CLI
198
+ test_files: []