gemsmith 16.2.0 → 18.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/LICENSE.adoc +134 -214
  4. data/README.adoc +63 -23
  5. data/gemsmith.gemspec +8 -7
  6. data/lib/gemsmith/builders/circle_ci.rb +35 -0
  7. data/lib/gemsmith/builders/cli.rb +15 -7
  8. data/lib/gemsmith/builders/git/commit.rb +6 -5
  9. data/lib/gemsmith/cli/actions/build.rb +2 -1
  10. data/lib/gemsmith/cli/actions/config.rb +6 -7
  11. data/lib/gemsmith/cli/actions/container.rb +25 -0
  12. data/lib/gemsmith/cli/actions/edit.rb +5 -7
  13. data/lib/gemsmith/cli/actions/import.rb +11 -0
  14. data/lib/gemsmith/cli/actions/install.rb +5 -5
  15. data/lib/gemsmith/cli/actions/publish.rb +5 -5
  16. data/lib/gemsmith/cli/actions/view.rb +5 -7
  17. data/lib/gemsmith/cli/parser.rb +9 -5
  18. data/lib/gemsmith/cli/parsers/build.rb +7 -5
  19. data/lib/gemsmith/cli/parsers/core.rb +6 -5
  20. data/lib/gemsmith/cli/shell.rb +21 -40
  21. data/lib/gemsmith/container.rb +1 -1
  22. data/lib/gemsmith/import.rb +7 -0
  23. data/lib/gemsmith/templates/%project_name%/%project_name%.gemspec.erb +5 -2
  24. data/lib/gemsmith/templates/%project_name%/exe/%project_name%.erb +1 -1
  25. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/config.rb.erb +6 -9
  26. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/container.rb.erb +18 -0
  27. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/import.rb.erb +9 -0
  28. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/parser.rb.erb +9 -5
  29. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/parsers/core.rb.erb +6 -5
  30. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/shell.rb.erb +6 -15
  31. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/container.rb.erb +3 -25
  32. data/lib/gemsmith/templates/%project_name%/lib/%project_path%/import.rb.erb +5 -0
  33. data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/actions/config_spec.rb.erb +4 -4
  34. data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parser_spec.rb.erb +2 -2
  35. data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parsers/core_spec.rb.erb +2 -2
  36. data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/shell_spec.rb.erb +17 -14
  37. data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/content_spec.rb.erb +1 -1
  38. data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/loader_spec.rb.erb +3 -3
  39. data/lib/gemsmith/templates/%project_name%/spec/support/shared_contexts/application_dependencies.rb.erb +21 -0
  40. data/lib/gemsmith/templates/%project_name%/spec/support/shared_examples/a_parser.rb.erb +1 -1
  41. data/lib/gemsmith/tools/editor.rb +2 -9
  42. data/lib/gemsmith/tools/installer.rb +5 -5
  43. data/lib/gemsmith/tools/pusher.rb +23 -5
  44. data/lib/gemsmith/tools/validator.rb +1 -10
  45. data/lib/gemsmith/tools/versioner.rb +6 -6
  46. data/lib/gemsmith/tools/viewer.rb +1 -10
  47. data.tar.gz.sig +0 -0
  48. metadata +54 -37
  49. metadata.gz.sig +0 -0
  50. data/lib/gemsmith/gems/finder.rb +0 -23
  51. data/lib/gemsmith/gems/loader.rb +0 -23
  52. data/lib/gemsmith/gems/picker.rb +0 -45
  53. data/lib/gemsmith/gems/presenter.rb +0 -52
  54. data/lib/gemsmith/templates/%project_name%/spec/support/shared_contexts/application_container.rb.erb +0 -22
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemsmith
3
3
  version: !ruby/object:Gem::Version
