egads 4.0.0 → 5.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/.travis.yml +2 -3
- data/lib/egads/command/build.rb +5 -30
- data/lib/egads/command/extract.rb +15 -7
- data/lib/egads/command/upload.rb +2 -4
- data/lib/egads/config.rb +1 -1
- data/lib/egads/version.rb +1 -1
- data/spec/egads_build_spec.rb +1 -1
- data/spec/egads_s3_tarball_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -0
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dc867ae1d568eacba71cb54573d86118074c736a
|
|
4
|
+
data.tar.gz: 1daa4510795c557445539757673aa69b16cffbda
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7a0a749867163a4515e266aa95d7dd06336a193937b560c10d9a4d970d69fd95c502e168a91e55c6ab831e9c63e0f5f26ea8a1430f0c0353e1800272ebe75cfb
|
|
7
|
+
data.tar.gz: 98edd4c1baa874da8a38dfa25a8d3e895c6d9750957430daad408046a936da6274b9cc1d4e7d2f8ff4a517e34560555617ace14a97df4f8f7e8dcad71ad21146
|
data/.travis.yml
CHANGED
data/lib/egads/command/build.rb
CHANGED
|
@@ -3,9 +3,8 @@ module Egads
|
|
|
3
3
|
include Thor::Actions
|
|
4
4
|
include LocalHelpers
|
|
5
5
|
|
|
6
|
-
desc "[local] Compiles a deployable
|
|
6
|
+
desc "[local] Compiles a deployable tarball of the current commit and uploads it to S3"
|
|
7
7
|
class_option :force, type: :boolean, aliases: '-f', default: false, banner: "Build and overwrite existing tarball on S3"
|
|
8
|
-
class_option :seed, type: :boolean, default: false, banner: "Builds and tags a complete tarball for more efficient patches"
|
|
9
8
|
class_option 'no-upload', type: :boolean, default: false, banner: "Don't upload the tarball to S3"
|
|
10
9
|
argument :rev, type: :string, default: 'HEAD', desc: 'git revision to build'
|
|
11
10
|
|
|
@@ -15,12 +14,12 @@ module Egads
|
|
|
15
14
|
say_status :rev, "#{rev} parsed to #{sha}"
|
|
16
15
|
|
|
17
16
|
unless should_build?
|
|
18
|
-
say_status :done, "
|
|
17
|
+
say_status :done, "tarball for #{sha} already exists. Pass --force to rebuild."
|
|
19
18
|
exit 0
|
|
20
19
|
end
|
|
21
20
|
|
|
22
21
|
exit 1 unless can_build?
|
|
23
|
-
say_status :build, "Making
|
|
22
|
+
say_status :build, "Making tarball for #{sha}", :yellow
|
|
24
23
|
end
|
|
25
24
|
|
|
26
25
|
def run_before_build_hooks
|
|
@@ -45,21 +44,7 @@ module Egads
|
|
|
45
44
|
end
|
|
46
45
|
|
|
47
46
|
def make_tarball
|
|
48
|
-
|
|
49
|
-
# Seed tarball
|
|
50
|
-
run_with_code "git archive #{build_sha} --output #{tarball.local_tar_path}"
|
|
51
|
-
else
|
|
52
|
-
# Patch tarball
|
|
53
|
-
seed_ref = "refs/remotes/origin/#{Config.seed_branch}"
|
|
54
|
-
# NB: the seed tarball is named after the parent of seed tag
|
|
55
|
-
seed_parent = run_with_code("git rev-parse --verify #{seed_ref}^").strip
|
|
56
|
-
File.open('egads-seed', 'w') {|f| f << seed_parent + "\n" }
|
|
57
|
-
patch_files = [patch_path, 'egads-seed']
|
|
58
|
-
run_with_code "git diff --binary #{seed_ref} #{build_sha} > #{patch_path}"
|
|
59
|
-
run_with_code "tar -zcf #{tarball.local_tar_path} #{patch_files * ' '}"
|
|
60
|
-
patch_files.each {|f| File.delete(f) }
|
|
61
|
-
end
|
|
62
|
-
|
|
47
|
+
run_with_code "git archive #{build_sha} --output #{tarball.local_tar_path}"
|
|
63
48
|
end
|
|
64
49
|
|
|
65
50
|
def run_after_build_hooks
|
|
@@ -67,13 +52,7 @@ module Egads
|
|
|
67
52
|
end
|
|
68
53
|
|
|
69
54
|
def upload
|
|
70
|
-
invoke(Egads::Upload, [sha], force: options[:force]
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def push_seed
|
|
74
|
-
if options[:seed]
|
|
75
|
-
run_with_code "git push -f origin #{build_sha}:refs/heads/#{Config.seed_branch}"
|
|
76
|
-
end
|
|
55
|
+
invoke(Egads::Upload, [sha], force: options[:force]) unless options['no-upload']
|
|
77
56
|
end
|
|
78
57
|
|
|
79
58
|
module BuildHelpers
|
|
@@ -106,10 +85,6 @@ module Egads
|
|
|
106
85
|
"#{sha}.patch"
|
|
107
86
|
end
|
|
108
87
|
|
|
109
|
-
def build_type
|
|
110
|
-
options[:seed] ? 'seed' : 'patch'
|
|
111
|
-
end
|
|
112
|
-
|
|
113
88
|
def error(message)
|
|
114
89
|
lines = Array(message)
|
|
115
90
|
say_status :error, lines.shift, :red
|
|
@@ -19,14 +19,22 @@ module Egads
|
|
|
19
19
|
|
|
20
20
|
do_extract patch_path
|
|
21
21
|
|
|
22
|
-
#
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
# If the seed path exists, the patch was build w/ egads <= 4.0
|
|
23
|
+
# Newer patch files include the seed
|
|
24
|
+
seed_pointer = Pathname.new(patch_dir).join("egads-seed")
|
|
25
|
+
if seed_pointer.exist?
|
|
26
|
+
# Download seed
|
|
27
|
+
self.seed_sha = seed_pointer.read.strip
|
|
28
|
+
self.seed_path = File.join(RemoteConfig.seed_dir, "#{seed_sha}.tar.gz")
|
|
29
|
+
do_download(seed_sha, seed_path, 'seed')
|
|
30
|
+
|
|
31
|
+
do_extract seed_path
|
|
32
|
+
|
|
33
|
+
apply_patch
|
|
34
|
+
else
|
|
35
|
+
say_status :done, 'Patch tarball is complete, no seed to extract.'
|
|
36
|
+
end
|
|
28
37
|
|
|
29
|
-
apply_patch
|
|
30
38
|
finish_extraction
|
|
31
39
|
else
|
|
32
40
|
say_status :done, "#{sha} already extracted. Use --force to overwrite"
|
data/lib/egads/command/upload.rb
CHANGED
|
@@ -4,14 +4,12 @@ module Egads
|
|
|
4
4
|
|
|
5
5
|
desc "[local, plumbing] Uploads a tarball for SHA to S3"
|
|
6
6
|
argument :sha, type: :string, required: true, desc: 'git SHA to upload'
|
|
7
|
-
class_option :seed, type: :boolean, default: false, banner: "Uploads a seed tarball"
|
|
8
|
-
|
|
9
7
|
|
|
10
8
|
attr_reader :sha
|
|
11
9
|
def upload
|
|
12
10
|
@sha = sha
|
|
13
11
|
size = File.size(path)
|
|
14
|
-
type =
|
|
12
|
+
type = 'patch'
|
|
15
13
|
|
|
16
14
|
say_status :upload, "Uploading #{type} tarball (%.1f MB)" % (size.to_f / 2**20), :yellow
|
|
17
15
|
duration = Benchmark.realtime do
|
|
@@ -24,7 +22,7 @@ module Egads
|
|
|
24
22
|
|
|
25
23
|
private
|
|
26
24
|
def tarball
|
|
27
|
-
@tarball ||= S3Tarball.new(sha, seed:
|
|
25
|
+
@tarball ||= S3Tarball.new(sha, seed: false)
|
|
28
26
|
end
|
|
29
27
|
|
|
30
28
|
def path
|
data/lib/egads/config.rb
CHANGED
|
@@ -8,7 +8,7 @@ module Egads
|
|
|
8
8
|
def s3_bucket
|
|
9
9
|
return @bucket if @bucket
|
|
10
10
|
client = Aws::S3::Client.new(access_key_id: config['s3']['access_key'], secret_access_key: config['s3']['secret_key'], region: 'us-east-1')
|
|
11
|
-
@bucket
|
|
11
|
+
@bucket = Aws::S3::Bucket.new(config['s3']['bucket'], client: client)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def s3_prefix
|
data/lib/egads/version.rb
CHANGED
data/spec/egads_build_spec.rb
CHANGED
|
@@ -4,7 +4,7 @@ describe "Egads::Build" do
|
|
|
4
4
|
subject { Egads::Build }
|
|
5
5
|
|
|
6
6
|
it 'should run the correct tasks' do
|
|
7
|
-
subject.commands.keys.must_equal %w(check_build run_before_build_hooks write_revision_file commit_extra_paths make_tarball run_after_build_hooks upload
|
|
7
|
+
subject.commands.keys.must_equal %w(check_build run_before_build_hooks write_revision_file commit_extra_paths make_tarball run_after_build_hooks upload)
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
it 'takes one argument' do
|
|
@@ -3,16 +3,17 @@ require_relative 'spec_helper'
|
|
|
3
3
|
describe Egads::S3Tarball do
|
|
4
4
|
subject { Egads::S3Tarball.new('sha') }
|
|
5
5
|
|
|
6
|
+
after { Aws.config.delete(:s3) }
|
|
7
|
+
|
|
6
8
|
it('has a sha') { subject.sha.must_equal 'sha' }
|
|
7
9
|
it('has a key') { subject.key.must_equal 'my_project/sha.tar.gz' }
|
|
8
10
|
|
|
9
11
|
it "has an S3 bucket" do
|
|
10
|
-
subject.bucket.must_equal Egads::Config.s3_bucket
|
|
12
|
+
subject.bucket.name.must_equal Egads::Config.s3_bucket.name
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
it('should not exist') {
|
|
14
|
-
|
|
15
|
-
Aws.config[:s3] = {stub_responses: { head_object: 'NotFound' }}
|
|
16
|
+
Aws.config[:s3] = {stub_responses: { head_object: {status_code: 404, headers: {}, body: '', }}}
|
|
16
17
|
subject.exists?.must_equal(false)
|
|
17
18
|
}
|
|
18
19
|
|
|
@@ -22,7 +23,6 @@ describe Egads::S3Tarball do
|
|
|
22
23
|
end
|
|
23
24
|
|
|
24
25
|
it('should exist') do
|
|
25
|
-
skip 'Weird stubbing issues with Resource#exists?'
|
|
26
26
|
subject.exists?.must_equal true
|
|
27
27
|
end
|
|
28
28
|
end
|
data/spec/spec_helper.rb
CHANGED
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: 5.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: 2016-
|
|
11
|
+
date: 2016-06-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: aws-sdk
|
|
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
141
141
|
version: '0'
|
|
142
142
|
requirements: []
|
|
143
143
|
rubyforge_project:
|
|
144
|
-
rubygems_version: 2.5.
|
|
144
|
+
rubygems_version: 2.5.2
|
|
145
145
|
signing_key:
|
|
146
146
|
specification_version: 4
|
|
147
147
|
summary: Extensible Git Archive Deploy Strategy
|