Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,11 @@ test/jeweler/version_tmp
test/version_tmp
tmp

# rbenv settings
.ruby-version
# rvm/rbenv settings
/.ruby-version
/.ruby-gemset

Gemfile.lock

# Gladiator (Glimmer Editor)
.gladiator
2 changes: 1 addition & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ Juwelier::Tasks.new do |gem|
gem.license = "MIT"
gem.authors = ["Fred Mitchell", "Josh Nichols", "Yusuke Murata"]
gem.email = ["fred.mitchell@gmx.de", "fred.mitchell@gmx.com", "info@muratayusuke.com"]
gem.files.include %w(lib/juwelier/templates/.document lib/juwelier/templates/.gitignore)
gem.files.include %w(lib/juwelier/templates/.document lib/juwelier/templates/.gitignore lib/juwelier/templates/.ruby-version lib/juwelier/templates/.ruby-gemset)

# dependencies defined in Gemfile
end
Expand Down
56 changes: 21 additions & 35 deletions juwelier.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ Gem::Specification.new do |s|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
s.require_paths = ["lib".freeze]
s.authors = ["Fred Mitchell".freeze, "Josh Nichols".freeze, "Yusuke Murata".freeze]
s.date = "2018-01-18"
s.date = "2021-01-05"
s.description = "Simple and opinionated helper for creating Rubygem projects on GitHub".freeze
s.email = ["fred.mitchell@gmx.de".freeze, "fred.mitchell@gmx.com".freeze, "info@muratayusuke.com".freeze]
s.executables = ["juwelier".freeze]
Expand Down Expand Up @@ -94,6 +94,8 @@ Gem::Specification.new do |s|
"lib/juwelier/tasks.rb",
"lib/juwelier/templates/.document",
"lib/juwelier/templates/.gitignore",
"lib/juwelier/templates/.ruby-gemset",
"lib/juwelier/templates/.ruby-version",
"lib/juwelier/templates/.semver",
"lib/juwelier/templates/Gemfile",
"lib/juwelier/templates/LICENSE.txt",
Expand Down Expand Up @@ -200,45 +202,29 @@ Gem::Specification.new do |s|
s.homepage = "http://github.com/flajann2/juwelier".freeze
s.licenses = ["MIT".freeze]
s.required_ruby_version = Gem::Requirement.new(">= 2.2.2".freeze)
s.rubygems_version = "2.7.3".freeze
s.rubygems_version = "3.1.4".freeze
s.summary = "Powerful and Opinionated tool for creating and managing RubyGem projects".freeze

if s.respond_to? :specification_version then
s.specification_version = 4
end

