volley 0.1.0.alpha10 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/volley CHANGED
@@ -93,8 +93,12 @@ module Volley
93
93
  Volley::Log.debug "key:value: #{kvs.join(",")}"
94
94
  end
95
95
 
96
- Volley::Log.info "processing '#{plan}' plan for '#{desc}'"
96
+ #Volley::Log.info "processing '#{plan}' plan for '#{desc}'"
97
97
  Volley.process(plan, desc, args)
98
+ rescue Interrupt
99
+ Volley::Log.info "interrupted"
100
+ rescue SystemExit
101
+ Volley::Log.info "exited"
98
102
  rescue => e
99
103
  Volley::Log.error "error: #{e.message} at #{e.backtrace.first}"
100
104
  if debug
@@ -65,14 +65,11 @@ project :volley do
65
65
  end
66
66
  end
67
67
  end
68
- plan :remote do
68
+ plan :meta, :remote => false do
69
69
  default do
70
- pub = Volley::Dsl.publisher
71
- (pr, br, vr) = args.descriptor.get
72
- vr ||= 'latest'
73
- vf = pub.volleyfile(:project => pr, :branch => br, :version => vr)
74
- load vf
75
- volley :project => "volley", :plan => "list"
70
+ Volley.meta.projects.each do |k, v|
71
+ puts "#{k} => #{v}"
72
+ end
76
73
  end
77
74
  end
78
75
  end
@@ -16,15 +16,15 @@ module Volley
16
16
  end
17
17
 
18
18
  def call
19
- Volley::Log.debug ".. .. #@name"
19
+ Volley::Log.debug "## #{project.name}:#{@plan.name}[#{@stage}]##@name"
20
20
  self.instance_eval &@block if @block
21
21
  end
22
22
 
23
- delegate :project, :args, :files, :file, :attributes, :log, :arguments, :argv, :branch, :version, :action,
23
+ delegate :project, :args, :files, :file, :attributes, :log, :arguments, :argv, :branch, :version, :action, :volley,
24
24
  :to => :plan
25
25
 
26
26
  def command(cmd)
27
- @plan.shellout(cmd)
27
+ plan.shellout(cmd)
28
28
  end
29
29
  end
30
30
  end
@@ -4,6 +4,7 @@ module Volley
4
4
  module Dsl
5
5
  class Plan
6
6
  attr_accessor :argv
7
+ attr_reader :name
7
8
  attr_reader :project
8
9
  attr_reader :stages
9
10
  attr_reader :arguments
@@ -46,15 +47,15 @@ module Volley
46
47
 
47
48
  def call(options={ })
48
49
  @mode = @name.to_s =~ /deploy/i ? :deploy : :publish
49
- Volley::Log.debug "## #{@project.name} : #@name"
50
+ Volley::Log.debug "## #{@project.name}:#@name (#@mode)"
50
51
  @origargs = options[:args]
51
52
  data = @origargs
52
53
 
53
54
  process_arguments(data)
54
55
 
55
56
  raise "descriptor must be specified" if @attributes.remote && !args.descriptor
56
- #raise "cannot determine branch" unless branch
57
- #raise "cannot determine version" unless version
57
+
58
+ Volley::Log.info ">> #{@project.name}:#@name"
58
59
 
59
60
  run_actions
60
61
  [branch, version].join(":")
@@ -101,7 +102,9 @@ module Volley
101
102
  end
102
103
 
103
104
  def branch
104
- (args.descriptor ? args.descriptor.branch : nil) || source.branch || nil
105
+ return args.descriptor.branch if args.descriptor
106
+ return source.branch if publishing?
107
+ nil
105
108
  end
106
109
 
107
110
  def version
@@ -146,29 +149,12 @@ module Volley
146
149
  argument :output, :attr => true, :default => tf, :convert => :boolean
147
150
  end
148
151
 
149
- def default(&block)
150
- action(:default, :main, &block)
151
- end
152
-
153
152
  def action(name, stage=:main, &block)
154
153
  @stages[stage].action(name, :plan => self, :stage => stage, &block)
155
- #n = name.to_sym
156
- #@actions[stage] << { :name => n, :stage => stage, :block => block }
157
154
  end
158
155
 
159
- def file(file)
160
- @files << file
161
- end
162
-
163
- def files(*list)
164
- list = [*list].flatten
165
- if @files.count > 0 && list.count > 0
166
- Volley::Log.warn "overriding file list"
167
- Volley::Log.debug "files: #{@files.inspect}"
168
- Volley::Log.debug "new: #{list.inspect}"
169
- end
170
- @files = list if list.count > 0
171
- @files
156
+ def default(&block)
157
+ action(:default, :main, &block)
172
158
  end
