Sha256: 8635dce60099e78914fbb5080ce867b9692748d6d33a706108213f53dc30a4b3
Contents?: true
Size: 1.83 KB
Versions: 2
Compression:
Stored size: 1.83 KB
Contents
class Bard::CLI < Thor class Config def initialize project_name, path @project_name = project_name @servers = { local: Server.new( project_name, :local, false, "./", false, ), gubs: Server.new( project_name, :gubs, "gubito@gubs.pagekite.me", "Sites/#{project_name}", false, ), ci: Server.new( project_name, :ci, "jenkins@ci.botandrose.com:22022", "jobs/#{project_name}/workspace", false, ), staging: Server.new( project_name, :staging, "www@#{project_name}.botandrose.com:22022", ), } load_local_config! path end attr_reader :servers def server key, &block @servers[key] ||= Server.new(@project_name, key) @servers[key].instance_eval &block if block_given? @servers[key] end def data *paths if paths.length == 0 Array(@data) else @data = paths end end private def load_local_config! path instance_eval File.read(File.expand_path(path)) if File.exist?(path) end class Server < Struct.new(:project_name, :key, :ssh, :path, :ping, :gateway) def self.setting *fields fields.each do |field| define_method field do |*args| if args.length == 1 send :"#{field}=", args.first elsif args.length == 0 super() else raise ArgumentError end end end end setting :ssh, :path, :ping, :gateway def default_ping uri = URI.parse("ssh://#{ssh}") "http://#{uri.host}" end def path super || project_name end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
bard-0.43.0 | lib/bard/config.rb |
bard-0.42.0 | lib/bard/config.rb |