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