4
- version: 16.2.0
4
+ version: 18.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brooke Kuhlmann
@@ -10,9 +10,9 @@ bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIC/jCCAeagAwIBAgIBBDANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpicm9v
14
- a2UvREM9YWxjaGVtaXN0cy9EQz1pbzAeFw0yMTAzMTkxMjQ4MDZaFw0yMjAzMTkx
15
- MjQ4MDZaMCUxIzAhBgNVBAMMGmJyb29rZS9EQz1hbGNoZW1pc3RzL0RDPWlvMIIB
13
+ MIIC/jCCAeagAwIBAgIBBTANBgkqhkiG9w0BAQsFADAlMSMwIQYDVQQDDBpicm9v
14
+ a2UvREM9YWxjaGVtaXN0cy9EQz1pbzAeFw0yMjAzMTkxNzI0MzJaFw0yMzAzMTkx
15
+ NzI0MzJaMCUxIzAhBgNVBAMMGmJyb29rZS9EQz1hbGNoZW1pc3RzL0RDPWlvMIIB
16
16
  IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA6l1qpXTiomH1RfMRloyw7MiE
17
17
  xyVx/x8Yc3EupdH7uhNaTXQGyORN6aOY//1QXXMHIZ9tW74nZLhesWMSUMYy0XhB
18
18
  brs+KkurHnc9FnEJAbG7ebGvl/ncqZt72nQvaxpDxvuCBHgJAz+8i5wl6FhLw+oT
@@ -20,100 +20,114 @@ cert_chain:
20
20
  D5vkU0YlAm1r98BymuJlcQ1qdkVEI1d48ph4kcS0S0nv1RiuyVb6TCAR3Nu3VaVq
21
21
  3fPzZKJLZBx67UvXdbdicWPiUR75elI4PXpLIic3xytaF52ZJYyKZCNZJhNwfQID
22
22
  AQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU0nzow9vc
23
- 2CdikiiE3fJhP/gY4ggwDQYJKoZIhvcNAQELBQADggEBAEjpaOXHHp8s/7GL2qCb
24
- YAs7urOLv9VHSPfQWAwaTMVnSsIf3Sw4xzISOP/mmfEPBPXtz61K5esrE/uTFtgb
25
- FyjxQk2H0sEWgrRXGGNHBWQRhhEs7LP/TByoC15A0br++xLxRz4r7HBLGAWQQDpg
26
- 66BJ2TBVjxS6K64tKbq7+ACyrOZGgTfNHACh4M076y0x0oRf/rwBrU39/KRfuhbb
27
- cm+nNCEtO35gTmZ2bVDHLGvWazi3gJt6+huQjfXTCUUG2YYBxwhu+GPdAGQPxpf9
28
- lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
29
- W2A=
23
+ 2CdikiiE3fJhP/gY4ggwDQYJKoZIhvcNAQELBQADggEBAJbbNyWzFjqUNVPPCUCo
24
+ IMrhDa9xf1xkORXNYYbmXgoxRy/KyNbUr+jgEEoWJAm9GXlcqxxWAUI6pK/i4/Qi
25
+ X6rPFEFmeObDOHNvuqy8Hd6AYsu+kP94U/KJhe9wnWGMmGoNKJNU3EkW3jM/osSl
26
+ +JRxiH5t4WtnDiVyoYl5nYC02rYdjJkG6VMxDymXTqn7u6HhYgZkGujq1UPar8x2
27
+ hNIWJblDKKSu7hA2d6+kUthuYo13o1sg1Da/AEDg0hoZSUvhqDEF5Hy232qb3pDt
28
+ CxDe2+VuChj4I1nvIHdu+E6XoEVlanUPKmSg6nddhkKn2gC45Kyzh6FZqnzH/CRp
29
+ RFE=
30
30
  -----END CERTIFICATE-----
31
- date: 2022-02-06 00:00:00.000000000 Z
31
+ date: 2022-04-10 00:00:00.000000000 Z
32
32
  dependencies:
33
33
  - !ruby/object:Gem::Dependency
