|
|
|
#!/usr/bin/env python
|
|
|
|
|
|
|
|
"""Generates a friendly list of changes per language since the last release."""
|
|
|
|
|
|
|
|
import sys
|
|
|
|
import os
|
|
|
|
|
|
|
|
class Language(object):
|
|
|
|
def __init__(self, name, pathspec):
|
|
|
|
self.name = name
|
|
|
|
self.pathspec = pathspec
|
|
|
|
|
|
|
|
languages = [
|
|
|
|
Language("C++", [
|
|
|
|
"':(glob)src/google/protobuf/*'",
|
|
|
|
"src/google/protobuf/compiler/cpp",
|
|
|
|
"src/google/protobuf/io",
|
|
|
|
"src/google/protobuf/util",
|
|
|
|
"src/google/protobuf/stubs",
|
|
|
|
]),
|
|
|
|
Language("Java", [
|
|
|
|
"java",
|
|
|
|
"src/google/protobuf/compiler/java",
|
|
|
|
]),
|
|
|
|
Language("Python", [
|
|
|
|
"python",
|
|
|
|
"src/google/protobuf/compiler/python",
|
|
|
|
]),
|
|
|
|
Language("JavaScript", [
|
|
|
|
"js",
|
|
|
|
"src/google/protobuf/compiler/js",
|
|
|
|
]),
|
|
|
|
Language("PHP", [
|
|
|
|
"php",
|
|
|
|
"src/google/protobuf/compiler/php",
|
|
|
|
]),
|
|
|
|
Language("Ruby", [
|
|
|
|
"ruby",
|
|
|
|
"src/google/protobuf/compiler/ruby",
|
|
|
|
]),
|
|
|
|
Language("Csharp", [
|
|
|
|
"csharp",
|
|
|
|
"src/google/protobuf/compiler/csharp",
|
|
|
|
]),
|
|
|
|
Language("Objective C", [
|
|
|
|
"objectivec",
|
|
|
|
"src/google/protobuf/compiler/objectivec",
|
|
|
|
]),
|
|
|
|
]
|
|
|
|
|
|
|
|
if len(sys.argv) < 2:
|
|
|
|
print("Usage: generate_changelog.py <previous release>")
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
previous = sys.argv[1]
|
|
|
|
|
|
|
|
for language in languages:
|
|
|
|
print(language.name)
|
|
|
|
sys.stdout.flush()
|
|
|
|
os.system(("git log --pretty=oneline --abbrev-commit %s...HEAD %s | " +
|
|
|
|
"sed -e 's/^/ - /'") % (previous, " ".join(language.pathspec)))
|
|
|
|
print("")
|
|
|
|
|
|
|
|
print("To view a commit on GitHub: " +
|
|
|
|
"https://github.com/protocolbuffers/protobuf/commit/<commit id>")
|