gemsmith 7.7.0 → 8.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 +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +114 -118
- data/bin/gemsmith +2 -1
- data/lib/gemsmith/cli.rb +195 -99
- data/lib/gemsmith/cli_helpers.rb +8 -19
- data/lib/gemsmith/credentials.rb +2 -2
- data/lib/gemsmith/gem/inspector.rb +30 -0
- data/lib/gemsmith/gem/module_formatter.rb +51 -0
- data/lib/gemsmith/gem/requirement.rb +2 -0
- data/lib/gemsmith/{aids/gem_spec.rb → gem/specification.rb} +19 -26
- data/lib/gemsmith/generators/base.rb +33 -0
- data/lib/gemsmith/generators/bundler.rb +15 -0
- data/lib/gemsmith/generators/cli.rb +17 -0
- data/lib/gemsmith/generators/code_climate.rb +14 -0
- data/lib/gemsmith/generators/documentation.rb +28 -0
- data/lib/gemsmith/generators/gem.rb +17 -0
- data/lib/gemsmith/{skeletons/git_skeleton.rb → generators/git.rb} +13 -7
- data/lib/gemsmith/generators/git_hub.rb +14 -0
- data/lib/gemsmith/generators/guard.rb +13 -0
- data/lib/gemsmith/generators/pragma.rb +40 -0
- data/lib/gemsmith/generators/rails.rb +85 -0
- data/lib/gemsmith/generators/rake.rb +40 -0
- data/lib/gemsmith/generators/reek.rb +13 -0
- data/lib/gemsmith/generators/rspec.rb +23 -0
- data/lib/gemsmith/generators/rubocop.rb +16 -0
- data/lib/gemsmith/{skeletons/ruby_skeleton.rb → generators/ruby.rb} +5 -5
- data/lib/gemsmith/generators/scss_lint.rb +13 -0
- data/lib/gemsmith/generators/travis.rb +13 -0
- data/lib/gemsmith/git.rb +19 -0
- data/lib/gemsmith/identity.rb +1 -1
- data/lib/gemsmith/rake/builder.rb +65 -0
- data/lib/gemsmith/rake/{release.rb → publisher.rb} +14 -5
- data/lib/gemsmith/rake/tasks.rb +32 -20
- data/lib/gemsmith/template_helper.rb +28 -0
- data/lib/gemsmith/templates/%gem_name%/%gem_name%.gemspec.tt +30 -28
- data/lib/gemsmith/templates/%gem_name%/.codeclimate.yml.tt +36 -0
- data/lib/gemsmith/templates/%gem_name%/.rubocop.yml.tt +9 -1
- data/lib/gemsmith/templates/%gem_name%/.travis.yml.tt +4 -1
- data/lib/gemsmith/templates/%gem_name%/{CHANGELOG.md.tt → CHANGES.md.tt} +0 -0
- data/lib/gemsmith/templates/%gem_name%/Guardfile.tt +1 -1
- data/lib/gemsmith/templates/%gem_name%/README.md.tt +20 -18
- data/lib/gemsmith/templates/%gem_name%/Rakefile.tt +6 -1
- data/lib/gemsmith/templates/%gem_name%/bin/%gem_name%.tt +4 -4
- data/lib/gemsmith/templates/%gem_name%/bin/setup.tt +1 -1
- data/lib/gemsmith/templates/%gem_name%/lib/%gem_path%.rb.tt +4 -0
- data/lib/gemsmith/templates/%gem_name%/lib/%gem_path%/cli.rb.tt +54 -0
- data/lib/gemsmith/templates/%gem_name%/lib/{%gem_name% → %gem_path%}/engine.rb.tt +2 -4
- data/lib/gemsmith/templates/%gem_name%/lib/{%gem_name% → %gem_path%}/identity.rb.tt +3 -5
- data/lib/gemsmith/templates/%gem_name%/lib/generators/{%gem_name% → %gem_path%}/install/USAGE.tt +0 -0
- data/lib/gemsmith/templates/%gem_name%/lib/generators/{%gem_name% → %gem_path%}/install/install_generator.rb.tt +2 -5
- data/lib/gemsmith/templates/%gem_name%/lib/generators/{%gem_name% → %gem_path%}/upgrade/USAGE.tt +0 -0
- data/lib/gemsmith/templates/%gem_name%/lib/generators/{%gem_name% → %gem_path%}/upgrade/upgrade_generator.rb.tt +2 -5
- data/lib/gemsmith/templates/%gem_name%/lib/tasks/reek.rake.tt +6 -0
- data/lib/gemsmith/templates/%gem_name%/lib/tasks/scss_lint.rake.tt +6 -0
- data/lib/gemsmith/templates/%gem_name%/spec/lib/%gem_path%/cli_spec.rb.tt +83 -0
- data/lib/gemsmith/templates/%gem_name%/spec/rails_helper.rb.tt +14 -0
- data/lib/gemsmith/templates/%gem_name%/spec/spec_helper.rb.tt +29 -16
- data/lib/gemsmith/templates/%gem_name%/spec/support/shared_contexts/temp_dir.rb.tt +9 -0
- data/lib/tasks/reek.rake +8 -0
- data/lib/tasks/rspec.rake +2 -0
- data/lib/tasks/rubocop.rake +2 -0
- metadata +138 -149
- metadata.gz.sig +0 -0
- data/lib/gemsmith/aids/git.rb +0 -12
- data/lib/gemsmith/aids/spec.rb +0 -46
- data/lib/gemsmith/configuration.rb +0 -200
- data/lib/gemsmith/rake/build.rb +0 -38
- data/lib/gemsmith/skeletons/base_skeleton.rb +0 -29
- data/lib/gemsmith/skeletons/bundler_skeleton.rb +0 -15
- data/lib/gemsmith/skeletons/cli_skeleton.rb +0 -16
- data/lib/gemsmith/skeletons/documentation_skeleton.rb +0 -28
- data/lib/gemsmith/skeletons/gem_skeleton.rb +0 -17
- data/lib/gemsmith/skeletons/git_hub_skeleton.rb +0 -14
- data/lib/gemsmith/skeletons/guard_skeleton.rb +0 -13
- data/lib/gemsmith/skeletons/pry_skeleton.rb +0 -13
- data/lib/gemsmith/skeletons/rails_skeleton.rb +0 -61
- data/lib/gemsmith/skeletons/rake_skeleton.rb +0 -37
- data/lib/gemsmith/skeletons/rspec_skeleton.rb +0 -26
- data/lib/gemsmith/skeletons/rubocop_skeleton.rb +0 -15
- data/lib/gemsmith/skeletons/travis_skeleton.rb +0 -13
- data/lib/gemsmith/templates/%gem_name%/lib/%gem_name%.rb.tt +0 -6
- data/lib/gemsmith/templates/%gem_name%/lib/%gem_name%/cli.rb.tt +0 -40
- data/lib/gemsmith/templates/%gem_name%/lib/tasks/console.rake.tt +0 -7
- data/lib/gemsmith/templates/%gem_name%/spec/lib/%gem_name%/%gem_name%_spec.rb.tt +0 -7
- data/lib/gemsmith/templates/%gem_name%/spec/support/extensions/pry.rb.tt +0 -5
- data/lib/gemsmith/templates/%gem_name%/spec/support/kit/default_config.rb.tt +0 -18
- data/lib/gemsmith/templates/%gem_name%/spec/support/kit/stderr.rb.tt +0 -9
- data/lib/gemsmith/templates/%gem_name%/spec/support/kit/stdout.rb.tt +0 -9
- data/lib/gemsmith/templates/%gem_name%/spec/support/kit/temp_dir.rb.tt +0 -25
- data/lib/tasks/console.rake +0 -7
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gemsmith
|
4
|
+
# Provides helper methods for use by the Thor CLI. These methods are necessary to resolve %% file
|
5
|
+
# and folder variables and render dynamic content within the Thor ERB *templates* structure.
|
6
|
+
module TemplateHelper
|
7
|
+
def gem_name
|
8
|
+
configuration.dig :gem, :name
|
9
|
+
end
|
10
|
+
|
11
|
+
def gem_path
|
12
|
+
configuration.dig :gem, :path
|
13
|
+
end
|
14
|
+
|
15
|
+
def gem_class
|
16
|
+
configuration.dig :gem, :class
|
17
|
+
end
|
18
|
+
|
19
|
+
def rails_version
|
20
|
+
configuration.dig :versions, :rails
|
21
|
+
end
|
22
|
+
|
23
|
+
def render_namespace &block
|
24
|
+
body = capture(&block) if block_given?
|
25
|
+
concat Gem::ModuleFormatter.new(gem_class).render(body)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
$LOAD_PATH.push File.expand_path("../lib", __FILE__)
|
2
|
-
require "<%= config.dig(:gem, :
|
2
|
+
require "<%= config.dig(:gem, :path) %>/identity"
|
3
3
|
|
4
4
|
Gem::Specification.new do |spec|
|
5
5
|
spec.name = <%= config.dig(:gem, :class) %>::Identity.name
|
@@ -7,52 +7,54 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.platform = <%= config.dig(:gem, :platform) %>
|
8
8
|
spec.authors = ["<%= config.dig(:author, :name) %>"]
|
9
9
|
spec.email = ["<%= config.dig(:author, :email) %>"]
|
10
|
-
spec.homepage = "<%= config.dig(:gem, :
|
10
|
+
spec.homepage = "<%= config.dig(:gem, :url) %>"
|
11
11
|
spec.summary = ""
|
12
|
-
spec.description = ""
|
13
12
|
spec.license = "MIT"
|
14
13
|
|
15
|
-
<%- if config.dig(:
|
16
|
-
if
|
17
|
-
spec.signing_key =
|
18
|
-
spec.cert_chain = [
|
14
|
+
<%- if config.dig(:generate, :security) -%>
|
15
|
+
if File.exist?(Gem.default_key_path) && File.exist?(Gem.default_cert_path)
|
16
|
+
spec.signing_key = Gem.default_key_path
|
17
|
+
spec.cert_chain = [Gem.default_cert_path]
|
19
18
|
end
|
20
19
|
<%- end -%>
|
21
20
|
|
22
|
-
<%- if config.dig(:
|
21
|
+
<%- if config.dig(:generate, :cli) -%>
|
23
22
|
spec.add_dependency "thor", "~> 0.19"
|
24
|
-
spec.add_dependency "thor_plus", "~>
|
23
|
+
spec.add_dependency "thor_plus", "~> 4.0"
|
24
|
+
spec.add_dependency "runcom", "~> 0.2"
|
25
25
|
<%- end -%>
|
26
|
-
<%- if config.dig(:
|
26
|
+
<%- if config.dig(:generate, :rails) -%>
|
27
27
|
spec.add_dependency "rails", "~> <%= config.dig(:versions, :rails) %>"
|
28
28
|
<%- end -%>
|
29
|
-
spec.add_development_dependency "bundler", "~> 1.12"
|
30
29
|
spec.add_development_dependency "rake", "~> 11.0"
|
31
30
|
spec.add_development_dependency "gemsmith", "~> <%= Gemsmith::Identity.version[/\d{1}\.\d{1}/] %>"
|
32
|
-
<%- if config.dig(:
|
33
|
-
spec.add_development_dependency "pry"
|
34
|
-
spec.add_development_dependency "pry-byebug"
|
35
|
-
spec.add_development_dependency "pry-state"
|
31
|
+
<%- if config.dig(:generate, :pry) -%>
|
32
|
+
spec.add_development_dependency "pry", "~> 0.10"
|
33
|
+
spec.add_development_dependency "pry-byebug", "~> 3.4"
|
34
|
+
spec.add_development_dependency "pry-state", "~> 0.1"
|
36
35
|
<%- end -%>
|
37
|
-
<%- if config.dig(:
|
38
|
-
spec.add_development_dependency "<%= config.dig(:
|
36
|
+
<%- if config.dig(:generate, :rspec) -%>
|
37
|
+
spec.add_development_dependency "<%= config.dig(:generate, :rails) ? "rspec-rails" : "rspec" %>", "~> 3.5"
|
39
38
|
<%- end -%>
|
40
|
-
<%- if config.dig(:
|
41
|
-
spec.add_development_dependency "
|
42
|
-
spec.add_development_dependency "guard-rspec"
|
43
|
-
spec.add_development_dependency "terminal-notifier"
|
44
|
-
spec.add_development_dependency "terminal-notifier-guard"
|
39
|
+
<%- if config.dig(:generate, :guard) -%>
|
40
|
+
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
45
41
|
<%- end -%>
|
46
|
-
<%- if config.dig(:
|
47
|
-
spec.add_development_dependency "
|
42
|
+
<%- if config.dig(:generate, :reek) -%>
|
43
|
+
spec.add_development_dependency "reek", "~> 4.5"
|
48
44
|
<%- end -%>
|
49
|
-
<%- if config.dig(:
|
50
|
-
spec.add_development_dependency "
|
45
|
+
<%- if config.dig(:generate, :rubocop) -%>
|
46
|
+
spec.add_development_dependency "rubocop", "~> 0.45"
|
47
|
+
<%- end -%>
|
48
|
+
<%- if config.dig(:generate, :scss_lint) -%>
|
49
|
+
spec.add_development_dependency "scss_lint", "~> 0.50"
|
50
|
+
<%- end -%>
|
51
|
+
<%- if config.dig(:generate, :code_climate) -%>
|
52
|
+
spec.add_development_dependency "codeclimate-test-reporter", "~> 1.0"
|
51
53
|
<%- end -%>
|
52
54
|
|
53
|
-
spec.files = Dir["lib/**/*"
|
55
|
+
spec.files = Dir["lib/**/*"]
|
54
56
|
spec.extra_rdoc_files = Dir["README*", "LICENSE*"]
|
55
|
-
<%- if config.dig(:
|
57
|
+
<%- if config.dig(:generate, :cli) -%>
|
56
58
|
spec.executables << "<%= config.dig(:gem, :name) %>"
|
57
59
|
<%- end -%>
|
58
60
|
spec.require_paths = ["lib"]
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
engines:
|
3
|
+
shellcheck:
|
4
|
+
enabled: true
|
5
|
+
bundler-audit:
|
6
|
+
enabled: true
|
7
|
+
reek:
|
8
|
+
enabled: <%= config.dig :generate, :reek %>
|
9
|
+
rubocop:
|
10
|
+
enabled: <%= config.dig :generate, :rubocop %>
|
11
|
+
scss-lint:
|
12
|
+
enabled: <%= config.dig :generate, :scss_lint %>
|
13
|
+
duplication:
|
14
|
+
enabled: true
|
15
|
+
config:
|
16
|
+
languages:
|
17
|
+
- ruby
|
18
|
+
- javascript
|
19
|
+
fixme:
|
20
|
+
enabled: true
|
21
|
+
config:
|
22
|
+
strings:
|
23
|
+
- TODO
|
24
|
+
- FIX
|
25
|
+
- DUPLICATE
|
26
|
+
ratings:
|
27
|
+
paths:
|
28
|
+
- "app/**/*"
|
29
|
+
- "bin/**/*"
|
30
|
+
- "lib/**/*"
|
31
|
+
- "**.rb"
|
32
|
+
- "**.js"
|
33
|
+
exclude_paths:
|
34
|
+
- "spec/**/*"
|
35
|
+
- "vendor/**/*"
|
36
|
+
- ".codeclimate.yml"
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%- if config.dig(:
|
1
|
+
<%- if config.dig(:generate, :rails) -%>
|
2
2
|
AllCops:
|
3
3
|
Exclude:
|
4
4
|
- "spec/dummy/**/*"
|
@@ -22,6 +22,8 @@ Style/PercentLiteralDelimiters:
|
|
22
22
|
"%i": "[]"
|
23
23
|
"%I": "[]"
|
24
24
|
"%r": "()"
|
25
|
+
Style/SafeNavigation:
|
26
|
+
Enabled: false
|
25
27
|
Style/SignalException:
|
26
28
|
EnforcedStyle: semantic
|
27
29
|
Style/SingleLineBlockParams:
|
@@ -32,5 +34,11 @@ Style/StringLiterals:
|
|
32
34
|
EnforcedStyle: double_quotes
|
33
35
|
Style/StringLiteralsInInterpolation:
|
34
36
|
EnforcedStyle: double_quotes
|
37
|
+
Style/VariableNumber:
|
38
|
+
EnforcedStyle: snake_case
|
39
|
+
Metrics/BlockLength:
|
40
|
+
Exclude:
|
41
|
+
- "**/*.gemspec"
|
42
|
+
- "spec/**/*"
|
35
43
|
Metrics/LineLength:
|
36
44
|
Max: 120
|
@@ -1,10 +1,13 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- <%= config.dig(:versions, :ruby) %>
|
4
|
-
<%- if config.dig(:
|
4
|
+
<%- if config.dig(:generate, :rails) -%>
|
5
5
|
gemfile:
|
6
6
|
- gemfiles/rails-<%= config.dig(:versions, :rails) %>.x.gemfile
|
7
7
|
<%- end -%>
|
8
8
|
script: bundle exec rake
|
9
|
+
<%- if config.dig(:generate, :code_climate) -%>
|
10
|
+
after_script: bundle exec codeclimate-test-reporter
|
11
|
+
<%- end -%>
|
9
12
|
notifications:
|
10
13
|
email: false
|
File without changes
|
@@ -2,7 +2,7 @@ guard :rspec, cmd: "bundle exec rspec" do
|
|
2
2
|
watch(%r(^spec/.+_spec\.rb$))
|
3
3
|
watch(%r(^lib/(.+)\.rb$)) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
4
4
|
watch("spec/spec_helper.rb") { "spec" }
|
5
|
-
<%- if config.dig(:
|
5
|
+
<%- if config.dig(:generate, :rails) -%>
|
6
6
|
|
7
7
|
# Rails
|
8
8
|
watch(%r(^app/(.+)\.rb$)) { |m| "spec/#{m[1]}_spec.rb" }
|
@@ -1,17 +1,17 @@
|
|
1
1
|
# <%= config.dig(:gem, :class) %>
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/<%= config.dig(:gem, :name) %>.svg)](http://badge.fury.io/rb/<%= config.dig(:gem, :name) %>)
|
4
|
-
<%- if config.dig(:
|
4
|
+
<%- if config.dig(:generate, :code_climate) -%>
|
5
5
|
[![Code Climate GPA](https://codeclimate.com/github/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>.svg)](https://codeclimate.com/github/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>)
|
6
6
|
[![Code Climate Coverage](https://codeclimate.com/github/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>/coverage.svg)](https://codeclimate.com/github/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>)
|
7
7
|
<%- end -%>
|
8
|
-
<%- if config.dig(:
|
8
|
+
<%- if config.dig(:generate, :gemnasium) -%>
|
9
9
|
[![Gemnasium Status](https://gemnasium.com/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>.svg)](https://gemnasium.com/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>)
|
10
10
|
<%- end -%>
|
11
|
-
<%- if config.dig(:
|
11
|
+
<%- if config.dig(:generate, :travis) -%>
|
12
12
|
[![Travis CI Status](https://secure.travis-ci.org/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>.svg)](https://travis-ci.org/<%= config.fetch :github_user %>/<%= config.dig(:gem, :name) %>)
|
13
13
|
<%- end -%>
|
14
|
-
<%- if config.dig(:
|
14
|
+
<%- if config.dig(:generate, :patreon) -%>
|
15
15
|
[![Patreon](https://img.shields.io/badge/patreon-donate-brightgreen.svg)](https://www.patreon.com/<%= config.fetch :github_user %>)
|
16
16
|
<%- end -%>
|
17
17
|
|
@@ -24,21 +24,22 @@
|
|
24
24
|
|
25
25
|
# Requirements
|
26
26
|
|
27
|
-
0. [
|
28
|
-
<%- if config.dig(:
|
27
|
+
0. [Ruby <%= config.dig(:versions, :ruby) %>](https://www.ruby-lang.org)
|
28
|
+
<%- if config.dig(:generate, :rails) -%>
|
29
29
|
0. [Ruby on Rails](http://rubyonrails.org).
|
30
30
|
<%- end -%>
|
31
31
|
|
32
32
|
# Setup
|
33
33
|
|
34
|
-
<%- if config.dig(:
|
34
|
+
<%- if config.dig(:generate, :security) -%>
|
35
35
|
For a secure install, type the following (recommended):
|
36
36
|
|
37
37
|
gem cert --add <(curl --location --silent <%= config.dig :organization, :url %>/gem-public.pem)
|
38
38
|
gem install <%= config.dig(:gem, :name) %> --trust-policy MediumSecurity
|
39
39
|
|
40
|
-
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification
|
41
|
-
allowing the installation of unsigned dependencies since they are beyond the scope of this
|
40
|
+
NOTE: A HighSecurity trust policy would be best but MediumSecurity enables signed gem verification
|
41
|
+
while allowing the installation of unsigned dependencies since they are beyond the scope of this
|
42
|
+
gem.
|
42
43
|
|
43
44
|
For an insecure install, type the following (not recommended):
|
44
45
|
|
@@ -49,7 +50,7 @@ To install, type the following:
|
|
49
50
|
gem install <%= config.dig(:gem, :name) %>
|
50
51
|
<%- end -%>
|
51
52
|
|
52
|
-
<%- unless config.dig(:
|
53
|
+
<%- unless config.dig(:generate, :cli) -%>
|
53
54
|
Add the following to your Gemfile:
|
54
55
|
|
55
56
|
gem "<%= config.dig(:gem, :name) %>"
|
@@ -57,7 +58,7 @@ Add the following to your Gemfile:
|
|
57
58
|
|
58
59
|
# Usage
|
59
60
|
|
60
|
-
<%- if config.dig(:
|
61
|
+
<%- if config.dig(:generate, :rspec) -%>
|
61
62
|
# Tests
|
62
63
|
|
63
64
|
To test, run:
|
@@ -69,14 +70,14 @@ To test, run:
|
|
69
70
|
|
70
71
|
Read [Semantic Versioning](http://semver.org) for details. Briefly, it means:
|
71
72
|
|
72
|
-
- Patch (x.y.Z) - Incremented for small, backwards compatible bug fixes.
|
73
|
-
- Minor (x.Y.z) - Incremented for new, backwards compatible public API enhancements
|
73
|
+
- Patch (x.y.Z) - Incremented for small, backwards compatible, bug fixes.
|
74
|
+
- Minor (x.Y.z) - Incremented for new, backwards compatible, public API enhancements/fixes.
|
74
75
|
- Major (X.y.z) - Incremented for any backwards incompatible public API changes.
|
75
76
|
|
76
77
|
# Code of Conduct
|
77
78
|
|
78
|
-
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
79
|
-
you agree to abide by its terms.
|
79
|
+
Please note that this project is released with a [CODE OF CONDUCT](CODE_OF_CONDUCT.md). By
|
80
|
+
participating in this project you agree to abide by its terms.
|
80
81
|
|
81
82
|
# Contributions
|
82
83
|
|
@@ -85,13 +86,14 @@ Read [CONTRIBUTING](CONTRIBUTING.md) for details.
|
|
85
86
|
# License
|
86
87
|
|
87
88
|
Copyright (c) <%= config.fetch :year %> [<%= config.dig :organization, :name %>](<%= config.dig :organization, :url %>).
|
88
|
-
Read
|
89
|
+
Read [LICENSE](LICENSE.md) for details.
|
89
90
|
|
90
91
|
# History
|
91
92
|
|
92
|
-
Read
|
93
|
+
Read [CHANGES](CHANGES.md) for details.
|
93
94
|
Built with [Gemsmith](https://github.com/bkuhlmann/gemsmith).
|
94
95
|
|
95
96
|
# Credits
|
96
97
|
|
97
|
-
Developed by [<%= config.dig(:author, :name) %>](<%= config.dig :author, :url %>) at
|
98
|
+
Developed by [<%= config.dig(:author, :name) %>](<%= config.dig :author, :url %>) at
|
99
|
+
[<%= config.dig :organization, :name %>](<%= config.dig :organization, :url %>).
|
@@ -1,8 +1,8 @@
|
|
1
|
-
#! /usr/bin/ruby
|
1
|
+
#! /usr/bin/env ruby
|
2
2
|
|
3
|
-
require "<%= config.dig(:gem, :
|
4
|
-
require "<%= config.dig(:gem, :
|
5
|
-
require "<%= config.dig(:gem, :
|
3
|
+
require "<%= config.dig(:gem, :path) %>"
|
4
|
+
require "<%= config.dig(:gem, :path) %>/cli"
|
5
|
+
require "<%= config.dig(:gem, :path) %>/identity"
|
6
6
|
|
7
7
|
Process.setproctitle <%= config.dig(:gem, :class) %>::Identity.version_label
|
8
8
|
<%= config.dig(:gem, :class) %>::CLI.start
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "yaml"
|
2
|
+
require "thor"
|
3
|
+
require "thor/actions"
|
4
|
+
require "thor_plus/actions"
|
5
|
+
require "runcom"
|
6
|
+
|
7
|
+
<% render_namespace do %>
|
8
|
+
# The Command Line Interface (CLI) for the gem.
|
9
|
+
class CLI < Thor
|
10
|
+
include Thor::Actions
|
11
|
+
include ThorPlus::Actions
|
12
|
+
|
13
|
+
package_name <%= config.dig(:gem, :class) %>::Identity.version_label
|
14
|
+
|
15
|
+
def self.configuration
|
16
|
+
Runcom::Configuration.new file_name: Identity.file_name
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize args = [], options = {}, config = {}
|
20
|
+
super args, options, config
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "-c, [--config]", %(Manage gem configuration ("#{configuration.computed_path}").)
|
24
|
+
map %w[-c --config] => :config
|
25
|
+
method_option :edit,
|
26
|
+
aliases: "-e",
|
27
|
+
desc: "Edit gem configuration.",
|
28
|
+
type: :boolean, default: false
|
29
|
+
method_option :info,
|
30
|
+
aliases: "-i",
|
31
|
+
desc: "Print gem configuration.",
|
32
|
+
type: :boolean, default: false
|
33
|
+
def config
|
34
|
+
path = self.class.configuration.computed_path
|
35
|
+
|
36
|
+
if options.edit? then `#{editor} #{path}`
|
37
|
+
elsif options.info? then say(path)
|
38
|
+
else help(:config)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
desc "-v, [--version]", "Show gem version."
|
43
|
+
map %w[-v --version] => :version
|
44
|
+
def version
|
45
|
+
say <%= config.dig(:gem, :class) %>::Identity.version_label
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "-h, [--help=COMMAND]", "Show this message or get help for a command."
|
49
|
+
map %w[-h --help] => :help
|
50
|
+
def help task = nil
|
51
|
+
say and super
|
52
|
+
end
|
53
|
+
end
|
54
|
+
<% end %>
|
@@ -1,6 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module <%= config.dig(:gem, :class) %>
|
1
|
+
<% render_namespace do %>
|
4
2
|
# Gem identity information.
|
5
3
|
module Identity
|
6
4
|
def self.name
|
@@ -18,11 +16,11 @@ module <%= config.dig(:gem, :class) %>
|
|
18
16
|
def self.version_label
|
19
17
|
"#{label} #{version}"
|
20
18
|
end
|
21
|
-
<%- if config.dig(:
|
19
|
+
<%- if config.dig(:generate, :cli) -%>
|
22
20
|
|
23
21
|
def self.file_name
|
24
22
|
".#{name}rc"
|
25
23
|
end
|
26
24
|
<%- end -%>
|
27
25
|
end
|
28
|
-
end
|
26
|
+
<% end %>
|
data/lib/gemsmith/templates/%gem_name%/lib/generators/{%gem_name% → %gem_path%}/install/USAGE.tt
RENAMED
File without changes
|
@@ -1,13 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
module <%= config.dig(:gem, :class) %>
|
1
|
+
<% render_namespace do %>
|
4
2
|
# Generator for installing new files.
|
5
3
|
class InstallGenerator < Rails::Generators::Base
|
6
4
|
source_root File.join(File.dirname(__FILE__), "..", "templates")
|
7
5
|
|
8
6
|
desc "Installs additional <%= config.dig(:gem, :class) %> resources."
|
9
7
|
def install
|
10
|
-
# TODO: Add install code.
|
11
8
|
end
|
12
9
|
end
|
13
|
-
end
|
10
|
+
<% end %>
|