かまたま日記3

プログラミングメイン、たまに日常

GitHubのissueを擬似的に消すためのRubyスクリプト

GitHubのissueは削除することが出来ないので、タイトルと本文とコメントを全部消すことで、擬似的になかったことにします。 (これでもタイトルの変更履歴は残るので、完全に消すことは出来ないわけですが...)

require 'octokit'
require 'highline/import'

Octokit.auto_paginate = true
client = Octokit::Client.new(:access_token => ENV['GITHUB_TOKEN'])

repo = '<repository name>' # e.g. kamatama41/test
title = '<issue title>'

issue = client.issues(repo, state: :closed).find do |i|
  i.title.include? title
end

unless issue
  puts 'Issue is not found.'
  exit
end

confirm = ask("Remove the issue '##{issue.number} #{issue.title}'? [Y/N] ") { |yn| yn.limit = 1, yn.validate = /[yn]/i }
unless confirm.downcase == 'y'
  exit
end

client.update_issue(repo, issue.number, '(deleted)', '') # Rename issue title and body
client.issue_comments(repo, issue.number).each do |comment|
  client.delete_comment(repo, comment.id)
end