lib/generic_app.rb
URL_TEMPLATE = 'https://github.com/jhsu802701/rails-20170811-165620-143.git'.freeze
require 'generic_app/version'
require 'string_in_file'
require 'line_containing'
require 'remove_double_blank'
DIR_MAIN = File.expand_path('../../', __FILE__)
DIR_PARENT = File.expand_path('../../../', __FILE__)
#
module GenericApp
# Create app, stick with SQLite database in development
def self.create_new(subdir_name, email, title)
t1 = Thread.new { self.git_clone(subdir_name) }
t1.join
self.remove_neutrino(subdir_name)
self.remove_heroku_name(subdir_name)
self.email_update(subdir_name, email)
self.remove_badges(subdir_name)
self.update_titles(subdir_name, title)
self.git_init(subdir_name)
self.print_end_msg(subdir_name)
end
def self.remove_heroku_name(subdir_name)
File.delete("#{subdir_name}/config/heroku_name.txt")
end
def self.remove_neutrino(subdir_name)
File.delete("#{subdir_name}/neutrino.sh")
end
def self.git_clone(subdir_name)
puts '------------------------------------'
puts 'Downloading the Generic App Template'
system("git clone #{URL_TEMPLATE} #{subdir_name}")
end
def self.email_update(subdir_name, email)
email_orig = 'somebody@rubyonracetracks.com'
path_of_email_1 = "#{subdir_name}/config/initializers/devise.rb"
path_of_email_2 = "#{subdir_name}/app/views/static_pages/contact.html.erb"
path_of_email_3 = "#{subdir_name}/test/integration/static_pages_test.rb"
StringInFile.replace(email_orig, email, path_of_email_1)
StringInFile.replace(email_orig, email, path_of_email_2)
StringInFile.replace(email_orig, email, path_of_email_3)
end
def self.remove_badges(subdir_name)
path_readme = "#{subdir_name}/README.md"
LineContaining.delete('[![CircleCI](https://circleci.com', path_readme)
LineContaining.delete('[![Dependency Status](https://gemnasium.com', path_readme)
LineContaining.delete('[![security](https://hakiri.io', path_readme)
LineContaining.delete('[![Code Climate](https://codeclimate.com', path_readme)
RemoveDoubleBlank.update(path_readme)
end
def self.update_titles(subdir_name, title)
array_files = []
array_files << "#{subdir_name}/README.md"
array_files << "#{subdir_name}/app/helpers/application_helper.rb"
array_files << "#{subdir_name}/app/views/layouts/_header.html.erb"
array_files << "#{subdir_name}/app/views/layouts/_footer.html.erb"
array_files << "#{subdir_name}/app/views/static_pages/home.html.erb"
array_files << "#{subdir_name}/test/helpers/application_helper_test.rb"
array_files << "#{subdir_name}/test/integration/static_pages_test.rb"
array_files.each do |f|
StringInFile.replace('Generic App Template', title, f)
StringInFile.replace('GENERIC APP TEMPLATE', title, f)
end
end
def self.git_init(subdir_name)
puts '-----------------------'
puts 'Removing old Git record'
system("cd #{subdir_name} && rm -rf .git")
system("cd #{subdir_name} && git init")
system("cd #{subdir_name} && git add .")
end
def self.print_end_msg(subdir_name)
puts '-------------------------'
puts 'Rails Neutrino timestamp:'
system("cd #{subdir_name} && cat config/rails_neutrino_timestamp.txt")
puts ''
puts "Your new app is at #{subdir_name}"
puts ''
puts 'Instructions on how to get started are in the file'
puts 'README-to_do.txt within your new app.'
end
end