Last active
November 25, 2015 15:34
-
-
Save topherfangio/957325e18adf64897aa3 to your computer and use it in GitHub Desktop.
Quick GitHub branch/issue analyzer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
############ | |
# OVERVIEW # | |
############ | |
# | |
# This (very rudimentary) script will show you the status of issues that your | |
# branches are tied to. | |
# | |
# To use, install it with the instructions below, and make sure to include the | |
# issue number in your branch name like so: | |
# | |
# fix-some-fun-bug-1324 | |
# feature-something-cool-5678 | |
# | |
# It will show you all local branches with the status next to them and then | |
# print out a command you can copy/paste (after reviewing) to delete all | |
# branches where the issue has been closed. | |
# | |
################# | |
# SAMPLE OUTPUT # | |
################# | |
# | |
# STATE | BRANCH | |
# -------|------------------------------------------ | |
# | master | |
# | team/topher/add-missing-docs | |
# open | team/topher/docs-layout-tips-5652 | |
# open | team/topher/fix-autocomplete-click-5424 | |
# closed | team/topher/fix-disabled-list-icon-3356 | |
# open | team/topher/fix-messages-jumps-5298 | |
# | * wip/toolTip_positioning | |
# | |
# Safe to Delete: | |
# git branch -D team/topher/fix-disabled-list-icon-3356 | |
# | |
################ | |
# INSTALLATION # | |
################ | |
# | |
# You must have ruby/rubygems installed. Then run | |
# | |
# gem install ghee table_print | |
# | |
# Then, just put this file somewhere in your path like ~/bin, | |
# chmod it to make it executable, then run the following in | |
# your repo's directory | |
# | |
# ~/bin/branch-analyzer.rb | |
# | |
##################### | |
# TODO (eventually) # | |
##################### | |
# | |
# 1. Replace username/password with SSH or OAUTH key generation | |
# 2. Check current directory for repo name instead of hard-coding | |
# 3. Show other useful issue data (description, # comments, etc) | |
# | |
require 'Ghee' | |
require 'table_print' | |
# Authenticate with GitHub | |
gh = Ghee.basic_auth("USERNAME", "PASSWORD") # Replace with your GH credentials | |
# Get our list of branches | |
branches = `git branch` | |
safe_to_delete = [] | |
stats = branches.split("\n").map do |branch| | |
issue_number = branch[/\d+/] | |
issue = gh.repos("USERNAME", "REPO").issues(issue_number) if issue_number # Replace with the username/repo you want to analyze | |
state = issue['state'] if issue | |
if state == "closed" | |
safe_to_delete << branch | |
end | |
{ state: state, branch: branch } | |
end | |
# Print out the branches and status table | |
tp stats, :state, branch: { width: 50 } | |
# Check to see if we have any branches that are safe to delete and print them out | |
if safe_to_delete.size > 0 | |
puts "\n\nSafe to Delete:" | |
puts " git branch -D #{safe_to_delete.join('')}" | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment