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
         |