if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
s.add_runtime_dependency(%q<rake>.freeze, [">= 0"])
s.add_runtime_dependency(%q<git>.freeze, [">= 0"])
s.add_runtime_dependency(%q<nokogiri>.freeze, [">= 0"])
s.add_runtime_dependency(%q<github_api>.freeze, [">= 0"])
s.add_runtime_dependency(%q<highline>.freeze, [">= 0"])
s.add_runtime_dependency(%q<bundler>.freeze, [">= 0"])
s.add_runtime_dependency(%q<rdoc>.freeze, [">= 0"])
s.add_runtime_dependency(%q<builder>.freeze, [">= 0"])
s.add_runtime_dependency(%q<semver2>.freeze, [">= 0"])
s.add_runtime_dependency(%q<psych>.freeze, [">= 0"])
s.add_runtime_dependency(%q<kamelcase>.freeze, ["~> 0"])
s.add_development_dependency(%q<yard>.freeze, [">= 0"])
s.add_development_dependency(%q<bluecloth>.freeze, [">= 0"])
s.add_development_dependency(%q<cucumber>.freeze, [">= 0"])
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
else
s.add_dependency(%q<rake>.freeze, [">= 0"])
s.add_dependency(%q<git>.freeze, [">= 0"])
s.add_dependency(%q<nokogiri>.freeze, [">= 0"])
s.add_dependency(%q<github_api>.freeze, [">= 0"])
s.add_dependency(%q<highline>.freeze, [">= 0"])
s.add_dependency(%q<bundler>.freeze, [">= 0"])
s.add_dependency(%q<rdoc>.freeze, [">= 0"])
s.add_dependency(%q<builder>.freeze, [">= 0"])
s.add_dependency(%q<semver2>.freeze, [">= 0"])
s.add_dependency(%q<psych>.freeze, [">= 0"])
s.add_dependency(%q<kamelcase>.freeze, ["~> 0"])
s.add_dependency(%q<yard>.freeze, [">= 0"])
s.add_dependency(%q<bluecloth>.freeze, [">= 0"])
s.add_dependency(%q<cucumber>.freeze, [">= 0"])
s.add_dependency(%q<simplecov>.freeze, [">= 0"])
end
if s.respond_to? :add_runtime_dependency then
s.add_runtime_dependency(%q<rake>.freeze, [">= 0"])
s.add_runtime_dependency(%q<git>.freeze, [">= 0"])
s.add_runtime_dependency(%q<nokogiri>.freeze, [">= 0"])
s.add_runtime_dependency(%q<github_api>.freeze, [">= 0"])
s.add_runtime_dependency(%q<highline>.freeze, [">= 0"])
s.add_runtime_dependency(%q<bundler>.freeze, [">= 0"])
s.add_runtime_dependency(%q<rdoc>.freeze, [">= 0"])
s.add_runtime_dependency(%q<builder>.freeze, [">= 0"])
s.add_runtime_dependency(%q<semver2>.freeze, [">= 0"])
s.add_runtime_dependency(%q<psych>.freeze, [">= 0"])
s.add_runtime_dependency(%q<kamelcase>.freeze, ["~> 0"])
s.add_development_dependency(%q<yard>.freeze, [">= 0"])
s.add_development_dependency(%q<bluecloth>.freeze, [">= 0"])
s.add_development_dependency(%q<cucumber>.freeze, [">= 0"])
s.add_development_dependency(%q<simplecov>.freeze, [">= 0"])
else
s.add_dependency(%q<rake>.freeze, [">= 0"])
s.add_dependency(%q<git>.freeze, [">= 0"])
Expand Down
50 changes: 42 additions & 8 deletions lib/juwelier/generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ class NoGitHubRepoNameGiven < StandardError
class NoGitHubUser < StandardError
end
class GitInitFailed < StandardError
end
end
class GitRepoCreationFailed < StandardError
end

# Generator for creating a juwelier-enabled project
class Generator
class Generator
require 'juwelier/generator/options'
require 'juwelier/generator/application'

Expand All @@ -50,14 +50,15 @@ class Generator

attr_accessor :target_dir, :user_name, :user_email, :summary, :homepage,
:description, :project_name, :github_username,
:repo, :should_create_remote_repo,
:repo, :should_create_remote_repo,
:testing_framework, :documentation_framework,
:should_use_cucumber, :should_use_bundler, :should_use_semver,
:should_setup_rubyforge, :should_use_reek, :should_use_roodi,
:should_use_rvm, :should_be_rusty, :should_use_pry,
:development_dependencies, :production_dependencies,
:options, :require_ruby_version, :should_create_bin,
:git_remote, :use_readme_format, :should_use_pry,
:should_be_rusty
:git_remote, :use_readme_format


def initialize(options = {})
self.options = options
Expand Down Expand Up @@ -104,6 +105,7 @@ def initialize(options = {})
self.should_use_roodi = options[:use_roodi]
self.should_setup_rubyforge = options[:rubyforge]
self.should_use_bundler = options[:use_bundler]
self.should_use_rvm = options[:use_rvm]
self.should_use_semver = options[:use_semver]
self.require_ruby_version = options[:use_required_version]
self.should_create_bin = options[:create_bin]
Expand All @@ -113,7 +115,7 @@ def initialize(options = {})

development_dependencies << ["cucumber", ">= 0"] if should_use_cucumber

development_dependencies << ["bundler", "~> 1.0"]
development_dependencies << ["bundler", ">= 1.0"]
development_dependencies << ["juwelier", "~> #{Juwelier::Version::STRING}"]
development_dependencies << ["simplecov", ">= 0"]

