# frozen_string_literal: true module Groundskeeper # Wraps an interface to GitHub. class GitHub attr_reader :opener, :username, :repository_name GITHUB_API_TOKEN = "GITHUB_API_TOKEN" COMMAND = "open" URL_BASE = "https://github.com/" def self.build(username:, repository_name:) new( opener: Executable.new(COMMAND), username: username, repository_name: repository_name ) end def initialize(opener:, username:, repository_name:) @opener = opener @username = username @repository_name = repository_name end def open_pull_request_page(branch_name) url = "#{URL_BASE}#{username}/#{repository_name}/compare/" \ "#{branch_name}?expand=1" opener.execute(url) end def credentials? ENV[GITHUB_API_TOKEN].present? end end end