class HerokuSan::Project

Attributes

config_file[R]
configuration[W]
options[R]

Public Class Methods

new(config_file = nil, options = {}) click to toggle source
# File lib/heroku_san/project.rb, line 8
def initialize(config_file = nil, options = {})
  @config_file = config_file
  @options = options
  @apps = []
end

Public Instance Methods

<<(*app) click to toggle source
# File lib/heroku_san/project.rb, line 34
def <<(*app)
  app.flatten.each do |a|
    @apps << a if all.include?(a)
  end
  self
end
[](stage) click to toggle source
# File lib/heroku_san/project.rb, line 30
def [](stage)
  stages[stage]
end
all() click to toggle source
# File lib/heroku_san/project.rb, line 26
def all
  stages.keys
end
apps() click to toggle source
# File lib/heroku_san/project.rb, line 41
def apps
  if @apps && !@apps.empty?
    @apps
  else
    @apps = if all.size == 1
      $stdout.puts "Defaulting to #{all.first.inspect} since only one app is defined"
      all
    else
      active_branch = self.git_active_branch
      all.select do |app|
        app == active_branch and ($stdout.puts("Defaulting to '#{app}' as it matches the current branch"); true)
      end
    end
  end
end
configuration() click to toggle source
# File lib/heroku_san/project.rb, line 18
def configuration
  @configuration ||= HerokuSan::Configuration.new(self)
end
create_config() click to toggle source
# File lib/heroku_san/project.rb, line 22
def create_config
  HerokuSan::Configuration.new(self).generate_config
end
each_app() { |self| ... } click to toggle source
# File lib/heroku_san/project.rb, line 57
def each_app
  raise NoApps if apps.empty?
  HerokuSan::Parser.new.merge_external_config!(configuration, stages.values)
  apps.each do |stage|
    yield self[stage]
  end
end
stages() click to toggle source
# File lib/heroku_san/project.rb, line 14
def stages
  @stages ||= configuration.stages
end