Expand Down Expand Up @@ -145,6 +147,7 @@ def initialize(options = {})

def run
create_files
configure_project
create_version_control
$stdout.puts "Juwelier has prepared your gem in #{target_dir}"
if should_create_remote_repo
Expand All @@ -154,7 +157,7 @@ def run
end

def constant_name
self.project_name.camel
self.project_name.snake.camel
end

def extension_name
Expand All @@ -173,7 +176,7 @@ def file_name_prefix
end

def lib_dir ; 'lib' ; end
def bin_dir ; 'bin' ; end
def bin_dir ; 'bin' ; end
def rust_dir ; 'rust' ; end
def rust_src_dir ; rust_dir + '/src' ; end

Expand Down Expand Up @@ -212,6 +215,8 @@ def create_files
output_template_in_target 'LICENSE.txt'
output_template_in_target "README.#{use_readme_format}"
output_template_in_target '.document'
output_template_in_target '.ruby-version' unless should_use_rvm == false
output_template_in_target '.ruby-gemset' if should_use_rvm

mkdir_in_target lib_dir
unless should_be_rusty
Expand Down Expand Up @@ -297,6 +302,35 @@ def touch_in_target(destination)
$stdout.puts "\tcreate\t#{destination}"
end

def configure_project
FileUtils.cd target_dir do
execute_command "bundle install" if should_use_bundler
execute_command "rspec --init" if testing_framework == :rspec
end
end

# RVM function taken from https://rvm.io/workflow/scripting#scripting
RVM_FUNCTION = <<~SHELL_SCRIPT
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then
# First try to load from a user install
source "$HOME/.rvm/scripts/rvm"
elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then
# Then try to load from a root install
source "/usr/local/rvm/scripts/rvm"
fi
SHELL_SCRIPT

def execute_command(command)
# check if not false because nil (default) should not count as false in this case
if should_use_rvm != false
rvm_command = "bash -c '#{RVM_FUNCTION}\ncd .\n#{command}'"
system rvm_command
else
system command
end
end

def create_version_control
Dir.chdir(target_dir) do
begin
Expand Down
4 changes: 4 additions & 0 deletions lib/juwelier/generator/options.rb
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ def initialize(args)
self[:use_bundler] = v
end

o.on('--[no-]rvm', 'use RVM (Ruby enVironment Manager) for managing rubies/gemsets') do |v|
self[:use_rvm] = v
end

o.on('--[no-]semver', 'use semver for managining gem version') do |v|
self[:use_semver] = v
end
Expand Down
2 changes: 1 addition & 1 deletion lib/juwelier/generator/rspec_mixin.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ class Juwelier
class Generator
module RspecMixin
def self.extended(generator)
generator.development_dependencies << ["rspec", "~> 3.5.0"]
generator.development_dependencies << ["rspec", ">= 3.5.0"]
end

def default_task
Expand Down
1 change: 1 addition & 0 deletions lib/juwelier/templates/.ruby-gemset
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<%= project_name %>
2 changes: 2 additions & 0 deletions lib/juwelier/templates/.ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
<%= ENV['rvm_ruby_string'] %>

4 changes: 2 additions & 2 deletions lib/juwelier/version.rb
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
class Juwelier
module Version
MAJOR = 2
MINOR = 1
PATCH = 0
MINOR = 4
PATCH = 9
BUILD = nil

STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
Expand Down
6 changes: 3 additions & 3 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
require 'rake'
require 'shoulda'
#require 'redgreen'
require 'construct'
require 'test_construct'
require 'git'
require 'time'

Expand All @@ -39,7 +39,7 @@ def initialize
end

class Test::Unit::TestCase
include Construct::Helpers
include TestConstruct::Helpers

def tmp_dir
TMP_DIR
Expand Down Expand Up @@ -117,7 +117,7 @@ def self.rubyforge_command_context(description, &block)

if @command.respond_to? :repo
@repo = Object.new
@command.repo = @repo
@command.repo = @repo
end
end

Expand Down