Sha256: d7d6a7cf9cb372d6d1adcce9c29980983120685a3d825ecdeb9b3887b96bfb43

Contents?: true

Size: 1.52 KB

Versions: 31

Compression:

Stored size: 1.52 KB

Contents

module Geordi
  
  attr_accessor :stage, :user, :server, :path, :env, :root
  
  def catching_errors(&block)
    begin
      yield
    rescue Exception => e
      $stderr.puts e.message
      exit 1
    end
  end
  
  def retrieve_data!
    @stage = ARGV.shift
    @root   = find_project_root!
    
    {}.tap do |data|
      @lines = if stage
        deploy_file = Dir['config/deploy/*.rb'].find do |file|
          file.match(/\/#{stage}.rb$/)
        end
        deploy_file or raise "Stage does not exist: #{stage}"
    
        File.open(deploy_file).readlines
      else
        []
      end
      @lines += File.open("config/deploy.rb").readlines
    
      @user   = retrieve! "user", /^set :user,/
      @server = retrieve! "server", /^server /
      @path   = retrieve!("deploy_to", /^set :deploy_to,/) + '/current'
      @env    = retrieve!("environment", /^set :rails_env,/, 'production')
    
      # fix
      %w[user server path env].each do |attr|
        self.send(attr).gsub! /#\{site_id\}/, stage.sub(/_.*/, '')
      end
    end
  end
  
  def find_project_root!
    current = Dir.pwd
    until (File.exists? 'Capfile')
      Dir.chdir '..'
      raise 'Call me from inside a Rails project!' if current == Dir.pwd
      current = Dir.pwd
    end
    current
  end
  
  def retrieve!(name, regex, default = nil)
    if line = @lines.find{ |line| line =~ regex }
      line.match(/["'](.*)["']/)
      $1
    elsif default
      default
    else
      raise "Could not find :#{name} for stage '#{stage}'!\nAborting..."
    end
  end
  
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
geordi-0.14.6 lib/geordi.rb
geordi-0.14.5 lib/geordi.rb
geordi-0.14.4 lib/geordi.rb
geordi-0.14.3 lib/geordi.rb
geordi-0.14.2 lib/geordi.rb
geordi-0.14.1 lib/geordi.rb
geordi-0.14.0 lib/geordi.rb
geordi-0.13.3 lib/geordi.rb
geordi-0.13.2 lib/geordi.rb
geordi-0.13.1 lib/geordi.rb
geordi-0.13.0 lib/geordi.rb
geordi-0.12.8 lib/geordi.rb
geordi-0.12.7 lib/geordi.rb
geordi-0.12.6 lib/geordi.rb
geordi-0.12.5 lib/geordi.rb
geordi-0.12.4 lib/geordi.rb
geordi-0.12.3 lib/geordi.rb
geordi-0.12.2 lib/geordi.rb
geordi-0.12.1 lib/geordi.rb
geordi-0.12.0 lib/geordi.rb