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
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemsmith
|
4
|
-
module Skeletons
|
5
|
-
# Configures Pry debugging support.
|
6
|
-
class PrySkeleton < BaseSkeleton
|
7
|
-
def create
|
8
|
-
return unless configuration.create_pry?
|
9
|
-
cli.template "%gem_name%/spec/support/extensions/pry.rb.tt", configuration.to_h
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemsmith
|
4
|
-
module Skeletons
|
5
|
-
# Configures Ruby on Rails support.
|
6
|
-
class RailsSkeleton < BaseSkeleton
|
7
|
-
def rails?
|
8
|
-
cli.run "command -v rails > /dev/null"
|
9
|
-
end
|
10
|
-
|
11
|
-
def install_rails
|
12
|
-
return if rails?
|
13
|
-
return unless cli.yes?("Ruby on Rails is not installed. Would you like to install it (y/n)?")
|
14
|
-
cli.run "gem install rails"
|
15
|
-
end
|
16
|
-
|
17
|
-
def create_engine
|
18
|
-
gem_name = configuration.gem_name
|
19
|
-
|
20
|
-
cli.template "#{lib_root}/%gem_name%/engine.rb.tt", configuration.to_h
|
21
|
-
cli.run "rails plugin new --skip #{gem_name} #{engine_options}"
|
22
|
-
cli.remove_file "#{gem_name}/app/helpers/#{gem_name}/application_helper.rb", configuration.to_h
|
23
|
-
cli.remove_file "#{gem_name}/lib/#{gem_name}/version.rb", configuration.to_h
|
24
|
-
cli.remove_file "#{gem_name}/MIT-LICENSE", configuration.to_h
|
25
|
-
cli.remove_file "#{gem_name}/README.rdoc", configuration.to_h
|
26
|
-
end
|
27
|
-
|
28
|
-
def create_generator_files
|
29
|
-
cli.empty_directory "#{generator_root}/templates"
|
30
|
-
cli.template "#{generator_root}/install/install_generator.rb.tt", configuration.to_h
|
31
|
-
cli.template "#{generator_root}/install/USAGE.tt", configuration.to_h
|
32
|
-
cli.template "#{generator_root}/upgrade/upgrade_generator.rb.tt", configuration.to_h
|
33
|
-
cli.template "#{generator_root}/upgrade/USAGE.tt", configuration.to_h
|
34
|
-
end
|
35
|
-
|
36
|
-
def create_travis_gemfiles
|
37
|
-
return unless configuration.create_travis?
|
38
|
-
cli.template "%gem_name%/gemfiles/rails-%rails_version%.x.gemfile.tt", configuration.to_h
|
39
|
-
end
|
40
|
-
|
41
|
-
def create
|
42
|
-
return unless configuration.create_rails?
|
43
|
-
|
44
|
-
install_rails
|
45
|
-
create_engine
|
46
|
-
create_generator_files
|
47
|
-
create_travis_gemfiles
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def engine_options
|
53
|
-
"--skip-bundle --skip-test-unit --skip-keeps --skip-git --mountable --dummy-path=spec/dummy"
|
54
|
-
end
|
55
|
-
|
56
|
-
def generator_root
|
57
|
-
"#{lib_root}/generators/%gem_name%"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemsmith
|
4
|
-
module Skeletons
|
5
|
-
# Configures Rake support.
|
6
|
-
class RakeSkeleton < BaseSkeleton
|
7
|
-
def create_console_task
|
8
|
-
cli.template "%gem_name%/lib/tasks/console.rake.tt", configuration.to_h
|
9
|
-
end
|
10
|
-
|
11
|
-
def create
|
12
|
-
create_console_task
|
13
|
-
cli.template "%gem_name%/Rakefile.tt", configuration.to_h
|
14
|
-
configure_rakefile
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def rspec_task
|
20
|
-
"spec" if configuration.create_rspec?
|
21
|
-
end
|
22
|
-
|
23
|
-
def rubocop_task
|
24
|
-
"rubocop" if configuration.create_rubocop?
|
25
|
-
end
|
26
|
-
|
27
|
-
def default_tasks
|
28
|
-
[rspec_task, rubocop_task].compact
|
29
|
-
end
|
30
|
-
|
31
|
-
def configure_rakefile
|
32
|
-
return if default_tasks.empty?
|
33
|
-
cli.append_to_file "%gem_name%/Rakefile", %(\ntask default: %w[#{default_tasks.join(" ")}]\n)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemsmith
|
4
|
-
module Skeletons
|
5
|
-
# Configures RSpec support.
|
6
|
-
class RspecSkeleton < BaseSkeleton
|
7
|
-
def create
|
8
|
-
return unless configuration.create_rspec?
|
9
|
-
|
10
|
-
cli.template "%gem_name%/lib/tasks/rspec.rake.tt", configuration.to_h
|
11
|
-
cli.template "#{rspec_root}/spec_helper.rb.tt", configuration.to_h
|
12
|
-
cli.template "#{rspec_root}/lib/%gem_name%/%gem_name%_spec.rb.tt", configuration.to_h
|
13
|
-
cli.template "#{rspec_root}/support/kit/default_config.rb.tt", configuration.to_h
|
14
|
-
cli.template "#{rspec_root}/support/kit/stderr.rb.tt", configuration.to_h
|
15
|
-
cli.template "#{rspec_root}/support/kit/stdout.rb.tt", configuration.to_h
|
16
|
-
cli.template "#{rspec_root}/support/kit/temp_dir.rb.tt", configuration.to_h
|
17
|
-
end
|
18
|
-
|
19
|
-
private
|
20
|
-
|
21
|
-
def rspec_root
|
22
|
-
"%gem_name%/spec"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemsmith
|
4
|
-
module Skeletons
|
5
|
-
# Configures Rubocop support.
|
6
|
-
class RubocopSkeleton < BaseSkeleton
|
7
|
-
def create
|
8
|
-
return unless configuration.create_rubocop?
|
9
|
-
|
10
|
-
cli.template "%gem_name%/.rubocop.yml.tt", configuration.to_h
|
11
|
-
cli.template "%gem_name%/lib/tasks/rubocop.rake.tt", configuration.to_h
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Gemsmith
|
4
|
-
module Skeletons
|
5
|
-
# Configures Travis CI support.
|
6
|
-
class TravisSkeleton < BaseSkeleton
|
7
|
-
def create
|
8
|
-
return unless configuration.create_travis?
|
9
|
-
cli.template "%gem_name%/.travis.yml.tt", configuration.to_h
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "yaml"
|
4
|
-
require "thor"
|
5
|
-
require "thor/actions"
|
6
|
-
require "thor_plus/actions"
|
7
|
-
|
8
|
-
module <%= config.dig(:gem, :class) %>
|
9
|
-
# The Command Line Interface (CLI) for the gem.
|
10
|
-
class CLI < Thor
|
11
|
-
include Thor::Actions
|
12
|
-
include ThorPlus::Actions
|
13
|
-
|
14
|
-
package_name <%= config.dig(:gem, :class) %>::Identity.version_label
|
15
|
-
|
16
|
-
def initialize args = [], options = {}, config = {}
|
17
|
-
super args, options, config
|
18
|
-
end
|
19
|
-
<%- if config.dig(:create, :cli) -%>
|
20
|
-
|
21
|
-
desc "-e, [--edit]", "Edit gem settings in default editor."
|
22
|
-
map %w[-e --edit] => :edit
|
23
|
-
def edit
|
24
|
-
`#{editor} $HOME/#{<%= config.dig(:gem, :class) %>::Identity.file_name}`
|
25
|
-
end
|
26
|
-
<%- end -%>
|
27
|
-
|
28
|
-
desc "-v, [--version]", "Show gem version."
|
29
|
-
map %w[-v --version] => :version
|
30
|
-
def version
|
31
|
-
say <%= config.dig(:gem, :class) %>::Identity.version_label
|
32
|
-
end
|
33
|
-
|
34
|
-
desc "-h, [--help=HELP]", "Show this message or get help for a command."
|
35
|
-
map %w[-h --help] => :help
|
36
|
-
def help task = nil
|
37
|
-
say and super
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
RSpec.configure do |config|
|
4
|
-
config.order = "random"
|
5
|
-
config.filter_run focus: true
|
6
|
-
config.disable_monkey_patching!
|
7
|
-
config.run_all_when_everything_filtered = true
|
8
|
-
config.example_status_persistence_file_path = "./tmp/rspec-status.txt"
|
9
|
-
|
10
|
-
config.mock_with :rspec do |mocks|
|
11
|
-
mocks.verify_partial_doubles = true
|
12
|
-
end
|
13
|
-
|
14
|
-
config.expect_with :rspec do |expectations|
|
15
|
-
expectations.syntax = :expect
|
16
|
-
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
17
|
-
end
|
18
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "rspec/core/shared_context"
|
4
|
-
|
5
|
-
module RSpec
|
6
|
-
module Kit
|
7
|
-
# Adds temp directory support to specs enabled with the :temp_dir metadata key.
|
8
|
-
module TempDirContext
|
9
|
-
extend RSpec::Core::SharedContext
|
10
|
-
let(:temp_dir) { File.expand_path "../../../../tmp/rspec", __FILE__ }
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
RSpec.configure do |config|
|
16
|
-
config.include RSpec::Kit::TempDirContext
|
17
|
-
|
18
|
-
config.before do |example|
|
19
|
-
FileUtils.mkdir_p(temp_dir) if example.metadata[:temp_dir]
|
20
|
-
end
|
21
|
-
|
22
|
-
config.after do |example|
|
23
|
-
FileUtils.rm_rf(temp_dir) if example.metadata[:temp_dir]
|
24
|
-
end
|
25
|
-
end
|