Module: GenericGem
- Defined in:
- lib/generic_gem.rb,
lib/generic_gem/version.rb
Constant Summary collapse
- VERSION =
'0.1.2'.freeze
Class Method Summary collapse
- .add_bash_scripts(gem_name) ⇒ Object
- .add_gem_dep(gem_name, gem_dep) ⇒ Object
- .add_rakefile(gem_name) ⇒ Object
- .add_readme_todo(gem_name) ⇒ Object
- .add_rubocop_yml(gem_name) ⇒ Object
- .bundle_config ⇒ Object
- .bundle_gem(gem_name) ⇒ Object
- .copy_credentials_sh(gem_name) ⇒ Object
- .create(gem_name) ⇒ Object
- .enter_credentials_sh(gem_name) ⇒ Object
- .reset_git(gem_name) ⇒ Object
- .update_bin_scripts(gem_name) ⇒ Object
- .update_gemspec(gem_name) ⇒ Object
- .update_gitignore(gem_name) ⇒ Object
- .update_main_module(gem_name) ⇒ Object
- .update_readme(gem_name) ⇒ Object
- .update_spec_helper(gem_name) ⇒ Object
- .update_tests(gem_name) ⇒ Object
- .update_version(gem_name) ⇒ Object
Class Method Details
.add_bash_scripts(gem_name) ⇒ Object
158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# 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) ⇒ Object
108 109 110 111 112 113 114 |
# 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) ⇒ Object
146 147 148 149 150 |
# 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) ⇒ Object
152 153 154 155 156 |
# 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) ⇒ Object
219 220 221 222 223 224 |
# 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 ⇒ Object
39 40 41 42 43 44 45 46 |
# 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) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# 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) ⇒ Object
58 59 60 61 62 |
# 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) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# 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.('../../', __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) ⇒ Object
64 65 66 67 68 69 70 |
# 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) ⇒ Object
226 227 228 229 230 231 232 |
# 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) ⇒ Object
139 140 141 142 143 144 |
# 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) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# 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) ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 |
# 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) ⇒ Object
206 207 208 209 210 211 212 213 214 215 216 217 |
# 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) ⇒ Object
185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# 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) ⇒ Object
116 117 118 119 120 121 122 123 124 125 126 127 128 |
# 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) ⇒ Object
130 131 132 133 134 135 136 137 |
# 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) ⇒ Object
72 73 74 75 76 77 78 79 |
# 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 |