drud 0.0.5 → 0.0.6
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 +4 -0
- data/drud.gemspec +7 -6
- data/lib/drud.rb +1 -0
- data/lib/drud/readme.rb +20 -2
- data/lib/drud/s3.rb +73 -0
- data/lib/drud/version.rb +1 -1
- metadata +32 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a44ed13582ce90e3eda907986a5119d1b076988
|
4
|
+
data.tar.gz: 9d3adf00b43cc174ec713a55db88a96ddf668860
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5b6c478c06c1144b4cd4ba69d4b0bc96b8c4833fbe10b1dcbfb69812e65ea168e330edc924d95c49588c3c97039cc8768cb644e7abec99ca170c03f373c8184
|
7
|
+
data.tar.gz: 4e040d3540e39d43a7363efafd3752e840f0e20baa7bc8ae2d4a1cc2182717f9b89d47b8cf5e35448518656e16682e3c25e40d65c4bc6f4a8d7c05c310b82daf
|
data/README.md
CHANGED
@@ -28,6 +28,10 @@ Here's an example rake task that could be placed in your cookbooks Rake file.
|
|
28
28
|
drud.render
|
29
29
|
end
|
30
30
|
|
31
|
+
If you set the environment variable `DRUD_OAUTH` to a
|
32
|
+
[Github Applicaiton access tokent](https://help.github.com/articles/creating-an-access-token-for-command-line-use)
|
33
|
+
that token will be used to authenticate the Octokit client and allow access to private repos.
|
34
|
+
|
31
35
|
## Contributing
|
32
36
|
|
33
37
|
1. Fork it ( https://github.com/[my-github-username]/drud/fork )
|
data/drud.gemspec
CHANGED
@@ -28,11 +28,12 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.test_files = spec.files.grep(/^(test|spec|features)\//)
|
29
29
|
spec.require_paths = ['lib']
|
30
30
|
|
31
|
-
spec.add_runtime_dependency 'chef', '
|
32
|
-
spec.add_runtime_dependency 'octokit', '
|
33
|
-
spec.add_runtime_dependency 'rake', '
|
34
|
-
spec.add_runtime_dependency '
|
31
|
+
spec.add_runtime_dependency 'chef', '~> 11.12.8'
|
32
|
+
spec.add_runtime_dependency 'octokit', '~> 3.0'
|
33
|
+
spec.add_runtime_dependency 'rake', '~> 10.3.2'
|
34
|
+
spec.add_runtime_dependency 'aws-sdk', '~> 1.59.1'
|
35
|
+
spec.add_runtime_dependency 'humanize-bytes', '~> 2.1.0'
|
35
36
|
|
36
|
-
spec.add_development_dependency 'rspec', '
|
37
|
-
spec.add_development_dependency 'rubocop', '
|
37
|
+
spec.add_development_dependency 'rspec', '~> 3.0.0'
|
38
|
+
spec.add_development_dependency 'rubocop', '~> 0.24.1'
|
38
39
|
end
|
data/lib/drud.rb
CHANGED
data/lib/drud/readme.rb
CHANGED
@@ -67,6 +67,7 @@ module Drud
|
|
67
67
|
@metadata = load_metadata
|
68
68
|
@logs = load_logs
|
69
69
|
@commits, @credit, @tasks = {}, {}, {}
|
70
|
+
@octokit_auth = { access_token: ENV['DRUD_OAUTH'] } if ENV['DRUD_OAUTH']
|
70
71
|
parse_rake_tasks
|
71
72
|
parse_commits
|
72
73
|
parse_credit
|
@@ -150,14 +151,31 @@ module Drud
|
|
150
151
|
# once per author in a cookbooks project. This only returns the html_url to
|
151
152
|
# the authors github profile.
|
152
153
|
#
|
154
|
+
# If the environment variable DRUD_OAUTH is set, it will be used as an OAUTH
|
155
|
+
# token for accessing GITHUB
|
156
|
+
#
|
153
157
|
# ==== Attributes
|
154
158
|
#
|
155
159
|
# * +:commit+ - The commit hash to get information from.
|
156
160
|
def github_html_url(commit) # :doc:
|
157
161
|
info = `cd #{@cookbook} && git remote -v`
|
158
162
|
origin = /^origin.+?:([^\.+]*)/.match(info)[1]
|
159
|
-
|
160
|
-
|
163
|
+
if @octokit_auth
|
164
|
+
client = Octokit::Client.new @octokit_auth
|
165
|
+
else
|
166
|
+
client = Octokit::Client.new
|
167
|
+
end
|
168
|
+
|
169
|
+
begin
|
170
|
+
detail = client.commit(origin, commit)
|
171
|
+
rescue Octokit::NotFound
|
172
|
+
puts "ERROR: Accessing Github origin: #{origin} commit: #{commit} @octokit_auth: #{@octokit_auth.inspect}"
|
173
|
+
unless @octokit_auth
|
174
|
+
puts "\tNeed to set environment variable DRUD_OAUTH to a valid Github access token for private repos"
|
175
|
+
puts "\tSee https://help.github.com/articles/creating-an-access-token-for-command-line-use"
|
176
|
+
end
|
177
|
+
exit(-1)
|
178
|
+
end
|
161
179
|
detail[:author][:html_url]
|
162
180
|
end
|
163
181
|
|
data/lib/drud/s3.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require 'aws-sdk'
|
2
|
+
require 'base64'
|
3
|
+
require 'humanize-bytes'
|
4
|
+
|
5
|
+
module Drud
|
6
|
+
# s3 class
|
7
|
+
class S3
|
8
|
+
attr_accessor :aws_access_key
|
9
|
+
attr_accessor :aws_secret_key
|
10
|
+
attr_accessor :aws_bucket
|
11
|
+
attr_accessor :aws_prefix
|
12
|
+
attr_accessor :aws_utf_symmetric_key
|
13
|
+
|
14
|
+
def initialize(args)
|
15
|
+
@aws_access_key = args[:aws_access_key]
|
16
|
+
@aws_secret_key = args[:aws_secret_key]
|
17
|
+
@aws_bucket = args[:aws_bucket]
|
18
|
+
@aws_prefix = args[:aws_prefix]
|
19
|
+
@aws_utf_symmetric_key = args[:aws_utf_symmetric_key]
|
20
|
+
AWS.config(
|
21
|
+
access_key_id: args[:aws_access_key],
|
22
|
+
secret_access_key: args[:aws_secret_key]
|
23
|
+
)
|
24
|
+
end
|
25
|
+
# Return the latest s3Object based on a regex filename match.
|
26
|
+
def latest(pattern)
|
27
|
+
s3 = AWS::S3.new
|
28
|
+
objects = s3.buckets[@aws_bucket].objects
|
29
|
+
latest = nil
|
30
|
+
objects.with_prefix(@aws_prefix).each do |o|
|
31
|
+
latest = o if latest.nil?
|
32
|
+
old_latest = Regexp.new(pattern).match(latest.key)[1]
|
33
|
+
this_latest = Regexp.new(pattern).match(o.key)[1]
|
34
|
+
latest = o if this_latest > old_latest
|
35
|
+
end
|
36
|
+
latest
|
37
|
+
end
|
38
|
+
# Get a client encrypted s3Object
|
39
|
+
def get(s3Object)
|
40
|
+
key = Base64.decode64(@aws_utf_symmetric_key).encode('ascii-8bit')
|
41
|
+
options = { encryption_key: key }
|
42
|
+
File.open(s3Object.key.split('/').last, 'wb') do |file|
|
43
|
+
s3Object.read(options) do |chunk|
|
44
|
+
file.write(chunk)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
# Describe an s3Object
|
49
|
+
def describe(s3Object)
|
50
|
+
if s3Object.exists?
|
51
|
+
puts "content-type: #{s3Object.content_type}" unless s3Object.content_type == ''
|
52
|
+
cl = Humanize::Byte.new(s3Object.content_length)
|
53
|
+
puts "content bytes: #{cl.to_b}"
|
54
|
+
puts "content megabytes: #{cl.to_m}"
|
55
|
+
puts "content gigabytes: #{cl.to_g}"
|
56
|
+
puts "key: #{s3Object.key}" unless s3Object.key.nil?
|
57
|
+
puts "bucket: #{s3Object.bucket.name}" unless s3Object.bucket.nil?
|
58
|
+
puts "etag: #{s3Object.etag}" unless s3Object.etag.nil?
|
59
|
+
puts "expiration_date: #{s3Object.expiration_date}" unless s3Object.expiration_date.nil?
|
60
|
+
puts "last modified: #{s3Object.last_modified}"
|
61
|
+
puts "public url: #{s3Object.public_url}"
|
62
|
+
puts "24 hour access link: #{s3Object.url_for(:read)}"
|
63
|
+
puts "x-amz-iv: #{s3Object.metadata['x-amz-iv']}" unless s3Object.metadata['x-amz-iv'].nil?
|
64
|
+
puts "x-amz-key: #{s3Object.metadata['x-amz-key']}" unless s3Object.metadata['x-amz-key'].nil?
|
65
|
+
puts "x-amz-matdesc: #{s3Object.metadata['x-amz-matdesc']}" unless s3Object.metadata['x-amz-matdesc'].nil?
|
66
|
+
puts "x-amz-unencrypted-content-length: #{s3Object.metadata['x-amz-unencrypted-content-length']}" unless s3Object.metadata['x-amz-unencrypted-content-length'].nil?
|
67
|
+
puts "server side encryption: #{s3Object.server_side_encryption}"
|
68
|
+
else
|
69
|
+
puts "#{s3Object} does not exist."
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lib/drud/version.rb
CHANGED
metadata
CHANGED
@@ -1,97 +1,111 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Bridges
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: chef
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 11.12.8
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 11.12.8
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: octokit
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '3.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 10.3.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 10.3.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: aws-sdk
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.59.1
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.59.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: humanize-bytes
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 2.1.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 2.1.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rspec
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
89
|
version: 3.0.0
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: 3.0.0
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- - "
|
101
|
+
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: 0.24.1
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- - "
|
108
|
+
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: 0.24.1
|
97
111
|
description: Evaluates an opscode chef cookbook's metadata and github history to generate
|
@@ -115,6 +129,7 @@ files:
|
|
115
129
|
- drud.gemspec
|
116
130
|
- lib/drud.rb
|
117
131
|
- lib/drud/readme.rb
|
132
|
+
- lib/drud/s3.rb
|
118
133
|
- lib/drud/version.rb
|
119
134
|
- spec/drud_spec.rb
|
120
135
|
- spec/spec_helper.rb
|