Module: Judo::Config

Extended by:
Config
Included in:
Config
Defined in:
lib/judo/config.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.allObject



62
63
64
# File 'lib/judo/config.rb', line 62

def self.all
  @@all ||= (dirs.map { |d| new(d) })
end

.currentObject



66
67
68
# File 'lib/judo/config.rb', line 66

def self.current
  all.detect { |d| Dir.pwd == d.dir or Dir.pwd =~ /^#{d.dir}\// }
end

.dirsObject



58
59
60
# File 'lib/judo/config.rb', line 58

def self.dirs
  Dir["#{Judo::Config.repo_dir}/*/config.json"].map { |d| File.dirname(d) }
end

Instance Method Details

#access_idObject



22
23
24
# File 'lib/judo/config.rb', line 22

def access_id
  judo_config["access_id"]
end

#access_secretObject



26
27
28
# File 'lib/judo/config.rb', line 26

def access_secret
  judo_config["access_secret"]
end

#check_versionObject



14
15
16
# File 'lib/judo/config.rb', line 14

def check_version
  abort "judo db is newer than the current gem - upgrade judo and try again" if get_db_version > db_version
end

#db_versionObject



5
6
7
# File 'lib/judo/config.rb', line 5

def db_version
  1
end

#default_options(pwd, dir = find_judo_dir(pwd)) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/judo/config.rb', line 70

def default_options(pwd, dir = find_judo_dir(pwd))
  puts "PWD: #{pwd}"
  puts "DIR: #{dir}"
  config = YAML.load File.read("#{dir}/config.yml")
  repo_dir = config["repo"] || File.dirname(dir)
  group_config = Dir["#{repo_dir}/*/config.json"].detect { |d| File.dirname(d) == pwd }
  {
    :judo_dir      => dir,
    :group         => group_config ? File.basename(File.dirname(group_config)) : nil,
    :repo          => repo_dir,
    :bucket        => config["s3_bucket"],
    :access_id     => config["access_id"],
    :access_secret => config["access_secret"]
  }.delete_if { |key,value| value.nil? }
rescue Object => e
  puts e.inspect
  {}
end

#ec2Object



34
35
36
# File 'lib/judo/config.rb', line 34

def ec2
  @ec2 ||= get_ec2(access_id, access_secret)
end

#find_judo_dir(check) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
# File 'lib/judo/config.rb', line 89

def find_judo_dir(check)
  if check == "/"
    if File.exists?("#{ENV['HOME']}/.judo")
      "#{ENV['HOME']}/.judo"
    else
      nil
    end
  else
    File.exists?(check + "/.judo") ? check + "/.judo" : find_judo_dir(File.dirname(check))
  end
end

#get_db_versionObject



9
10
11
12
# File 'lib/judo/config.rb', line 9

def get_db_version
  version = @sdb.get_attributes("judo_config", "judo")[:attributes]["dbversion"]
  version and version.first.to_i or db_version
end

#get_ec2(aws_id, aws_key) ⇒ Object



30
31
32
# File 'lib/judo/config.rb', line 30

def get_ec2(aws_id, aws_key)
  Aws::Ec2.new(aws_id, aws_key, :logger => Logger.new(nil))
end

#get_sdb(aws_id, aws_key) ⇒ Object



107
108
109
# File 'lib/judo/config.rb', line 107

def get_sdb(aws_id, aws_key)
  Aws::SdbInterface.new(aws_id, aws_key, :logger => Logger.new(nil))
end

#judo_configObject

def create_security_group

  ## EC2 create_security_group
  ec2.create_security_group('judo', 'Judo')
  ## EC2 authorize_security_group
  ec2.authorize_security_group_IP_ingress("judo", 22, 22,'tcp','0.0.0.0/0')
rescue Aws::AwsError
end


46
47
48
# File 'lib/judo/config.rb', line 46

def judo_config
  @config ||= read_judo_config
end

#judo_config_fileObject



50
51
52
# File 'lib/judo/config.rb', line 50

def judo_config_file
  "#{judo_dir}/config.yml"
end

#judo_dirObject



54
55
56
# File 'lib/judo/config.rb', line 54

def judo_dir
  @judo_dir ||= find_judo_dir(Dir.pwd) || abort("fatal: Not a judo repository (or any of the parent directories): .judo\nrun commands from the judo repository or type 'judo init' to setup the current directory as a new judo repository")
end

#read_judo_configObject



101
102
103
104
105
# File 'lib/judo/config.rb', line 101

def read_judo_config
  YAML.load File.read(judo_config_file)
rescue Errno::ENOENT
  {}
end

#repo_dirObject



18
19
20
# File 'lib/judo/config.rb', line 18

def repo_dir
  judo_config["repo"] || File.dirname(judo_dir)
end

#s3Object



117
118
119
# File 'lib/judo/config.rb', line 117

def s3
  @s3 ||= Aws::S3.new(access_id, access_secret, :logger => Logger.new(nil))
end

#s3_bucketObject



121
122
123
# File 'lib/judo/config.rb', line 121

def s3_bucket
  @s3_bucket ||= s3.bucket(judo_config["s3_bucket"])
end

#s3_put(k, file) ⇒ Object



129
130
131
# File 'lib/judo/config.rb', line 129

def s3_put(k, file)
  s3_bucket.put(k, file)
end

#s3_url(k) ⇒ Object



125
126
127
# File 'lib/judo/config.rb', line 125

def s3_url(k)
  Aws::S3Generator::Key.new(s3_bucket, k).get
end

#sdbObject



111
112
113
114
115
# File 'lib/judo/config.rb', line 111

def sdb
  @sdb ||= get_sdb(access_id, access_secret)
#      @version_ok ||= check_version
  @sdb
end