# pylint: disable=g-bad-file-header # Copyright 2015 The Bazel Authors. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """This tool convert Bazel's changelog file to debian changelog format.""" from datetime import datetime import sys def main(input_file, changelog_file, output_file): changelog_out = open(output_file, "w") changelog = None version = None with open(input_file, "r") as status_file: for line in status_file: line = line.strip() if line.startswith("RELEASE_NOTES"): changelog = line[14:].strip().replace("\f", "\n") elif line.startswith("RELEASE_NAME"): version = line[13:].strip() if changelog: time_stamp = None lines = changelog.split("\n") header = lines[0] lines = lines[4:] # Skip the header if lines[0] == "Cherry picks:": # Skip cherry picks list i = 1 while i < len(lines) and lines[i].strip(): i += 1 lines = lines[i + 1:] # Process header parts = header.split(" ") time_stamp = datetime.strptime( parts[2], "(%Y-%m-%d)").strftime("%a, %d %b %Y %H:%M:%S +0100") changelog_out.write("bazel (%s) unstable; urgency=low\n" % version) for line in lines: if line.startswith("+") or line.startswith("-"): parts = line.split(" ") line = "*" + line[1:] changelog_out.write(" %s\n" % line) elif line.endswith(":"): changelog_out.write("\n %s\n" % line) elif line: changelog_out.write(" %s\n" % line) if time_stamp: changelog_out.write( "\n -- The Bazel Authors %s\n\n" % time_stamp) else: # Develeopment version, generate a changelog from the change log file with open(changelog_file, "r") as changelog_in: for line in changelog_in: line = line.strip() if line.startswith("## Release"): parts = line.split(" ") version = parts[2] time_stamp = datetime.strptime( parts[3], "(%Y-%m-%d)").strftime("%a, %d %b %Y %H:%M:%S +0100") changelog_out.write("bazel (%s~HEAD) unstable; urgency=low\n" % version) changelog_out.write(" Development version\n") changelog_out.write( "\n -- The Bazel Authors %s\n\n" % time_stamp) # Stop after parsing latest release return if __name__ == "__main__": main(sys.argv[1], sys.argv[2], sys.argv[3])