34
- name: dry-container
34
+ name: auto_injector
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0.9'
39
+ version: '0.4'
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0.9'
46
+ version: '0.4'
47
47
  - !ruby/object:Gem::Dependency
48
- name: dry-monads
48
+ name: cogger
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '1.4'
53
+ version: '0.0'
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '1.4'
60
+ version: '0.0'
61
61
  - !ruby/object:Gem::Dependency
62
- name: milestoner
62
+ name: dry-container
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '13.0'
67
+ version: '0.9'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '13.0'
74
+ version: '0.9'
75
75
  - !ruby/object:Gem::Dependency
76
- name: pastel
76
+ name: dry-monads
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0.8'
81
+ version: '1.4'
82
82
  type: :runtime
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
86
  - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0.8'
88
+ version: '1.4'
89
+ - !ruby/object:Gem::Dependency
90
+ name: milestoner
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '14.0'
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '14.0'
89
103
  - !ruby/object:Gem::Dependency
90
104
  name: refinements
91
105
  requirement: !ruby/object:Gem::Requirement
92
106
  requirements:
93
107
  - - "~>"
94
108
  - !ruby/object:Gem::Version
95
- version: '9.1'
109
+ version: '9.2'
96
110
  type: :runtime
97
111
  prerelease: false
98
112
  version_requirements: !ruby/object:Gem::Requirement
99
113
  requirements:
100
114
  - - "~>"
101
115
  - !ruby/object:Gem::Version
102
- version: '9.1'
116
+ version: '9.2'
103
117
  - !ruby/object:Gem::Dependency
104
118
  name: rubysmith
105
119
  requirement: !ruby/object:Gem::Requirement
106
120
  requirements:
107
121
  - - "~>"
108
122
  - !ruby/object:Gem::Version
109
- version: '1.3'
123
+ version: '3.0'
110
124
  type: :runtime
111
125
  prerelease: false
112
126
  version_requirements: !ruby/object:Gem::Requirement
113
127
  requirements:
114
128
  - - "~>"
115
129
  - !ruby/object:Gem::Version
116
- version: '1.3'
130
+ version: '3.0'
117
131
  - !ruby/object:Gem::Dependency
118
132
  name: runcom
119
133
  requirement: !ruby/object:Gem::Requirement
@@ -134,14 +148,14 @@ dependencies:
134
148
  requirements:
135
149
  - - "~>"
136
150
  - !ruby/object:Gem::Version
137
- version: '0.0'
151
+ version: '0.2'
138
152
  type: :runtime
139
153
  prerelease: false
140
154
  version_requirements: !ruby/object:Gem::Requirement
141
155
  requirements:
142
156
  - - "~>"
143
157
  - !ruby/object:Gem::Version
144
- version: '0.0'
158
+ version: '0.2'
145
159
  - !ruby/object:Gem::Dependency
146
160
  name: versionaire
147
161
  requirement: !ruby/object:Gem::Requirement
@@ -186,6 +200,7 @@ files:
186
200
  - gemsmith.gemspec
187
201
  - lib/gemsmith.rb
188
202
  - lib/gemsmith/builders/bundler.rb
203
+ - lib/gemsmith/builders/circle_ci.rb
189
204
  - lib/gemsmith/builders/cli.rb
190
205
  - lib/gemsmith/builders/documentation/readme.rb
191
206
  - lib/gemsmith/builders/git/commit.rb
@@ -194,7 +209,9 @@ files:
194
209
  - lib/gemsmith/builders/specification.rb
195
210
  - lib/gemsmith/cli/actions/build.rb
196
211
  - lib/gemsmith/cli/actions/config.rb
212
+ - lib/gemsmith/cli/actions/container.rb
197
213
  - lib/gemsmith/cli/actions/edit.rb
214
+ - lib/gemsmith/cli/actions/import.rb
198
215
  - lib/gemsmith/cli/actions/install.rb