173
159
 
174
160
  def push(&block)
@@ -179,22 +165,38 @@ module Volley
179
165
  Volley::Dsl::PullAction.new(:pull_dummy, :plan => self, :stage => :main, &block)
180
166
  end
181
167
 
182
- def volley(opts={ })
168
+ def volley(plan, options={}, &block)
183
169
  o = {
184
- :project => @project.name,
185
- :plan => "pull",
186
- }.merge(opts)
170
+ :run => plan,
171
+ :plan => self,
172
+ :stage => :main,
173
+ :descriptor => args.descriptor,
174
+ :args => {},
175
+ }.merge(options)
176
+ @stages[:main].add Volley::Dsl::VolleyAction.new("volley-#{plan}", o)
177
+ end
187
178
 
188
- action "volley-#{o[:project]}-#{o[:plan]}" do
189
- options = { :plan => "#{project}:#{plan}", :descriptor => "#{project}@#{branch}:#{version}", :args => @origargs }.merge(o)
190
- Volley.process(options)
191
- end
179
+ def file(file)
180
+ @files << file
181
+ end
182
+
183
+ def files(*list)
184
+ list = [*list].flatten
185
+ list.each {|e| file e} if list.count > 0
186
+ #if @files.count > 0 && list.count > 0
187
+ # Volley::Log.warn "overriding file list"
188
+ # Volley::Log.debug "files: #{@files.inspect}"
189
+ # Volley::Log.debug "new: #{list.inspect}"
190
+ #end
191
+ #@files = list if list.count > 0
192
+ #@files
193
+ @files
192
194
  end
193
195
 
194
196
  def command(*args)
195
197
  name = args.join(" ").parameterize.to_sym
196
198
  action name do
197
- shellout(*args)
199
+ plan.shellout(*args)
198
200
  end
199
201
  end
200
202
 
@@ -215,11 +217,10 @@ module Volley
215
217
 
216
218
  private
217
219
  def process_arguments(raw)
218
- Volley::Log.debug ".. process arguments: #{raw.inspect}"
219
220
  @argv = raw
220
221
  raw.each do |k, v|
221
222
  if @arguments[k.to_sym]
222
- Volley::Log.debug ".. .. setting argument: #{k} = #{v}"
223
+ Volley::Log.debug ".. argument: #{k} = #{v}"
223
224
  @arguments[k.to_sym].value = v
224
225
  end
225
226
  end
@@ -12,10 +12,10 @@ module Volley
12
12
  raise "stage instance must be set" unless @stage
13
13
  raise "plan instance must be set" unless @plan
14
14
 
15
- @plan.action :files, :post do
15
+ @plan.action :files, :main do
16
16
  raise "branch(#{branch}) and version(#{version}) must be specified" unless branch && version
17
17
 
18
- list = yield
18
+ list = yield if block
19
19
  list = [*list].flatten
20
20
  # use #exists? so it can work for directories
21
21
  notfound = list.reject { |f| File.exists?(f) }
@@ -32,8 +32,8 @@ module Volley
32
32
  Dir.mkdir(path)
33
33
  dir = Dir.pwd
34
34
 
35
+ Volley::Log.debug ".. files: #{files.inspect}"
35
36
  files.each do |art|
36
- Volley::Log.debug "art:#{art}"
37
37
  next unless art
38
38
  if art =~ /^\// && art !~ /^#{dir}/
39
39
  # file is full path and not in current directory
@@ -47,7 +47,6 @@ module Volley
47
47
  end
48
48
 
49
49
  begin
50
- Volley::Log.debug "pack file: #{source} => #{dest}"
51
50
  FileUtils.mkdir_p(File.dirname(dest))
52
51
  if File.directory?(source)
53
52
  FileUtils.cp_r(source, dest)
@@ -14,7 +14,6 @@ module Volley
14
14
  end
15
15
 
16
16
  def call
17
- Volley::Log.debug ".. #@name"
18
17
  @actions.each do |action|
19
18
  action.call
20
19
  end
