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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ac481b4188fdf971a487384220e2307810cf4d05
4
- data.tar.gz: 4eb06b518907737321bd0afacd6f303f138d3350
3
+ metadata.gz: 2a44ed13582ce90e3eda907986a5119d1b076988
4
+ data.tar.gz: 9d3adf00b43cc174ec713a55db88a96ddf668860
5
5
  SHA512:
6
- metadata.gz: 27d037d3519ad89dcfcc049eab8569db7886c1ecfc5b2ce6606c7cce648c1c3fe528ea3aa16939319f177101dfb1811ba1ad7e5bf58aa00b592b81af23d6f7d2
7
- data.tar.gz: 2ef6be2d3248cf9204fe35dd92b977f5d8cc86bd5869a77e7113d94f9c387dc1545327376fbd7584ac899ae43602a4fc17fd6ccb1382f90629bafe90ad73ed55
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 )
@@ -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', '>= 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 'netrc', '>= 0.7.7'
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', '>= 3.0.0'
37
- spec.add_development_dependency 'rubocop', '>= 0.24.1'
37
+ spec.add_development_dependency 'rspec', '~> 3.0.0'
38
+ spec.add_development_dependency 'rubocop', '~> 0.24.1'
38
39
  end
@@ -1,3 +1,4 @@
1
1
  # encoding: utf-8
2
2
  require 'drud/version'
3
3
  require 'drud/readme'
4
+ require 'drud/s3'
@@ -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
- client = Octokit::Client.new
160
- detail = client.commit(origin, commit)
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
 
@@ -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
@@ -2,5 +2,5 @@
2
2
  # be more efficient.
3
3
  module Drud
4
4
  # The drud version number.
5
- VERSION = '0.0.5'
5
+ VERSION = '0.0.6'
6
6
  end
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.5
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-09-05 00:00:00.000000000 Z
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: netrc
56
+ name: aws-sdk
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.7.7
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: 0.7.7
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