module GenericGem
Constants
- VERSION
Public Class Methods
add_bash_scripts(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 158 def self.add_bash_scripts(gem_name) puts '-------------------' puts 'Adding Bash scripts' system("cp #{ENV['DIR_MAIN']}/lib/files_to_add/*.sh #{gem_name}") puts '----------------------------------------------' puts "Adding 'gem uninstall' command to Bash scripts" str_old = '# uninstall' str_new = "gem uninstall #{gem_name}" StringInFile.replace(str_old, str_new, "#{gem_name}/code_test.sh") StringInFile.replace(str_old, str_new, "#{gem_name}/gem_test.sh") StringInFile.replace(str_old, str_new, "#{gem_name}/gem_install.sh") StringInFile.replace(str_old, str_new, "#{gem_name}/gem_console.sh") end
add_gem_dep(gem_name, gem_dep)
click to toggle source
# File lib/generic_gem.rb, line 108 def self.add_gem_dep(gem_name, gem_dep) puts '----------------------------------------' puts "Adding #{gem_dep} development dependency" str1 = "spec.add_development_dependency 'rspec'" str2 = "\n spec.add_development_dependency '#{gem_dep}'" LineContaining.add_after(str1, str2, "#{gem_name}/#{gem_name}.gemspec") end
add_rakefile(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 146 def self.add_rakefile(gem_name) puts '-------------------' puts 'Adding the Rakefile' system("cp #{ENV['DIR_MAIN']}/lib/files_to_add/Rakefile #{gem_name}") end
add_readme_todo(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 152 def self.add_readme_todo(gem_name) puts '--------------------------------' puts 'Adding the README-to_do.txt file' system("cp #{ENV['DIR_MAIN']}/lib/files_to_add/README-to_do.txt #{gem_name}") end
add_rubocop_yml(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 219 def self.add_rubocop_yml(gem_name) puts '-------------------' puts 'Adding .rubocop.yml' system("cp #{ENV['DIR_MAIN']}/lib/files_to_add/rubocop.yml #{gem_name}/.rubocop.yml") StringInFile.replace('gemspec_file', "#{gem_name}.gemspec", "#{gem_name}/.rubocop.yml") end
bundle_config()
click to toggle source
# File lib/generic_gem.rb, line 39 def self.bundle_config puts '----------------------------------------' puts "Setting up #{ENV['HOME']}/.bundle/config" puts 'Includes the Code of Conduct (CODE_OF_CONDUCT.md file) and MIT license (LICENSE.txt file)' puts 'Using rspec testing' system("mkdir -p #{ENV['HOME']}/.bundle") system("cp #{ENV['DIR_MAIN']}/lib/files_to_add/config #{ENV['HOME']}/.bundle/config") end
bundle_gem(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 48 def self.bundle_gem(gem_name) t1 = Thread.new do puts '--------------------' puts 'Creating the new gem' puts "bundle gem #{gem_name}" system("bundle gem #{gem_name}") end t1.join end
copy_credentials_sh(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 58 def self.copy_credentials_sh(gem_name) puts '----------------------' puts 'Copying credentials.sh' system("cp #{ENV['DIR_MAIN']}/credentials.sh #{gem_name}") end
create(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 8 def self.create(gem_name) puts '**********************' puts 'Welcome to Generic Gem' puts "GEM NAME: #{gem_name}" ENV['DIR_MAIN'] = File.expand_path('../../', __FILE__) bundle_config bundle_gem(gem_name) copy_credentials_sh(gem_name) enter_credentials_sh(gem_name) update_version(gem_name) update_gemspec(gem_name) add_gem_dep(gem_name, 'rubocop') add_gem_dep(gem_name, 'sandi_meter') add_gem_dep(gem_name, 'bundler-audit') add_gem_dep(gem_name, 'gemsurance') add_gem_dep(gem_name, 'ruby-graphviz') add_gem_dep(gem_name, 'simplecov') update_spec_helper(gem_name) update_tests(gem_name) update_bin_scripts(gem_name) add_rakefile(gem_name) add_readme_todo(gem_name) add_bash_scripts(gem_name) update_gitignore(gem_name) update_readme(gem_name) update_main_module(gem_name) add_rubocop_yml(gem_name) reset_git(gem_name) end
enter_credentials_sh(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 64 def self.enter_credentials_sh(gem_name) puts '-----------------------------------' puts 'Entering credentials (if necessary)' # Skip this step in Travis system("sh #{gem_name}/credentials.sh") if ENV['TRAVIS'] != 'true' end
reset_git(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 226 def self.reset_git(gem_name) puts '---------' puts 'Reset Git' system("cd #{gem_name} && git init") system("cd #{gem_name} && git add .") system("cd #{gem_name} && git commit -m 'Initial commit'") end
update_bin_scripts(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 139 def self.update_bin_scripts(gem_name) puts '----------------------------------' puts 'Updating bin/console and bin/setup' ReplaceQuotes.update("#{gem_name}/bin/console") system("chmod +x #{gem_name}/bin/*") end
update_gemspec(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 81 def self.update_gemspec(gem_name) puts '-----------------------------------------------------' puts "Filling in the gem description in #{gem_name}.gemspec" StringInFile.replace('TODO: Write a longer description or delete this line.', 'GENERIC DESCRIPTION', "#{gem_name}/#{gem_name}.gemspec") StringInFile.replace('%q{GENERIC DESCRIPTION}', "'GENERIC DESCRIPTION'", "#{gem_name}/#{gem_name}.gemspec") puts '-------------------------------------------------' puts "Filling in the gem summary in #{gem_name}.gemspec" StringInFile.replace('TODO: Write a short summary, because Rubygems requires one.', 'GENERIC SUMMARY', "#{gem_name}/#{gem_name}.gemspec") StringInFile.replace('%q{GENERIC SUMMARY}', "'GENERIC SUMMARY'", "#{gem_name}/#{gem_name}.gemspec") puts '---------------------------------------------------' puts "Updating #{gem_name}.gemspec for RuboCop compliance" ReplaceQuotes.update("#{gem_name}/#{gem_name}.gemspec") StringInFile.replace("'\\x0'", '"\\x0"', "#{gem_name}/#{gem_name}.gemspec") puts '----------------------------------------------------' puts "Updating #{gem_name}.gemspec to remove excess spaces" while StringInFile.present(' =', "#{gem_name}/#{gem_name}.gemspec") StringInFile.replace(' =', ' =', "#{gem_name}/#{gem_name}.gemspec") end puts '------------------------------------------------------------------' puts "Updating #{gem_name}.gemspec to add empty line after magic comment" LineContaining.add_after('# coding: utf-8', '', "#{gem_name}/#{gem_name}.gemspec") end
update_gitignore(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 173 def self.update_gitignore(gem_name) puts '----------------------------' puts 'Updating the .gitignore file' puts 'Adding tmp* and .DS_Store' open("#{gem_name}/.gitignore", 'a') do |f| f << "\nlog/" f << "\ntmp*" f << "\n.DS_Store" f << "\n*.gem" end end
update_main_module(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 206 def self.update_main_module(gem_name) puts '--------------------------------------------------------------' puts "Updating #{gem_name}/lib/#{gem_name}.rb to comply with RuboCop" ReplaceQuotes.update("#{gem_name}/lib/#{gem_name}.rb") StringInFile.replace('module', "#\nmodule", "#{gem_name}/lib/#{gem_name}.rb") puts '-------------------------------------------------------------------------------' puts "Adding the suggestion of using a class or module to the lib/#{gem_name}.rb file" open("#{gem_name}/lib/#{gem_name}.rb", 'a') do |f| f << "# Your new gem is a module by default. You may wish to use a class instead.\n" end end
update_readme(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 185 def self.update_readme(gem_name) puts '---------------------------' puts 'Updating the README.md file' t1 = Thread.new do file_w = open("#{gem_name}/README.md", 'a') file_w.write("## Bash Scripts\n") file_w.write("### Testing this gem\n") file_w.write("After you download this source code, enter `sh gem_test.sh` to set up and test this gem.\n\n") file_w.write("### Testing this gem's source code\n") file_w.write("Enter `sh code_test.sh` to test the quality of this gem's source code.\n") file_w.write("### Running this gem in irb\n") file_w.write("Enter `sh gem_console.sh`.\n\n") file_w.write("### Installing this gem\n") file_w.write("Enter `sh gem_install.sh`.\n") file_w.write("### Testing the gem, source code, and installation process\n") file_w.write("Enter `sh all.sh` to run the gem_test.sh, code_test.sh, and gem_install.sh scripts.\n") file_w.close end t1.join end
update_spec_helper(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 116 def self.update_spec_helper(gem_name) puts '----------------------------' puts 'Updating spec/spec_helper.rb' file_new = "#{gem_name}/spec/spec_helper_new.rb" file_old = "#{gem_name}/spec/spec_helper.rb" open(file_new, 'a') do |f| f << "require 'simplecov'\n" f << "SimpleCov.start\n\n" f << File.read(file_old) end system("mv #{file_new} #{file_old}") ReplaceQuotes.update(file_old) end
update_tests(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 130 def self.update_tests(gem_name) puts '--------------------------------' puts 'Revising the initial rspec tests' StringInFile.replace('expect(false).to eq(true)', 'expect(true).to eq(true)', "#{gem_name}/spec/#{gem_name}_spec.rb") puts '----------------------------------------' puts 'Convering double quotes to single quotes' ReplaceQuotes.update("#{gem_name}/spec/#{gem_name}_spec.rb") end
update_version(gem_name)
click to toggle source
# File lib/generic_gem.rb, line 72 def self.update_version(gem_name) puts '----------------------' puts 'Initial version: 0.0.0' StringInFile.replace('0.1.0', '0.0.0', "#{gem_name}/lib/#{gem_name}/version.rb") ReplaceQuotes.update("#{gem_name}/lib/#{gem_name}/version.rb") StringInFile.replace('module', "#\nmodule", "#{gem_name}/lib/#{gem_name}/version.rb") StringInFile.replace("'0.0.0'", "'0.0.0'.freeze", "#{gem_name}/lib/#{gem_name}/version.rb") end