199
216
  - lib/gemsmith/cli/actions/publish.rb
200
217
  - lib/gemsmith/cli/actions/view.rb
@@ -205,13 +222,12 @@ files:
205
222
  - lib/gemsmith/configuration/enhancers/template_root.rb
206
223
  - lib/gemsmith/configuration/loader.rb
207
224
  - lib/gemsmith/container.rb
208
- - lib/gemsmith/gems/finder.rb
209
- - lib/gemsmith/gems/loader.rb
210
- - lib/gemsmith/gems/picker.rb
211
- - lib/gemsmith/gems/presenter.rb
225
+ - lib/gemsmith/import.rb
212
226
  - lib/gemsmith/templates/%project_name%/%project_name%.gemspec.erb
213
227
  - lib/gemsmith/templates/%project_name%/exe/%project_name%.erb
214
228
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/config.rb.erb
229
+ - lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/container.rb.erb
230
+ - lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/import.rb.erb
215
231
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/parser.rb.erb
216
232
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/parsers/core.rb.erb
217
233
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/shell.rb.erb
@@ -220,13 +236,14 @@ files:
220
236
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/configuration/loader.rb.erb
221
237
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/container.rb.erb
222
238
  - lib/gemsmith/templates/%project_name%/lib/%project_path%/identity.rb.erb
239
+ - lib/gemsmith/templates/%project_name%/lib/%project_path%/import.rb.erb
223
240
  - lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/actions/config_spec.rb.erb
224
241
  - lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parser_spec.rb.erb
225
242
  - lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parsers/core_spec.rb.erb
226
243
  - lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/shell_spec.rb.erb
227
244
  - lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/content_spec.rb.erb
228
245
  - lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/loader_spec.rb.erb
229
- - lib/gemsmith/templates/%project_name%/spec/support/shared_contexts/application_container.rb.erb
246
+ - lib/gemsmith/templates/%project_name%/spec/support/shared_contexts/application_dependencies.rb.erb
230
247
  - lib/gemsmith/templates/%project_name%/spec/support/shared_examples/a_parser.rb.erb
231
248
  - lib/gemsmith/tools/cleaner.rb
232
249
  - lib/gemsmith/tools/editor.rb
@@ -239,7 +256,7 @@ files:
239
256
  - lib/gemsmith/tools/viewer.rb
240
257
  homepage: https://www.alchemists.io/projects/gemsmith
241
258
  licenses:
242
- - Hippocratic-3.0
259
+ - Hippocratic-2.1
243
260
  metadata:
244
261
  bug_tracker_uri: https://github.com/bkuhlmann/gemsmith/issues
245
262
  changelog_uri: https://www.alchemists.io/projects/gemsmith/versions
@@ -262,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
279
  - !ruby/object:Gem::Version
263
280
  version: '0'
264
281
  requirements: []
265
- rubygems_version: 3.3.6
282
+ rubygems_version: 3.3.11
266
283
  signing_key:
267
284
  specification_version: 4
268
285
  summary: A command line interface for smithing Ruby gems.
