Skip to content

Instantly share code, notes, and snippets.

@nvahalik
Created December 2, 2015 03:30
Show Gist options
  • Save nvahalik/c67b83f781298426d268 to your computer and use it in GitHub Desktop.
Save nvahalik/c67b83f781298426d268 to your computer and use it in GitHub Desktop.
Drupal patch maker
#!/usr/local/bin/python
import json
import re
import urllib2
import subprocess
class Issue:
def __init__(self, number):
self.number = number
self.data = {}
def loadResource(self):
if (len(self.data) != 0):
return self.data
response = urllib2.urlopen('https://www.drupal.org/api-d7/node/' + self.number + '.json')
data = response.read()
self.data = json.loads(data)
return self.data
def getNextComment(self):
data = self.loadResource()
return len(data['comments']) + 1
def getPatchName(self):
return str(self.number) + '-' + str(self.getNextComment()) + '-' + self.getPatchMachineTitle() + '.patch';
def getPatchMachineTitle(self):
data = self.loadResource()
title = data['title'].lower();
# Remove special chars.
title = re.sub(r'[^ a-z]', '-', title)
# Grab the first 5 words.
return '_'.join(title.split(' ')[:5])
def getVersion(self):
data = self.loadResource()
if (data['field_issue_version'][-4:] == "-dev"):
return data['field_issue_version'][:-4]
return data['field_issue_version']
def getGitTicket():
output = ''
branch_output = subprocess.Popen(['git', 'branch'], stdout=subprocess.PIPE)
while True:
line = branch_output.stdout.readline()
if line[0] == '*':
value = re.findall('\* (\d+)', line)
return value[0]
break
if __name__ == '__main__':
import sys
if (len(sys.argv) == 1):
ticket = getGitTicket()
# print ticket
project = Issue(ticket)
parent_branch = project.getVersion()
patch_filename = project.getPatchName()
interdiff_filename = str(ticket) + '-' + str(project.getNextComment()) + '-interdiff.txt'
subprocess.call('git diff ' + parent_branch + ' > ' + patch_filename, shell = True);
subprocess.call('git diff > ' + interdiff_filename, shell = True);
subprocess.call('/usr/bin/open .', shell = True);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment