#!/usr/bin/env ruby require 'yaml' require 'pathname' require 'rbconfig' require 'optparse' require 'ostruct' # configure database.yml # fetch required vendor plugins # usage ./init.rb -d database -u user -p pass opts = OpenStruct.new proj_name = Pathname.new( "." ).realpath.basename.to_s OptionParser.new { |o| o.banner = "Usage: #{$0} [options]" o.separator "" o.separator "Specific options:" opts.conf = "development" opts.adapter = "mysql" opts.host = "localhost" opts.database = "#{proj_name}_development" opts.user = "root" opts.pass = nil o.on( "-c S", "--config", "Select Configuration (development|test|production)" ){|conf|opts.conf = conf } o.on( "-a S", "--adapter", "Database Adapter" ){|adapter|opts.adapter = adapter } o.on( "-s S", "--shost", "Database Server Host" ){|host|opts.host = host } o.on( "-d S", "--database", "Configure Database" ){|db|opts.database = db } o.on( "-u S", "--user", "User Name" ){|user|opts.user = user } o.on( "-p S", "--password", "Password" ){|pass|opts.pass = pass } }.parse! dbpath = Pathname.new( "config/database.yml" ) if !dbpath.exist? File.open( dbpath, 'w' ) do |out| YAML.dump( {'development' => { 'adapter' => 'mysql', 'host' => 'localhost', 'database' => "#{proj_name}_development", 'username' => 'root', 'password' => nil }, 'test' => { 'adapter' => 'mysql', 'host' => 'localhost', 'database' => "#{proj_name}_test", 'username' => 'root', 'password' => nil }, 'production' => { 'adapter' => 'mysql', 'host' => 'localhost', 'database' => "#{proj_name}_production", 'username' => 'root', 'password' => nil } }, out ) end end dbconf = YAML.load_file( dbpath ) if( !dbconf[opts.conf] ) dbconf[opts.conf] = Hash.new end dbconf[opts.conf]['adapter'] = opts.adapter dbconf[opts.conf]['host'] = opts.host dbconf[opts.conf]['database'] = opts.database dbconf[opts.conf]['username'] = opts.user dbconf[opts.conf]['password'] = opts.pass File.open( dbpath, 'w' ) do |out| YAML.dump( dbconf, out ) end