Sha256: 6f89d9fcc84f9ceff3e4ed260a688bf478583858c1c3eb2c812a504f9d5df35b

Contents?: true

Size: 1.46 KB

Versions: 7

Compression:

Stored size: 1.46 KB

Contents

# frozen_string_literal: true

module Ninny
  module Repository
    class Gitlab
      attr_reader :gitlab, :project_id

      def initialize
        @gitlab = ::Gitlab.client(
          endpoint: Ninny.project_config.gitlab_endpoint,
          private_token: Ninny.user_config.gitlab_private_token
        )
        @project_id = Ninny.project_config.gitlab_project_id
      end

      def current_pull_request
        to_pr(
          gitlab.merge_requests(
            project_id,
            {
              source_branch: Ninny.git.current_branch.name,
              target_branch: Ninny.project_config.deploy_branch,
              state: 'opened'
            }
          ).auto_paginate.last
        )
      end

      def pull_request_label
        'Merge Request'
      end

      def open_pull_requests
        gitlab.merge_requests(project_id, { state: 'opened' }).auto_paginate.map { |mr| to_pr(mr) }
      end

      def pull_request(id)
        to_pr(gitlab.merge_request(project_id, id))
      end

      def create_merge_request_note(id, body)
        gitlab.create_merge_request_note(project_id, id, body)
      end

      def to_pr(request)
        request && PullRequest.new(
          number: request.iid,
          title: request.title,
          branch: request.source_branch,
          description: request.description,
          comment_lambda: ->(body) { Ninny.repo.create_merge_request_note(request.iid, body) }
        )
      end
      private :to_pr
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ninny-0.1.24 lib/ninny/repository/gitlab.rb
ninny-0.1.23 lib/ninny/repository/gitlab.rb
ninny-0.1.22.1 lib/ninny/repository/gitlab.rb
ninny-0.1.22 lib/ninny/repository/gitlab.rb
ninny-0.1.21 lib/ninny/repository/gitlab.rb
ninny-0.1.20 lib/ninny/repository/gitlab.rb
ninny-0.1.19 lib/ninny/repository/gitlab.rb