metadata.gz.sig CHANGED
Binary file
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Gemsmith
4
- module Gems
5
- # Finds multiple versions of an installed gem (if any) and answers found specifications.
6
- class Finder
7
- def self.call(path, ...) = new(...).call path
8
-
9
- def initialize client: ::Gem::Specification, presenter: Gems::Presenter
10
- warn "[DEPRECATION]: Finder is deprecated, use Spek gem instead."
11
-
12
- @client = client
13
- @presenter = presenter
14
- end
15
-
16
- def call(name) = client.find_all_by_name(name).map { |record| presenter.new record }
17
-
18
- private
19
-
20
- attr_reader :client, :presenter
21
- end
22
- end
23
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Gemsmith
4
- module Gems
5
- # Loads a gem's specification.
6
- class Loader
7
- def self.call(path, ...) = new(...).call path
8
-
9
- def initialize client: ::Gem::Specification, presenter: Gems::Presenter
10
- warn "[DEPRECATION]: Loader is deprecated, use Spek gem instead."
11
-
12
- @client = client
13
- @presenter = presenter
14
- end
15
-
16
- def call(path) = client.load(path.to_s).then { |record| presenter.new record }
17
-
18
- private
19
-
20
- attr_reader :client, :presenter
21
- end
22
- end
23
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "dry/monads"
4
-
5
- module Gemsmith
6
- module Gems
7
- # Picks a gem specification.
8
- class Picker
9
- include Dry::Monads[:result]
10
-
11
- def self.call(name, ...) = new(...).call name
12
-
13
- def initialize finder: Finder.new, kernel: Kernel
14
- warn "[DEPRECATION]: Picker is deprecated, use Spek gem instead."
15
-
16
- @finder = finder
17
- @kernel = kernel
18
- end
19
-
20
- def call name
21
- specifications = finder.call name
22
-
23
- case specifications.size
24
- when 1 then Success specifications.first
25
- when 2.. then Success choose(specifications)
26
- else Failure "Unknown gem or gem is not installed: #{name}."
27
- end
28
- end
29
-
30
- def choose specifications
31
- specifications.each.with_index 1 do |specification, index|
32
- kernel.puts "#{index}. #{specification.named_version}"
33
- end
34
-
35
- kernel.puts "\nPlease enter gem selection:"
36
- ARGV.clear
37
- specifications[kernel.gets.chomp.to_i - 1]
38
- end
39
-
40
- private
41
-
42
- attr_reader :finder, :kernel
43
- end
44
- end
45
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "forwardable"
4
- require "pathname"
5
- require "refinements/arrays"
6
- require "versionaire"
7
-
8
- module Gemsmith
9
- module Gems
10
- # Provides a gem specification that is more useful than what is provided Ruby Gems.
11
- class Presenter
12
- extend Forwardable
13
-
14
- using Refinements::Arrays
15
- using Versionaire::Cast
16
-
17
- delegate %i[metadata name summary] => :record
18
-
19
- def initialize record
20
- warn "[DEPRECATION]: Presenter is deprecated, use Spek gem instead."
21
-
22
- @record = record
23
- end
24
-
25
- def allowed_push_key = metadata.fetch "allowed_push_key", "rubygems_api_key"
26
-
27
- def allowed_push_host = metadata.fetch "allowed_push_host", ::Gem::DEFAULT_HOST
28
-
29
- def homepage_url = String record.homepage
30
-
31
- def label = metadata.fetch "label", "Undefined"
32
-
33
- def labeled_summary(delimiter: " - ") = [label, summary].compress.join delimiter
34
-
35
- def labeled_version = "#{label} #{version}"
36
-
37
- def named_version = "#{name} #{version}"
38
-
39
- def package_path = Pathname("tmp").join package_name
40
-
41
- def package_name = "#{name}-#{version}.gem"
42
-
43
- def source_path = Pathname record.full_gem_path
44
-
45
- def version = Version record.version.to_s
46
-
47
- private
48
-
49
- attr_reader :record
50
- end
51
- end
52
- end
@@ -1,22 +0,0 @@
1
- require "dry/container/stub"
2
-
3
- RSpec.shared_context "with application container" do
4
- using Refinements::Structs
5
-
6
- include_context "with temporary directory"
7
-
8
- let(:container) { <%= configuration.project_class %>::Container }
9
- let(:configuration) { <%= configuration.project_class %>::Configuration::Loader.with_defaults.call }
10
- let(:kernel) { class_spy Kernel }
11
-
12
- before do
13
- container.enable_stubs!
14
- container.stub :configuration, configuration
15
- container.stub :kernel, kernel
16
- end
17
-
18
- after do
19
- container.unstub :configuration
20
- container.unstub :kernel
21
- end
22
- end