egads 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/egads/capistrano.rb +7 -4
- data/lib/egads/command.rb +3 -0
- data/lib/egads/command/build.rb +1 -25
- data/lib/egads/command/check.rb +37 -0
- data/lib/egads/local_helpers.rb +17 -0
- data/lib/egads/version.rb +1 -1
- data/spec/egads_build_spec.rb +10 -10
- data/spec/egads_check_spec.rb +29 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 528b9ad77f674b120f2e3d8b64a72e24a4d16f59
|
4
|
+
data.tar.gz: db4985e423a4d2d265f259c4e457423264ed3dd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14506e0b510f897e04de81aa7805719675a79456d933f1bdf59ae3f0b5e9e5dcaca4fdc2416e1f40d48d2c397213e64b5c3a62b70e87125a9f00018a7a70d958
|
7
|
+
data.tar.gz: e4c504af004f30c2bdc69f6f8a883a7c66b865f79f77f2a844019078afbc43d47fe9a3c7f95874fcffe8a0e9b2bcca7a2b79e00bde2f8ae1b7cdd21480b25899
|
data/README.md
CHANGED
@@ -31,8 +31,9 @@ Commands are either *porcelain* commands that you should call directly as part o
|
|
31
31
|
|
32
32
|
### Local commands
|
33
33
|
|
34
|
+
* `egads check [SHA]` - checks if a deployable tarball of the current commit exists on S3.
|
34
35
|
* `egads build [SHA]` - makes a deployable tarball of the current commit and upload it to S3 (if missing).
|
35
|
-
* `egads upload SHA` - (plumbing, called by `build`) Uploads a pre-built tarball
|
36
|
+
* `egads upload SHA` - (plumbing, called by `build`) Uploads a pre-built tarball.
|
36
37
|
|
37
38
|
### Remote commands
|
38
39
|
|
data/lib/egads/capistrano.rb
CHANGED
@@ -9,7 +9,7 @@ Capistrano::Configuration.instance.load do
|
|
9
9
|
namespace :deploy do
|
10
10
|
desc "Deploy"
|
11
11
|
task :default do
|
12
|
-
deploy.
|
12
|
+
deploy.check
|
13
13
|
deploy.stage
|
14
14
|
deploy.release
|
15
15
|
end
|
@@ -32,9 +32,12 @@ Capistrano::Configuration.instance.load do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
desc "Checks that a deployable tarball is on S3; creates it if missing"
|
35
|
-
task :
|
36
|
-
|
37
|
-
|
35
|
+
task :check do
|
36
|
+
logger.info "Checking tarball for #{full_sha}"
|
37
|
+
logger.info "To build the tarball locally, run `bundle exec egads build #{full_sha}"
|
38
|
+
logger.info "Waiting for tarball..."
|
39
|
+
`bundle exec egads check --wait #{full_sha}`
|
40
|
+
abort "Failed to check build" if $?.exitstatus != 0
|
38
41
|
end
|
39
42
|
end
|
40
43
|
end
|
data/lib/egads/command.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module Egads
|
2
2
|
class Command < Thor
|
3
|
+
require 'egads/local_helpers'
|
4
|
+
require 'egads/command/check'
|
3
5
|
require 'egads/command/build'
|
4
6
|
require 'egads/command/upload'
|
5
7
|
require 'egads/command/extract'
|
@@ -7,6 +9,7 @@ module Egads
|
|
7
9
|
require 'egads/command/release'
|
8
10
|
require 'egads/command/trim'
|
9
11
|
|
12
|
+
register(Check, 'check', 'check [REV]', '[local] Checks if a deployable tarball of the current commit already exists on S3')
|
10
13
|
register(Build, 'build', 'build [REV]', '[local] Compiles a deployable tarball of the current commit and uploads it to S3')
|
11
14
|
register(Upload, 'upload', 'upload SHA', '[local, plumbing] Uploads a tarball for SHA to S3')
|
12
15
|
register(Extract, 'extract', 'extract SHA', '[remote, plumbing] Downloads tarball for SHA from S3 and extracts it to the filesystem')
|
data/lib/egads/command/build.rb
CHANGED
@@ -1,17 +1,16 @@
|
|
1
1
|
module Egads
|
2
2
|
class Build < Group
|
3
3
|
include Thor::Actions
|
4
|
+
include Egads::LocalHelpers
|
4
5
|
|
5
6
|
desc "[local] Compiles a deployable tarball of the current commit and uploads it to S3"
|
6
7
|
class_option :force, type: :boolean, aliases: '-f', default: false, banner: "Build and overwrite existing tarball on S3"
|
7
|
-
class_option :wait, type: :boolean, aliases: '-w', default: false, banner: "Wait for the build to exist. Poll S3 every 2 seconds."
|
8
8
|
class_option 'no-upload', type: :boolean, default: false, banner: "Don't upload the tarball to S3"
|
9
9
|
argument :rev, type: :string, default: 'HEAD', desc: 'git revision to build'
|
10
10
|
|
11
11
|
def check_build
|
12
12
|
say_status :rev, "#{rev} parsed to #{sha}"
|
13
13
|
|
14
|
-
wait_for_build if options[:wait]
|
15
14
|
unless should_build?
|
16
15
|
say_status :done, "Tarball for #{sha} already exists. Pass --force to rebuild."
|
17
16
|
exit 0
|
@@ -52,18 +51,6 @@ module Egads
|
|
52
51
|
end
|
53
52
|
|
54
53
|
module BuildHelpers
|
55
|
-
def sha
|
56
|
-
@sha ||= run_with_code("git rev-parse --verify #{rev}").strip
|
57
|
-
end
|
58
|
-
|
59
|
-
def short_sha
|
60
|
-
sha[0,7]
|
61
|
-
end
|
62
|
-
|
63
|
-
def tarball
|
64
|
-
@tarball ||= S3Tarball.new(sha)
|
65
|
-
end
|
66
|
-
|
67
54
|
def should_build?
|
68
55
|
options[:force] || !tarball.exists?
|
69
56
|
end
|
@@ -97,17 +84,6 @@ module Egads
|
|
97
84
|
false
|
98
85
|
end
|
99
86
|
|
100
|
-
def wait_for_build
|
101
|
-
say_status :wait, "Waiting for tarball to exist...", :yellow
|
102
|
-
loop do
|
103
|
-
start = Time.now
|
104
|
-
break if tarball.exists?
|
105
|
-
printf '.'
|
106
|
-
sleep [2 - (Time.now - start), 0].max
|
107
|
-
end
|
108
|
-
printf "\n"
|
109
|
-
end
|
110
|
-
|
111
87
|
end
|
112
88
|
include BuildHelpers
|
113
89
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Egads
|
2
|
+
class Check < Group
|
3
|
+
include Thor::Actions
|
4
|
+
include Egads::LocalHelpers
|
5
|
+
|
6
|
+
desc "[local] Checks if a deployable tarball of the current commit already exists on S3"
|
7
|
+
class_option :wait, type: :boolean, aliases: '-w', default: false, banner: "Wait for the build to exist. Poll S3 every 2 seconds."
|
8
|
+
argument :rev, type: :string, default: 'HEAD', desc: 'git revision to check'
|
9
|
+
|
10
|
+
def check
|
11
|
+
say_status :rev, "#{rev} parsed to #{sha}"
|
12
|
+
|
13
|
+
wait_for_build if options[:wait]
|
14
|
+
|
15
|
+
if tarball.exists?
|
16
|
+
say_status :exists, "Tarball for #{sha} exists"
|
17
|
+
exit 0
|
18
|
+
else
|
19
|
+
say_status :missing, "Tarball for #{sha} does not exist", :red
|
20
|
+
exit 1
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
def wait_for_build
|
26
|
+
say_status :wait, "Waiting for tarball to exist...", :yellow
|
27
|
+
loop do
|
28
|
+
start = Time.now
|
29
|
+
break if tarball.exists?
|
30
|
+
printf '.'
|
31
|
+
sleep [1 - (Time.now - start), 0].max
|
32
|
+
end
|
33
|
+
printf "\n"
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Egads
|
2
|
+
# Some helper methods for `check` and `upload`
|
3
|
+
module LocalHelpers
|
4
|
+
def sha
|
5
|
+
@sha ||= run_with_code("git rev-parse --verify #{rev}").strip
|
6
|
+
end
|
7
|
+
|
8
|
+
def short_sha
|
9
|
+
sha[0,7]
|
10
|
+
end
|
11
|
+
|
12
|
+
def tarball
|
13
|
+
@tarball ||= S3Tarball.new(sha)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/lib/egads/version.rb
CHANGED
data/spec/egads_build_spec.rb
CHANGED
@@ -9,21 +9,21 @@ describe "Egads::Build" do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it 'takes one argument' do
|
12
|
-
|
12
|
+
subject.arguments.size.must_equal 1
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'has a rev argument' do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
rev = subject.arguments.detect{|arg| arg.name == 'rev'}
|
17
|
+
rev.default.must_equal 'HEAD'
|
18
|
+
rev.required.must_equal false
|
19
19
|
end
|
20
20
|
|
21
21
|
end
|
22
22
|
|
23
23
|
describe "Egags::Build instance" do
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
24
|
+
subject { Egads::Build.new }
|
25
|
+
|
26
|
+
it "has rev HEAD" do
|
27
|
+
subject.rev.must_equal 'HEAD'
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'spec_helper'
|
2
|
+
|
3
|
+
describe "Egads::Check" do
|
4
|
+
setup_configs!
|
5
|
+
subject { Egads::Check }
|
6
|
+
|
7
|
+
it 'should run the correct tasks' do
|
8
|
+
subject.commands.keys.must_equal %w(check)
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'takes one argument' do
|
12
|
+
subject.arguments.size.must_equal 1
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'has a rev argument' do
|
16
|
+
rev = subject.arguments.detect{|arg| arg.name == 'rev'}
|
17
|
+
rev.default.must_equal 'HEAD'
|
18
|
+
rev.required.must_equal false
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
describe "Egags::Build instance" do
|
24
|
+
subject { Egads::Check.new }
|
25
|
+
|
26
|
+
it "has rev HEAD" do
|
27
|
+
subject.rev.must_equal 'HEAD'
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egads
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Suggs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/egads/capistrano.rb
|
93
93
|
- lib/egads/command.rb
|
94
94
|
- lib/egads/command/build.rb
|
95
|
+
- lib/egads/command/check.rb
|
95
96
|
- lib/egads/command/extract.rb
|
96
97
|
- lib/egads/command/release.rb
|
97
98
|
- lib/egads/command/stage.rb
|
@@ -99,9 +100,11 @@ files:
|
|
99
100
|
- lib/egads/command/upload.rb
|
100
101
|
- lib/egads/config.rb
|
101
102
|
- lib/egads/group.rb
|
103
|
+
- lib/egads/local_helpers.rb
|
102
104
|
- lib/egads/s3_tarball.rb
|
103
105
|
- lib/egads/version.rb
|
104
106
|
- spec/egads_build_spec.rb
|
107
|
+
- spec/egads_check_spec.rb
|
105
108
|
- spec/egads_config_spec.rb
|
106
109
|
- spec/egads_extract_spec.rb
|
107
110
|
- spec/egads_release_spec.rb
|
@@ -136,6 +139,7 @@ specification_version: 4
|
|
136
139
|
summary: Extensible Git Archive Deploy Strategy
|
137
140
|
test_files:
|
138
141
|
- spec/egads_build_spec.rb
|
142
|
+
- spec/egads_check_spec.rb
|
139
143
|
- spec/egads_config_spec.rb
|
140
144
|
- spec/egads_extract_spec.rb
|
141
145
|
- spec/egads_release_spec.rb
|