Sha256: 797390eb33dd8ea2b424adfe758fedd0d664bb0638c88a35c849a3ad9a7f8a38

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

require 'circleci'
require 'circle/cli/build'

module Circle
  module CLI
    class Project
      attr_reader :repo

      def initialize(repo)
        @repo = repo
        configure
      end

      def build!
        request CircleCi::Project, :build_branch, repo.branch_name
      end

      def builds
        @builds ||= to_builds(request(CircleCi::Project, :recent_builds_branch, repo.branch_name))
      end

      def recent_builds
        @recent_builds ||= to_builds(request(CircleCi::Project, :recent_builds))
      end

      def latest
        builds.first
      end

      def clear_cache!
        @builds = nil
        @recent_builds = nil
      end

      def request(klass, action, *args)
        response = klass.send(action, repo.user_name, repo.project, *args)

        if response.success?
          response.body
        else
          $stderr.puts 'One or more errors occurred:'

          response.errors.each do |error|
            $stderr.puts "+ #{error.message}"
          end

          exit 1
        end
      end

      private

      def configure
        CircleCi.configure do |config|
          config.token = repo.circle_token
        end
      end

      def to_builds(arr)
        arr.to_a.map { |build| Build.new(self, build) }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
circle-cli-0.1.1 lib/circle/cli/project.rb