foobara-empty-ruby-project-generator 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +7 -0
  3. data/LICENSE-APACHE.txt +202 -0
  4. data/LICENSE-MIT.txt +21 -0
  5. data/LICENSE.txt +8 -0
  6. data/README.md +49 -0
  7. data/lib/foobara/empty_ruby_project_generator.rb +4 -0
  8. data/src/generate_empty_ruby_project.rb +43 -0
  9. data/src/generators/bin_console_generator.rb +15 -0
  10. data/src/generators/boot_finish_generator.rb +15 -0
  11. data/src/generators/changelog_generator.rb +15 -0
  12. data/src/generators/ci_yaml_generator.rb +13 -0
  13. data/src/generators/gemspec_generator.rb +19 -0
  14. data/src/generators/gitignore_generator.rb +15 -0
  15. data/src/generators/initial_spec_generator.rb +23 -0
  16. data/src/generators/lib_generator.rb +27 -0
  17. data/src/generators/license_generator.rb +15 -0
  18. data/src/generators/project_generator.rb +39 -0
  19. data/src/generators/version_generator.rb +15 -0
  20. data/src/manifests/project_config.rb +138 -0
  21. data/src/write_empty_ruby_project_to_disk.rb +192 -0
  22. data/templates/.bundle/config +2 -0
  23. data/templates/.github/workflows/ci.yml.erb +87 -0
  24. data/templates/.gitignore.erb +15 -0
  25. data/templates/.rspec +4 -0
  26. data/templates/.rubocop.yml +12 -0
  27. data/templates/.ruby-version +1 -0
  28. data/templates/CHANGELOG.md.erb +5 -0
  29. data/templates/Gemfile +38 -0
  30. data/templates/Guardfile +6 -0
  31. data/templates/LICENSE.txt.erb +21 -0
  32. data/templates/README.md +49 -0
  33. data/templates/Rakefile +14 -0
  34. data/templates/bin/console.erb +17 -0
  35. data/templates/bin/setup +8 -0
  36. data/templates/boot/config.rb +9 -0
  37. data/templates/boot/finish.rb.erb +24 -0
  38. data/templates/boot/start.rb +10 -0
  39. data/templates/boot.rb +2 -0
  40. data/templates/gemspec.gemspec.erb +30 -0
  41. data/templates/lib/project_require_file.rb.erb +3 -0
  42. data/templates/spec/initial_spec.rb.erb +5 -0
  43. data/templates/spec/spec_helper.rb +24 -0
  44. data/templates/spec/support/rubyprof.rb +14 -0
  45. data/templates/spec/support/simplecov.rb +9 -0
  46. data/templates/spec/support/term_trap.rb +6 -0
  47. data/templates/spec/support/vcr.rb +8 -0
  48. data/templates/src/version.rb.erb +7 -0
  49. metadata +123 -0
