ForgePatch/submodule_changlog.py

51 lines
1.5 KiB
Python

import subprocess, sys, os
from pprint import pformat
from optparse import OptionParser
def run_command(command, cwd='.'):
#print('Running command: ')
process = subprocess.Popen(command, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=1, cwd=cwd)
out, err = process.communicate()
out = out.strip('\n')
#print(pformat(out.split('\n')))
if process.returncode:
print('failed: %d' % process.returncode)
return None
return out.split('\n')
def main(options, args):
output = run_command(['git', 'diff', '--no-color', '--', 'fml'])
if output is None:
print('Failed to grab submodule commits')
sys.exit(1)
start = None
end = None
for line in output:
if not 'Subproject commit' in line:
continue
if line[0:18] == '-Subproject commit':
start = line[19:]
elif line[0:18] == '+Subproject commit':
end = line[19:]
if end.endswith('-dirty'):
end = end[0:len(end)-6]
if start == None or end == None:
print('Could not extract start and end range')
sys.exit(1)
#print('Start: %s' % start)
#print('End: %s' % end)
output = run_command(['git', 'log', '--reverse', '--pretty=oneline', '%s...%s' % (start, end)], './fml')
print('Updated FML:')
for line in output:
print('MinecraftForge/FML@%s' % line)
if __name__ == '__main__':
parser = OptionParser()
options, args = parser.parse_args()
main(options, args)