drud 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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