#!/usr/bin/env ruby
# Generate a rails app (using EDGE rails), set up a git repo for it, install GemsOnRails,
# haml, rspec, and make_resourceful
#
# USAGE: $0 some_app_name
#
# See http://github.com/foca/utility_scripts/ for the latest version
# Released under a WTFP license (http://sam.zoy.org/wtfpl/)
#RAILS_GIT_CHECKOUT = '/Users/patrickelder/Projects/Rails/git_clones/rails'
module Helpers
LINE = 80
def announcing(msg)
print msg
begin
yield
rescue
print "." * (LINE - msg.size - 8)
puts "\e[31m[FAILED]\e[0m"
Process.exit
return
end
print "." * (LINE - msg.size - 6)
puts "\e[32m[DONE]\e[0m"
end
def silent(command)
unless(system("#{command} &> /dev/null"))
raise "Command Failed"
end
end
def templates
{ :gitignore => %w[config/database.yml tmp/* log/*.log db/*.sqlite3] * "\n" }
end
def gitci(message)
silent 'git add .'
silent "git commit -m '#{message}'"
end
def braid(repo, dir, type="git")
silent "braid add #{repo} --type #{type} #{dir}"
silent "git merge braid/track"
end
def rake(task, args={})
args = args.map {|name,value| "#{name.to_s.upcase}=#{value}"}.join(" ")
silent "rake #{task} #{args}"
end
def gitsub(repo, dir)
silent "git submodule add #{repo} #{dir}"
end
end
if __FILE__ == $0
include Helpers
app_name = ARGV.first
#announcing "Updating EDGE rails (git pull)" do
# Dir.chdir(RAILS_GIT_CHECKOUT) { silent "git pull" }
#end
announcing "Creating application layout" do
silent "rails -d mysql '#{app_name}'"
end
Dir.chdir(app_name) do
announcing "Setting up rails app" do
silent "rm public/images/rails.png"
end
announcing "Creating databases" do
rake "db:create"
rake "db:create", :rails_env => "test"
end
announcing "Configuring git repo" do
silent "git init"
File.open(".gitignore", "w") {|f| f << templates[:gitignore] }
gitci "Basic rails app structure"
end
#announcing "Freezing rails" do
# rake "rails:freeze:gems"
# silent "git submodule add git://github.com/rails/rails.git vendor/rails"
# silent "git submodule init"
#end
announcing "Installing BackgrounDRB" do
silent "git submodule add git://github.com/gnufied/backgroundrb.git vendor/plugins/backgroundrb"
silent "git submodule init"
gitci "Installed backgroundrb"
end
announcing "Initializing BackgrounDRB" do
silent "rake backgroundrb:setup"
gitci "Initialized backgroundrb"
end
announcing "Installing RSpec" do
silent "git submodule add git://github.com/dchelimsky/rspec.git vendor/plugins/rspec"
silent "git submodule add git://github.com/dchelimsky/rspec-rails.git vendor/plugins/rspec-rails"
silent "git submodule init"
gitci "Installed rspec plugin"
end
announcing "Generating RSpec base files" do
silent "script/generate rspec"
gitci "Added RSpec base files"
end
end
end