@@ -0,0 +1,36 @@
1
+ require "volley/dsl/action"
2
+
3
+ module Volley
4
+ module Dsl
5
+ class VolleyAction < Action
6
+ def initialize(name, options={}, &block)
7
+ @name = name.to_sym
8
+ @stage = options.delete(:stage)
9
+ @plan = options.delete(:plan)
10
+ @run = options.delete(:run)
11
+ @desc = options.delete(:descriptor)
12
+ @desc ||= @plan.args.descriptor
13
+ @args = options.delete(:args)
14
+
15
+ @options = {
16
+ }.merge(options)
17
+
18
+ raise "stage instance must be set" unless @stage
19
+ raise "plan instance must be set" unless @plan
20
+
21
+ @block = Proc.new do
22
+ desc = @desc || @plan.args.descriptor
23
+ plan = @run
24
+ (runpr, plan) = plan.split(/\:/) if @run =~ /\:/
25
+ (project, branch, version) = desc.get
26
+ Volley.process("#{runpr}:#{plan}", "#{runpr}@#{branch}:#{version}", :args => args)
27
+ end
28
+
29
+ #@plan.action "volley-#@run" do
30
+ # puts "volley run #@run #@desc"
31
+ # Volley.process(@run, @desc.to_s, :args => args)
32
+ #end
33
+ end
34
+ end
35
+ end
36
+ end
data/lib/volley/meta.rb CHANGED
@@ -31,5 +31,9 @@ module Volley
31
31
  version = Volley::Dsl.publisher.latest_version(project, branch) if version.nil? || version == 'latest'
32
32
  self[project] == "#{branch}:#{version}"
33
33
  end
34
+
35
+ def projects
36
+ @data[:projects]
37
+ end
34
38
  end
35
39
  end
@@ -10,28 +10,36 @@ module Volley
10
10
  end
11
11
 
12
12
  def projects
13
- files[:desc].keys
13
+ r = files[:desc].keys || [] rescue []
14
+ Volley::Log.info "could not find projects" unless r.count > 0
15
+ r
14
16
  rescue => e
15
17
  Volley::Log.warn "error getting project list from publisher: #{e.message} at #{e.backtrace.first}"
16
18
  []
17
19
  end
18
20
 
19
21
  def branches(pr)
20
- files[:desc][pr].keys
22
+ r = files[:desc][pr].keys || [] rescue []
23
+ Volley::Log.info "could not find #{pr}" unless r.count > 0
24
+ r
21
25
  rescue => e
22
26
  Volley::Log.warn "error getting branch list from publisher: #{e.message}"
23
27
  []
24
28
  end
25
29
 
26
30
  def versions(pr, br)
27
- files[:desc][pr][br].keys
31
+ r = files[:desc][pr][br].keys || [] rescue []
32
+ Volley::Log.info "could not find #{pr}@#{br}" unless r.count > 0
33
+ r
28
34
  rescue => e
29
35
  Volley::Log.warn "error getting version list from publisher: #{e.message}"
30
36
  []
31
37
  end
32
38
 
33
39
  def contents(pr, br, vr)
34
- files[:desc][pr][br][vr].map {|e| e.gsub("#{pr}/#{br}/#{vr}/","")}
40
+ r = files[:desc][pr][br][vr].map {|e| e.gsub("#{pr}/#{br}/#{vr}/","")} || [] rescue []
41
+ Volley::Log.info "could not find #{pr}@#{br}:#{vr}" unless r.count > 0
42
+ r
35
43
  rescue => e
36
44
  Volley::Log.warn "error getting contents list from publisher: #{e.message}"
37
45
  []
@@ -44,7 +52,7 @@ module Volley
44
52
  def delete_project(project)
45
53
  Volley::Log.info "delete_project #{project}"
46
54
  dir = @connection.directories.get(@bucket)
