# frozen_string_literal: true

require 'travis/client'

module Travis
  module Client
    class Build < Entity
      include Restartable
      include States
      preloadable

      # @!parse attr_reader :repository_id, :commit_id, :number, :pull_request, :pull_request_number, :pull_request_title, :config, :state, :started_at, :finished_at, :duration, :job_ids
      attributes :repository_id, :commit_id, :number, :pull_request, :pull_request_number, :pull_request_title,
                 :config, :state, :started_at, :finished_at, :duration, :job_ids
      time :started_at, :finished_at

      alias pull_request? pull_request
      alias pr_number pull_request_number

      # @!parse attr_reader :repository, :commit, :jobs
      has :repository, :commit, :jobs

      one :build
      many :builds
      aka :branch, :branches

      def delete_logs(reason = {})
        jobs.each do |job|
          job.delete_log(reason)
        end
      end

      def push?
        !pull_request?
      end

      def branch_info
        info = commit.branch
        pull_request? ? info + " (PR ##{pr_number})" : info
      end

      def pusher_channels
        repository.pusher_channels
      end

      def inspect_info
        "#{repository.slug}##{number}"
      end
    end
  end
end
