--- /dev/null
+#!/usr/bin/python
+import json
+import sys
+import re
+import commands
+import datetime
+
+CHANGELOG_FORMAT=ur"""newslash ({describe}) unstable; urgency=low
+
+{changes}
+
+-- {packager} {date}
+"""
+CHANGES_FORMAT=ur""" * {subject} ({committer}, {date})"""
+PACKAGER="Hiromichi MATSUSHIMA <hirom@osdn.jp>"
+
+def get_desc(hs):
+ cmd = "git describe --tags " + hs
+ rs = commands.getoutput(cmd)
+ return rs
+
+def main():
+ counter = 0
+ logs = []
+ item = {}
+
+ for l in sys.stdin:
+ l = l.strip()
+ if counter == 0:
+ item["hash"] = l
+ elif counter == 1:
+ item["subject"] = l
+ elif counter == 2:
+ item["date"] = l
+ elif counter == 3:
+ item["committer"] = l
+ elif counter == 4:
+ item["email"] = l
+ counter += 1
+ if re.match(r'^\s*$', l):
+ counter = 0
+ logs.append(item)
+ item = {}
+ if counter != 0:
+ logs.append(item)
+
+ output_changelog(logs)
+
+def _output_item(target, changes):
+ data = {}
+ data["describe"] = get_desc((target["hash"].split())[0])
+ data["date"] = target["date"]
+ data["changes"] = "\n".join(changes)
+ data["packager"] = PACKAGER
+ print CHANGELOG_FORMAT.format(**data)
+
+def output_changelog(logs):
+ changes = []
+ target = logs[0]
+ for item in logs:
+ t = item["hash"].split()
+ commit = t[0]
+ tag = ""
+ m = re.match(r"\(tags/([^~]*)(~.*)?\)", t[1])
+ if m:
+ if not m.group(2):
+ tag = m.group(1)
+
+ if tag:
+ _output_item(target, changes)
+ changes = []
+ target = item
+ changes.append(CHANGES_FORMAT.format(**item))
+
+ _output_item(target, changes)
+
+if __name__ == '__main__':
+ main()