47
- dir.files.select{|e| e.key =~ /^#{project}\//}.each do |f|
55
+ dir.files.select { |e| e.key =~ /^#{project}\// }.each do |f|
48
56
  Volley::Log.info "- #{f.key}"
49
57
  f.destroy
50
58
  end
@@ -58,9 +66,9 @@ module Volley
58
66
  protected
59
67
 
60
68
  def load_configuration
61
- @key = requires(:aws_access_key_id)
62
- @secret = requires(:aws_secret_access_key)
63
- @bucket = requires(:bucket)
69
+ @key = requires(:aws_access_key_id)
70
+ @secret = requires(:aws_secret_access_key)
71
+ @bucket = requires(:bucket)
64
72
  connect
65
73
  end
66
74
 
@@ -68,14 +76,14 @@ module Volley
68
76
  file = File.basename(file)
69
77
  dest = "#{dir}/#{file}"
70
78
  #log "-> #@bucket/#{path}"
71
- f = root.files.create(:key => dest, :body => contents, :public => true)
79
+ f = root.files.create(:key => dest, :body => contents, :public => true)
72
80
  log "=> #{f.public_url.gsub("%2F", "/")}"
73
81
  dest
74
82
  end
75
83
 
76
84
  def pull_file(dir, file, localdir=nil)
77
85
  remote = "#{dir}/#{file}"
78
- f = root.files.get(remote)
86
+ f = root.files.get(remote)
79
87
  raise ArtifactMissing, "missing: #{remote}" unless f
80
88
 
81
89
  contents = f.body
@@ -103,16 +111,16 @@ module Volley
103
111
  end
104
112
 
105
113
  def files
106
- hash = {:desc => {}, :all => {}, :latest => {}}
107
- @connection.directories.get(@bucket).files.collect{|e| e.key}.each do |e|
108
- (pr, br, vr) = e.split(/\//)
109
- hash[:desc][pr] ||= {}
110
- hash[:desc][pr][br] ||= {}
114
+ hash = { :desc => { }, :all => { }, :latest => { } }
115
+ @connection.directories.get(@bucket).files.collect { |e| e.key }.each do |e|
116
+ (pr, br, vr) = e.split(/\//)
117
+ hash[:desc][pr] ||= { }
118
+ hash[:desc][pr][br] ||= { }
111
119
  hash[:desc][pr][br][vr] ||= []
112
120
  hash[:desc][pr][br][vr] << e
113
- hash[:all] ||= {}
114
- hash[:latest] ||= {}
115
- v = "#{pr}/#{br}/#{vr}"
121
+ hash[:all] ||= { }
122
+ hash[:latest] ||= { }
123
+ v = "#{pr}/#{br}/#{vr}"
116
124
  #hash[:latest]["#{pr}/#{br}"] ||= latest(pr, br)
117
125
  hash[:all][v] = hash["latest"] == v
118
126
  end
@@ -4,7 +4,8 @@ unless defined?(Volley::Version)
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
6
  TINY = 0
7
- STRING = [MAJOR, MINOR, TINY].join('.')
7
+ TAG = nil
8
+ STRING = [MAJOR, MINOR, TINY, TAG].compact.join('.')
8
9
  end
9
10
  end
10
11
  end
data/lib/volley.rb CHANGED
@@ -45,7 +45,8 @@ module Volley
45
45
  # plan is defined
46
46
 
47
47
  if plan == "deploy" && Volley.meta.check(project, branch, version) && !args[:force]
48
- raise "project #{project} is already #{branch}:#{version}"
48
+ Volley::Log.info "project #{project} is already #{branch}:#{version}"
49
+ return
49
50
  end
50
51
 
51
52
  args[:descriptor] = desc
@@ -73,7 +74,7 @@ module Volley
73
74
  Volley::Log.debug "downloaded volleyfile: #{vf}"
74
75
  Volley::Dsl::VolleyFile.load(vf)
75
76
  args[:second] = true
76
- process("#{project}:#{plan}", desc.to_s, args)
77
+ process("#{project}:#{plan}", "#{project}@#{branch}:#{version}", args)
77
78
  else
78
79
  raise "project #{project} does not exist in configured publisher #{pub.class}"
79
80
  end
data/volley.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |gem|
13
13
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
14
  gem.name = "volley"
15
15
  gem.require_paths = ["lib"]
16
- gem.version = "#{Volley::Version::STRING}.alpha10"
16
+ gem.version = "#{Volley::Version::STRING}"
17
17
 
18
18
  gem.add_dependency "clamp"
19
19
  gem.add_dependency "fog"
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: volley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.alpha10
5
- prerelease: 6
4
+ version: 0.1.0
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Shawn Catanzarite
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-08 00:00:00.000000000 Z
12
+ date: 2012-08-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: clamp
@@ -140,6 +140,7 @@ files:
140
140
  - lib/volley/dsl/pull_action.rb
141
141
  - lib/volley/dsl/push_action.rb
142
142
  - lib/volley/dsl/stage.rb
143
+ - lib/volley/dsl/volley_action.rb
143
144
  - lib/volley/log.rb
144
145
  - lib/volley/meta.rb
145
146
  - lib/volley/publisher/amazons3.rb
@@ -181,9 +182,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
182
  required_rubygems_version: !ruby/object:Gem::Requirement
182
183
  none: false
183
184
  requirements:
184
- - - ! '>'
185
+ - - ! '>='
185
186
  - !ruby/object:Gem::Version
186
- version: 1.3.1
187
+ version: '0'
187
188
  requirements: []
188
189
  rubyforge_project:
189
190
  rubygems_version: 1.8.21