class Ruboty::BitbucketMerge::Actions::MergeBranch
Public Instance Methods
call()
click to toggle source
# File lib/ruboty/bitbucket_merge/actions/merge_branch.rb, line 6 def call @team = message[:team] @repo = message[:repo] @source = message[:source] @target = message[:target] @user = ENV["BITBUCKET_USERNAME"] @pass = ENV["BITBUCKET_PASSWORD"] @emakl = ENV["BITBUCKET_EMAIL"] begin pr_id, links = create_pull_request message.reply("nothing to merge.") and return if pr_id.nil? merge_message = build_merge_message(links["commits"]["href"]) merge_pull_request(links["merge"]["href"], pr_id, merge_message) message.reply("Successfully merged.\n\n" + merge_message) rescue => e message.reply("Failed to merge. #{e}") end end
Private Instance Methods
build_merge_message(href)
click to toggle source
# File lib/ruboty/bitbucket_merge/actions/merge_branch.rb, line 63 def build_merge_message(href) url = URI.parse(href) req = Net::HTTP::Get.new(url.path, initheader = {'Content-Type' =>'application/json'}) req.basic_auth @user, @pass http = Net::HTTP.new(url.host, url.port) http.use_ssl = true res = http.start {|http| http.request(req)} JSON.parse(res.body)["values"].map{|h| "- " + h["message"]}.join("\n") end
create_pull_request()
click to toggle source
# File lib/ruboty/bitbucket_merge/actions/merge_branch.rb, line 30 def create_pull_request urlstr = "https://api.bitbucket.org/2.0/repositories/#{@team}/#{@repo}/pullrequests" url = URI.parse(urlstr) params = { "title"=> "Merge #{@source} to #{@target}", "description"=> "Merge #{@source} to #{@target}", "source"=> { "branch"=> { "name"=> @source }, "repository"=> { "full_name"=> "#{@team}/#{@repo}" } }, "destination"=> { "branch"=> { "name"=> @target } }, "close_source_branch"=> false } req = Net::HTTP::Post.new(url.path, initheader = {'Content-Type' =>'application/json'}) req.basic_auth @user, @pass req.body = params.to_json http = Net::HTTP.new(url.host, url.port) http.use_ssl = true res = http.start {|http| http.request(req)} hash = JSON.parse(res.body) return hash["id"], hash["links"] end
merge_pull_request(href, pr_id, merge_message)
click to toggle source
# File lib/ruboty/bitbucket_merge/actions/merge_branch.rb, line 73 def merge_pull_request(href, pr_id, merge_message) url = URI.parse(href) params = { "owner" => @team, "repo_slug" => @repo, "pull_request_id" => pr_id, "name" => @user, "email" => @email, "message" => merge_message } req = Net::HTTP::Post.new(url.path, initheader = {'Content-Type' =>'application/json'}) req.basic_auth @user, @pass req.body = params.to_json http = Net::HTTP.new(url.host, url.port) http.use_ssl = true res = http.start {|http| http.request(req)} res.body end