Sha256: 8278966a6925ef772755b68291656bfd7ccb62dd0be6cb943f37f6ef57362be9

Contents?: true

Size: 1.63 KB

Versions: 1

Compression:

Stored size: 1.63 KB

Contents

module DPL
  class Provider
    class Releases < Provider
      requires 'octokit'
      requires 'mime-types'

      def get_tag 
        `git describe --tags --exact-match 2>/dev/null`.chomp
      end

      def api
        if options[:user] and options[:password]
          @api ||= Octokit::Client.new(:login => options[:user], :password => options[:password])
        else
          @api ||= Octokit::Client.new(:access_token => option(:api_key))
        end
      end

      def slug
        options.fetch(:repo) { ENV['TRAVIS_REPO_SLUG'] }
      end

      def releases
        @releases ||= api.releases(slug)
      end

      def user
        user ||= api.user
      end

      def needs_key?
        false
      end

      def check_app
        log "Deploying to repo: #{slug}"
        log "Current tag is: #{get_tag}"
      end

      def setup_auth
        user.login
      end

      def check_auth
        setup_auth
        log "Logged in as #{user.name}"
      end

      def push_app
        tag_matched = false

        releases.each do |release|
          if release.tag_name == get_tag
            api.upload_asset(release.rels[:self].href, option(:file), {:content_type => MIME::Types.type_for(option(:file)).first.to_s})
            tag_matched = true
          end
        end
        unless tag_matched
          log <<-EOS
                 This isn't a GitHub release, so nothing has been deployed. If you haven't already, please add the following to the 'deploy' section of your .travis.yml:

                 on:
                   tags: true
                   all_branches: true
                EOS
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dpl-1.5.8.travis.359.1 lib/dpl/provider/releases.rb