Sha256: 57bef9f26996cfa8961f43fc0317fda9a30169ca2165cbb0be7cc61ceabd7462

Contents?: true

Size: 1.26 KB

Versions: 3

Compression:

Stored size: 1.26 KB

Contents

require 'travis/cli'

module Travis
  module CLI
    class Monitor < ApiCommand
      on('-m', '--my-repos', 'Only monitor my own repositories')
      on('-r', '--repo SLUG', 'monitor given repository (can be used more than once)') do |c, slug|
        c.repos << slug
      end

      attr_reader :repos

      def initialize(*)
        @repos = []
        super
      end

      def setup
        super
        repos.map! { |r| repo(r) }
        repos.concat(user.repositories) if my_repos?
      end

      def description
        case repos.size
        when 0 then session.config['host']
        when 1 then repos.first.slug
        else "#{repos.size} repositories"
        end
      end

      def run
        listen(*repos) do |listener|
          listener.on_connect { say description, 'Monitoring %s:' }
          listener.on 'build:started', 'job:started', 'build:finished', 'job:finished' do |event|
            entity = event.job          || event.build
            time   = entity.finished_at || entity.started_at
            say [
              color(formatter.time(time), entity.color),
              color(entity.inspect_info, [entity.color, :bold]),
              color(entity.state, entity.color)
            ].join(" ")
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
travis-1.5.2 lib/travis/cli/monitor.rb
travis-1.5.1 lib/travis/cli/monitor.rb
travis-1.5.0 lib/travis/cli/monitor.rb