1*1b3f573fSAndroid Build Coastguard Worker#!/usr/bin/env python 2*1b3f573fSAndroid Build Coastguard Worker 3*1b3f573fSAndroid Build Coastguard Worker"""Generates a friendly list of changes per language since the last release.""" 4*1b3f573fSAndroid Build Coastguard Worker 5*1b3f573fSAndroid Build Coastguard Workerimport sys 6*1b3f573fSAndroid Build Coastguard Workerimport os 7*1b3f573fSAndroid Build Coastguard Worker 8*1b3f573fSAndroid Build Coastguard Workerclass Language(object): 9*1b3f573fSAndroid Build Coastguard Worker def __init__(self, name, pathspec): 10*1b3f573fSAndroid Build Coastguard Worker self.name = name 11*1b3f573fSAndroid Build Coastguard Worker self.pathspec = pathspec 12*1b3f573fSAndroid Build Coastguard Worker 13*1b3f573fSAndroid Build Coastguard Workerlanguages = [ 14*1b3f573fSAndroid Build Coastguard Worker Language("C++", [ 15*1b3f573fSAndroid Build Coastguard Worker "':(glob)src/google/protobuf/*'", 16*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/cpp", 17*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/io", 18*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/util", 19*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/stubs", 20*1b3f573fSAndroid Build Coastguard Worker ]), 21*1b3f573fSAndroid Build Coastguard Worker Language("Java", [ 22*1b3f573fSAndroid Build Coastguard Worker "java", 23*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/java", 24*1b3f573fSAndroid Build Coastguard Worker ]), 25*1b3f573fSAndroid Build Coastguard Worker Language("Python", [ 26*1b3f573fSAndroid Build Coastguard Worker "python", 27*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/python", 28*1b3f573fSAndroid Build Coastguard Worker ]), 29*1b3f573fSAndroid Build Coastguard Worker Language("PHP", [ 30*1b3f573fSAndroid Build Coastguard Worker "php", 31*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/php", 32*1b3f573fSAndroid Build Coastguard Worker ]), 33*1b3f573fSAndroid Build Coastguard Worker Language("Ruby", [ 34*1b3f573fSAndroid Build Coastguard Worker "ruby", 35*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/ruby", 36*1b3f573fSAndroid Build Coastguard Worker ]), 37*1b3f573fSAndroid Build Coastguard Worker Language("Csharp", [ 38*1b3f573fSAndroid Build Coastguard Worker "csharp", 39*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/csharp", 40*1b3f573fSAndroid Build Coastguard Worker ]), 41*1b3f573fSAndroid Build Coastguard Worker Language("Objective C", [ 42*1b3f573fSAndroid Build Coastguard Worker "objectivec", 43*1b3f573fSAndroid Build Coastguard Worker "src/google/protobuf/compiler/objectivec", 44*1b3f573fSAndroid Build Coastguard Worker ]), 45*1b3f573fSAndroid Build Coastguard Worker] 46*1b3f573fSAndroid Build Coastguard Worker 47*1b3f573fSAndroid Build Coastguard Workerif len(sys.argv) < 2: 48*1b3f573fSAndroid Build Coastguard Worker print("Usage: generate_changelog.py <previous release>") 49*1b3f573fSAndroid Build Coastguard Worker sys.exit(1) 50*1b3f573fSAndroid Build Coastguard Worker 51*1b3f573fSAndroid Build Coastguard Workerprevious = sys.argv[1] 52*1b3f573fSAndroid Build Coastguard Worker 53*1b3f573fSAndroid Build Coastguard Workerfor language in languages: 54*1b3f573fSAndroid Build Coastguard Worker print(language.name) 55*1b3f573fSAndroid Build Coastguard Worker sys.stdout.flush() 56*1b3f573fSAndroid Build Coastguard Worker os.system(("git log --pretty=oneline --abbrev-commit %s...HEAD %s | " + 57*1b3f573fSAndroid Build Coastguard Worker "sed -e 's/^/ - /'") % (previous, " ".join(language.pathspec))) 58*1b3f573fSAndroid Build Coastguard Worker print("") 59*1b3f573fSAndroid Build Coastguard Worker 60*1b3f573fSAndroid Build Coastguard Workerprint("To view a commit on GitHub: " + 61*1b3f573fSAndroid Build Coastguard Worker "https://github.com/protocolbuffers/protobuf/commit/<commit id>") 62