@@ -0,0 +1,30 @@
1
+ require_relative "src/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "<%= kebab_case_full_project_name %>"
5
+ spec.version = <%= full_project_name %>::VERSION
6
+ spec.authors = <%= author_names.inspect %>
7
+ spec.email = <%= author_emails.inspect %>
8
+
9
+ spec.summary = <%= description.inspect %>
10
+ spec.homepage = <%= homepage_url.inspect %>
11
+ spec.license = <%= license.inspect %>
12
+ spec.required_ruby_version = ">= #{File.read("#{__dir__}/.ruby-version")}"
13
+
14
+ spec.metadata["homepage_uri"] = spec.homepage
15
+ spec.metadata["source_code_uri"] = spec.homepage
16
+ spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"
17
+
18
+ spec.files = Dir[
19
+ "lib/**/*",
20
+ "src/**/*",
21
+ "LICENSE*.txt",
22
+ "README.md",
23
+ "CHANGELOG.md"
24
+ ]
25
+
26
+ spec.add_dependency "foobara"
27
+
28
+ spec.require_paths = ["lib"]
29
+ spec.metadata["rubygems_mfa_required"] = "true"
30
+ end
@@ -0,0 +1,3 @@
1
+ require "foobara/all"
2
+
3
+ Foobara::Util.require_directory "#{__dir__}/<%= path_to_src %>"
@@ -0,0 +1,5 @@
1
+ RSpec.describe <%= full_project_name %> do
2
+ it "has a version number" do
3
+ expect(<%= full_project_name %>::VERSION).to_not be_nil
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ ENV["FOOBARA_ENV"] = "test"
2
+
3
+ require "bundler/setup"
4
+
5
+ require "pry"
6
+ require "pry-byebug"
7
+ require "rspec/its"
8
+
9
+ require_relative "support/simplecov"
10
+ require_relative "../boot/start"
11
+
12
+ RSpec.configure do |config|
13
+ config.filter_run_when_matching :focus
14
+ config.example_status_persistence_file_path = ".rspec_status"
15
+ config.disable_monkey_patching!
16
+ config.order = :defined
17
+ config.expect_with(:rspec) { |c| c.syntax = :expect }
18
+ config.raise_errors_for_deprecations!
19
+ end
20
+
21
+ Dir["#{__dir__}/support/**/*.rb"].each { |f| require f }
22
+
23
+ require "foobara/spec_helpers/all"
24
+ require_relative "../boot/finish"
@@ -0,0 +1,14 @@
1
+ RSpec.configure do |config|
2
+ # TODO: move this to foobara-spec-helpers project
3
+ config.around(:each, :profile) do |example|
4
+ require "ruby-prof"
5
+ RubyProf.start
6
+ example.run
7
+ result = RubyProf.stop
8
+
9
+ printer = RubyProf::GraphHtmlPrinter.new(result)
10
+ File.open("tmp/profile-out.html", "w+") do |file|
11
+ printer.print(file)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ require "simplecov"
2
+
3
+ SimpleCov.start do
4
+ add_filter "spec/support"
5
+ # enable_coverage :branch
6
+ minimum_coverage line: 100
7
+ # TODO: enable this? worth it to get to 100% branch coverage?
8
+ # minimum_coverage line: 100, branch: 100
9
+ end
@@ -0,0 +1,6 @@
1
+ # Convenient whenever running into an infinite loop
2
+ Signal.trap("TERM") do
3
+ puts "SIGTERM received, printing backtrace:"
4
+ puts caller.join("\n")
5
+ exit
6
+ end
@@ -0,0 +1,8 @@
1
+ require "vcr"
2
+
3
+ VCR.configure do |config|
4
+ # config.filter_sensitive_data("<SCRUBBED_SOME_API_KEY>") { ENV.fetch("SOME_API_KEY", nil) }
5
+ config.cassette_library_dir = "spec/vcr_cassettes"
6
+ config.hook_into :webmock
7
+ config.configure_rspec_metadata!
8
+ end
@@ -0,0 +1,7 @@
1
+ <% full_project_path.each do |part| %>
2
+ module <%= part %>
3
+ <% end %>
4
+ VERSION = "0.0.1".freeze
5
+ <% full_project_path.size.times do %>
6
+ end
7
+ <% end %>
metadata ADDED
@@ -0,0 +1,123 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: foobara-empty-ruby-project-generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Miles Georgi
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-06-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: foobara
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: foobara-files-generator
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
42
+ email:
43
+ - azimux@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - CHANGELOG.md
49
+ - LICENSE-APACHE.txt
50
+ - LICENSE-MIT.txt
51
+ - LICENSE.txt
52
+ - README.md
53
+ - lib/foobara/empty_ruby_project_generator.rb
54
+ - src/generate_empty_ruby_project.rb
55
+ - src/generators/bin_console_generator.rb
56
+ - src/generators/boot_finish_generator.rb
57
+ - src/generators/changelog_generator.rb
58
+ - src/generators/ci_yaml_generator.rb
59
+ - src/generators/gemspec_generator.rb
60
+ - src/generators/gitignore_generator.rb
61
+ - src/generators/initial_spec_generator.rb
62
+ - src/generators/lib_generator.rb
63
+ - src/generators/license_generator.rb
64
+ - src/generators/project_generator.rb
65
+ - src/generators/version_generator.rb
66
+ - src/manifests/project_config.rb
67
+ - src/write_empty_ruby_project_to_disk.rb
68
+ - templates/.bundle/config
69
+ - templates/.github/workflows/ci.yml.erb
70
+ - templates/.gitignore.erb
71
+ - templates/.rspec
72
+ - templates/.rubocop.yml
73
+ - templates/.ruby-version
74
+ - templates/CHANGELOG.md.erb
75
+ - templates/Gemfile
76
+ - templates/Guardfile
77
+ - templates/LICENSE.txt.erb
78
+ - templates/README.md
79
+ - templates/Rakefile
80
+ - templates/bin/console.erb
81
+ - templates/bin/setup
82
+ - templates/boot.rb
83
+ - templates/boot/config.rb
84
+ - templates/boot/finish.rb.erb
85
+ - templates/boot/start.rb
86
+ - templates/gemspec.gemspec.erb
87
+ - templates/lib/project_require_file.rb.erb
88
+ - templates/spec/initial_spec.rb.erb
89
+ - templates/spec/spec_helper.rb
90
+ - templates/spec/support/rubyprof.rb
91
+ - templates/spec/support/simplecov.rb
92
+ - templates/spec/support/term_trap.rb
93
+ - templates/spec/support/vcr.rb
94
+ - templates/src/version.rb.erb
95
+ homepage: https://github.com/foobara/empty-ruby-project-generator
96
+ licenses:
97
+ - Apache-2.0
98
+ - MIT
99
+ metadata:
100
+ homepage_uri: https://github.com/foobara/empty-ruby-project-generator
101
+ source_code_uri: https://github.com/foobara/empty-ruby-project-generator
102
+ changelog_uri: https://github.com/foobara/empty-ruby-project-generator/blob/main/CHANGELOG.md
103
+ rubygems_mfa_required: 'true'
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: 3.2.2
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubygems_version: 3.4.10
120
+ signing_key:
121
+ specification_version: 4
122
+ summary: Generates empty ruby project boilerplate code from a template
123
+ test_files: []