foobara-empty-ruby-project-generator 0.0.1

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.
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: []