gemsmith 16.2.0 → 17.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -3
- data/README.adoc +11 -1
- data/gemsmith.gemspec +3 -3
- data/lib/gemsmith/builders/circle_ci.rb +32 -0
- data/lib/gemsmith/cli/actions/build.rb +2 -1
- data/lib/gemsmith/templates/%project_name%/%project_name%.gemspec.erb +1 -1
- data/lib/gemsmith/templates/%project_name%/exe/%project_name%.erb +1 -1
- data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/actions/config_spec.rb.erb +1 -1
- data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parser_spec.rb.erb +1 -1
- data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parsers/core_spec.rb.erb +1 -1
- data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/shell_spec.rb.erb +2 -2
- data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/content_spec.rb.erb +1 -1
- data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/loader_spec.rb.erb +3 -3
- data/lib/gemsmith/templates/%project_name%/spec/support/shared_contexts/application_container.rb.erb +2 -2
- data/lib/gemsmith/templates/%project_name%/spec/support/shared_examples/a_parser.rb.erb +1 -1
- data.tar.gz.sig +0 -0
- metadata +8 -11
- metadata.gz.sig +0 -0
- data/lib/gemsmith/gems/finder.rb +0 -23
- data/lib/gemsmith/gems/loader.rb +0 -23
- data/lib/gemsmith/gems/picker.rb +0 -45
- data/lib/gemsmith/gems/presenter.rb +0 -52
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eee92d7f565b704f53494328cc55bcbf3115346088df35f165ccdcd3152abbe5
|
4
|
+
data.tar.gz: 1e75b09378363453f7d18f25004ab1f0c878fc6fdbe8a5f969807a48135e45a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b762c8024c1fb8b4d7c5bd4601d85f0b78272e3be09ab2a26e1981394f04b293115976b8e40c51b476efb7dc721796af4380d16f9c92060f036d29a58782d82e
|
7
|
+
data.tar.gz: 3ed00ce68ab41469290de5c6d1172cf1132c86980fe1862d40bca72608665d3204553350984eca67177e9357c2ca6c6052438c3376628fbd969610213ca26ebd
|
checksums.yaml.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
I��Z��H�L�
|
1
|
+
l}�#/��f�wg/O�rJmNh�����W�E��>����˕� �5ݬdT�P�I���@#�$���B�ܙ�jmL8f��j�+9ū�fF��K���˥�Z���3����b�_NM�����A�Ds21o_�*C5-*��[/�h5&\��z��օy���F8'� �&��a��*f��C15�>�b>�� <��wú/�ٷU5�
|
2
|
+
���T��&��z�X�!�~��LE!lx�; O�֚���H�+�Ifxt�
|
data/README.adoc
CHANGED
@@ -35,6 +35,16 @@ To install, run:
|
|
35
35
|
gem install gemsmith
|
36
36
|
----
|
37
37
|
|
38
|
+
== Upgrade
|
39
|
+
|
40
|
+
If upgrading from 16.0.0 to 17.0.0, you'll need to make the following changes:
|
41
|
+
|
42
|
+
* README badges are no longer injected so you can customize as desired.
|
43
|
+
* The `:rubocop:` build configuration has been removed. Use `:caliber:` instead.
|
44
|
+
* The `--rubocop` build option has been removed. Use `--caliber` instead.
|
45
|
+
* You no longer have to Git ignore RuboCop cached configurations since this is handled by the
|
46
|
+
link:https://www.alchemists.io/projects/caliber[Caliber] gem now.
|
47
|
+
|
38
48
|
== Usage
|
39
49
|
|
40
50
|
=== Command Line Interface (CLI)
|
@@ -55,6 +65,7 @@ USAGE:
|
|
55
65
|
BUILD OPTIONS:
|
56
66
|
--[no-]amazing_print Add Amazing Print gem. Default: true.
|
57
67
|
--[no-]bundler-leak Add Bundler Leak gem. Default: true.
|
68
|
+
--[no-]caliber Add Caliber gem. Default: true.
|
58
69
|
--[no-]circle_ci Add Circle CI configuration and badge. Default: false.
|
59
70
|
--[no-]citation Add citation documentation. Default: true.
|
60
71
|
--[no-]community Add community documentation. Default: false.
|
@@ -75,7 +86,6 @@ BUILD OPTIONS:
|
|
75
86
|
--[no-]reek Add Reek gem. Default: true.
|
76
87
|
--[no-]refinements Add Refinements gem. Default: true.
|
77
88
|
--[no-]rspec Add RSpec gem. Default: true.
|
78
|
-
--[no-]rubocop Add RuboCop gems. Default: true.
|
79
89
|
--[no-]security Add security. Default: true.
|
80
90
|
--[no-]setup Add setup script. Default: true.
|
81
91
|
--[no-]simple_cov Add SimpleCov gem. Default: true.
|
data/gemsmith.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "gemsmith"
|
5
|
-
spec.version = "
|
5
|
+
spec.version = "17.0.0"
|
6
6
|
spec.authors = ["Brooke Kuhlmann"]
|
7
7
|
spec.email = ["brooke@alchemists.io"]
|
8
8
|
spec.homepage = "https://www.alchemists.io/projects/gemsmith"
|
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency "dry-monads", "~> 1.4"
|
27
27
|
spec.add_dependency "milestoner", "~> 13.0"
|
28
28
|
spec.add_dependency "pastel", "~> 0.8"
|
29
|
-
spec.add_dependency "refinements", "~> 9.
|
30
|
-
spec.add_dependency "rubysmith", "~>
|
29
|
+
spec.add_dependency "refinements", "~> 9.2"
|
30
|
+
spec.add_dependency "rubysmith", "~> 2.0"
|
31
31
|
spec.add_dependency "runcom", "~> 8.2"
|
32
32
|
spec.add_dependency "spek", "~> 0.0"
|
33
33
|
spec.add_dependency "versionaire", "~> 10.0"
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "refinements/structs"
|
4
|
+
|
5
|
+
module Gemsmith
|
6
|
+
module Builders
|
7
|
+
# Builds project skeleton Circle CI configuration.
|
8
|
+
class CircleCI
|
9
|
+
using Refinements::Structs
|
10
|
+
|
11
|
+
def self.call(...) = new(...).call
|
12
|
+
|
13
|
+
def initialize configuration, builder: Rubysmith::Builder
|
14
|
+
@configuration = configuration
|
15
|
+
@builder = builder
|
16
|
+
end
|
17
|
+
|
18
|
+
def call
|
19
|
+
return configuration unless configuration.build_circle_ci
|
20
|
+
|
21
|
+
builder.call(configuration.merge(template_path: "%project_name%/.circleci/config.yml.erb"))
|
22
|
+
.replace("Gemfile.lock", "#{configuration.project_name}.gemspec")
|
23
|
+
|
24
|
+
configuration
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :configuration, :builder
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -24,6 +24,7 @@ module Gemsmith
|
|
24
24
|
Rubysmith::Builders::Rake,
|
25
25
|
Rubysmith::Builders::Console,
|
26
26
|
Rubysmith::Builders::CircleCI,
|
27
|
+
Builders::CircleCI,
|
27
28
|
Rubysmith::Builders::Setup,
|
28
29
|
Rubysmith::Builders::GitHub,
|
29
30
|
Rubysmith::Builders::Guard,
|
@@ -31,7 +32,7 @@ module Gemsmith
|
|
31
32
|
Rubysmith::Builders::RSpec::Context,
|
32
33
|
Rubysmith::Builders::RSpec::Helper,
|
33
34
|
Builders::RSpec::Helper,
|
34
|
-
Rubysmith::Builders::
|
35
|
+
Rubysmith::Builders::Caliber,
|
35
36
|
Rubysmith::Extensions::Bundler,
|
36
37
|
Rubysmith::Extensions::Pragmater,
|
37
38
|
Rubysmith::Extensions::Tocer,
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_dependency "pastel", "~> 0.8"
|
30
30
|
<% end %>
|
31
31
|
<% if configuration.build_refinements %>
|
32
|
-
spec.add_dependency "refinements", "~> 9.
|
32
|
+
spec.add_dependency "refinements", "~> 9.2"
|
33
33
|
<% end %>
|
34
34
|
<% if configuration.build_cli %>
|
35
35
|
spec.add_dependency "runcom", "~> 8.2"
|
data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/actions/config_spec.rb.erb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe <%= configuration.
|
3
|
+
RSpec.describe <%= configuration.project_namespaced_class %>::CLI::Actions::Config do
|
4
4
|
subject(:action) { described_class.new }
|
5
5
|
|
6
6
|
include_context "with application container"
|
data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/cli/parsers/core_spec.rb.erb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe <%= configuration.
|
3
|
+
RSpec.describe <%= configuration.project_namespaced_class %>::CLI::Parsers::Core do
|
4
4
|
subject(:parser) { described_class.new configuration.dup }
|
5
5
|
|
6
6
|
include_context "with application container"
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe <%= configuration.
|
3
|
+
RSpec.describe <%= configuration.project_namespaced_class %>::CLI::Shell do
|
4
4
|
using Refinements::Pathnames
|
5
5
|
|
6
6
|
subject(:shell) { described_class.new actions: described_class::ACTIONS.merge(config:) }
|
7
7
|
|
8
8
|
include_context "with temporary directory"
|
9
9
|
|
10
|
-
let(:config) { instance_spy <%= configuration.
|
10
|
+
let(:config) { instance_spy <%= configuration.project_namespaced_class %>::CLI::Actions::Config }
|
11
11
|
|
12
12
|
describe "#call" do
|
13
13
|
it "edits configuration" do
|
data/lib/gemsmith/templates/%project_name%/spec/lib/%project_path%/configuration/loader_spec.rb.erb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
RSpec.describe <%= configuration.
|
3
|
+
RSpec.describe <%= configuration.project_namespaced_class %>::Configuration::Loader do
|
4
4
|
subject(:loader) { described_class.with_defaults }
|
5
5
|
|
6
|
-
let(:content) { <%= configuration.
|
6
|
+
let(:content) { <%= configuration.project_namespaced_class %>::Configuration::Content.new }
|
7
7
|
|
8
8
|
describe ".call" do
|
9
9
|
it "answers default configuration" do
|
10
|
-
expect(described_class.call).to be_a(<%= configuration.
|
10
|
+
expect(described_class.call).to be_a(<%= configuration.project_namespaced_class %>::Configuration::Content)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
data/lib/gemsmith/templates/%project_name%/spec/support/shared_contexts/application_container.rb.erb
CHANGED
@@ -5,8 +5,8 @@ RSpec.shared_context "with application container" do
|
|
5
5
|
|
6
6
|
include_context "with temporary directory"
|
7
7
|
|
8
|
-
let(:container) { <%= configuration.
|
9
|
-
let(:configuration) { <%= configuration.
|
8
|
+
let(:container) { <%= configuration.project_namespaced_class %>::Container }
|
9
|
+
let(:configuration) { <%= configuration.project_namespaced_class %>::Configuration::Loader.with_defaults.call }
|
10
10
|
let(:kernel) { class_spy Kernel }
|
11
11
|
|
12
12
|
before do
|
@@ -1,7 +1,7 @@
|
|
1
1
|
RSpec.shared_examples "a parser" do
|
2
2
|
describe ".call" do
|
3
3
|
it "answers configuration" do
|
4
|
-
expect(described_class.call).to be_a(<%= configuration.
|
4
|
+
expect(described_class.call).to be_a(<%= configuration.project_namespaced_class %>::Configuration::Content)
|
5
5
|
end
|
6
6
|
end
|
7
7
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
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:
|
4
|
+
version: 17.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brooke Kuhlmann
|
@@ -28,7 +28,7 @@ cert_chain:
|
|
28
28
|
lkHilIrX69jq8wMPpBhlaw2mRmeSL50Wv5u6xVBvOHhXFSP1crXM95vfLhLyRYod
|
29
29
|
W2A=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date: 2022-02-
|
31
|
+
date: 2022-02-12 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: dry-container
|
@@ -92,28 +92,28 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '9.
|
95
|
+
version: '9.2'
|
96
96
|
type: :runtime
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '9.
|
102
|
+
version: '9.2'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: rubysmith
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
109
|
+
version: '2.0'
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
116
|
+
version: '2.0'
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: runcom
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- gemsmith.gemspec
|
187
187
|
- lib/gemsmith.rb
|
188
188
|
- lib/gemsmith/builders/bundler.rb
|
189
|
+
- lib/gemsmith/builders/circle_ci.rb
|
189
190
|
- lib/gemsmith/builders/cli.rb
|
190
191
|
- lib/gemsmith/builders/documentation/readme.rb
|
191
192
|
- lib/gemsmith/builders/git/commit.rb
|
@@ -205,10 +206,6 @@ files:
|
|
205
206
|
- lib/gemsmith/configuration/enhancers/template_root.rb
|
206
207
|
- lib/gemsmith/configuration/loader.rb
|
207
208
|
- 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
|
212
209
|
- lib/gemsmith/templates/%project_name%/%project_name%.gemspec.erb
|
213
210
|
- lib/gemsmith/templates/%project_name%/exe/%project_name%.erb
|
214
211
|
- lib/gemsmith/templates/%project_name%/lib/%project_path%/cli/actions/config.rb.erb
|
@@ -262,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
262
259
|
- !ruby/object:Gem::Version
|
263
260
|
version: '0'
|
264
261
|
requirements: []
|
265
|
-
rubygems_version: 3.3.
|
262
|
+
rubygems_version: 3.3.7
|
266
263
|
signing_key:
|
267
264
|
specification_version: 4
|
268
265
|
summary: A command line interface for smithing Ruby gems.
|
metadata.gz.sig
CHANGED
Binary file
|
data/lib/gemsmith/gems/finder.rb
DELETED
@@ -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
|
data/lib/gemsmith/gems/loader.rb
DELETED
@@ -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
|
data/lib/gemsmith/gems/picker.rb
DELETED
@@ -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
|