class Pushapp::Config
Attributes
file[R]
remotes[R]
Public Class Methods
new(configuration_file = nil)
click to toggle source
# File lib/pushapp/config.rb, line 26 def initialize(configuration_file = nil) @file = configuration_file || Pushapp::DEFAULT_CONFIG_LOCATION @remotes = [] @group_options = {} @group_name = nil end
parse(configuration_file = nil)
click to toggle source
# File lib/pushapp/config.rb, line 10 def self.parse(configuration_file = nil) require 'pushapp/tasks/base' require 'pushapp/tasks/script' require 'pushapp/tasks/rake' require 'pushapp/tasks/upstart' require 'pushapp/tasks/nginx_export' require 'pushapp/tasks/foreman_export' require 'pushapp/tasks/unicorn_signal' require 'pushapp/tasks/whenever_update' config = self.new(configuration_file) config.instance_eval(File.read(config.file)) config end
register_task(name, klass)
click to toggle source
# File lib/pushapp/config.rb, line 90 def self.register_task name, klass @@known_tasks[name.to_s] = klass end
Public Instance Methods
group(group_name, options = {}, &block)
click to toggle source
# File lib/pushapp/config.rb, line 49 def group(group_name, options = {}, &block) @group_name = group_name.to_s @group_options = options instance_eval &block if block_given? @group_name = nil @group_options = {} end
known_task(name)
click to toggle source
# File lib/pushapp/config.rb, line 61 def known_task name task = @@known_tasks[name.to_s] raise "Unkown task with name '#{name}'. Forget to register task?" unless task task end
on(event, &block)
click to toggle source
# File lib/pushapp/config.rb, line 57 def on event, &block remotes.each {|r| r.on(event, &block) if block_given? } end
remote(name, location, options = {})
click to toggle source
# File lib/pushapp/config.rb, line 33 def remote(name, location, options = {}) name = name.to_s if remotes.any? {|r| r.location == location} raise "Can't have multiple remotes with same location" end full_name = [name, @group_name].compact.join('-') if remotes.any? {|r| r.full_name == full_name} raise "Can't have multiple remotes with same full_name. Remote '#{full_name}' already exists" end options = Pushapp.rmerge(@group_options, options) remotes << Pushapp::Remote.new(name, @group_name, location, self, options) end
remotes_grouped_by(group)
click to toggle source
# File lib/pushapp/config.rb, line 72 def remotes_grouped_by(group) group = group.to_s remotes.select {|r| r.group == group } end
remotes_matched(group_or_name)
click to toggle source
# File lib/pushapp/config.rb, line 77 def remotes_matched(group_or_name) case group_or_name when 'all' remotes when String remotes.select {|r| r.full_name == group_or_name || r.group == group_or_name} when Array group_or_name.map {|n| remotes_matched(n)}.flatten.compact.uniq else [] end end
remotes_named_by(name)
click to toggle source
# File lib/pushapp/config.rb, line 67 def remotes_named_by(name) name = name.to_s remotes.select {|r| r.full_name == name } end