Sha256: 84445db87420d1fe4a7464482e9920f7bf6ff45a13d7bb70d292e9d5f92f49b0

Contents?: true

Size: 1022 Bytes

Versions: 6

Compression:

Stored size: 1022 Bytes

Contents

# frozen_string_literal: true

require 'travis/cli'
require 'launchy'

module Travis
  module CLI
    class Open < RepoCommand
      description 'opens a build or job in the browser'

      on('-g', '--github', 'Open the corresponding project, compare view or pull request on GitHub')
      on('-p', '--print',  'Print out the URL instead of opening it in a browser')

      def run(number = nil)
        url = url_for(number)
        if print?
          say url, 'web view: %s'
        else
          Launchy.open(url)
        end
      end

      private

      def url_for(number)
        return repo_url unless number

        entity = job(number) || build(number)
        error "could not find job or build #{repository.slug}##{number}" unless entity
        github ? entity.commit.compare_url : "#{repo_url}/#{entity.class.many}/#{entity.id}"
      end

      def repo_url
        "https://#{host}/#{slug}"
      end

      def host
        github ? 'github.com' : session.config['host']
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
travis-1.14.0 lib/travis/cli/open.rb
travis-1.13.3 lib/travis/cli/open.rb
travis-1.13.2 lib/travis/cli/open.rb
travis-1.13.1 lib/travis/cli/open.rb
travis-1.13.0 lib/travis/cli/open.rb
travis-1.12.0 lib/travis/cli/open.rb