From 76f7079cb1f1c56da099664914d1c514213339d0 Mon Sep 17 00:00:00 2001 From: Stefano Rivera Date: Fri, 26 Nov 2010 18:38:51 +0200 Subject: [PATCH] Add --sort-binary-packages (LP: #681119) --- debian/changelog | 3 ++- doc/wrap-and-sort.1 | 3 +++ wrap-and-sort | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/debian/changelog b/debian/changelog index c9f358b..6b20677 100644 --- a/debian/changelog +++ b/debian/changelog @@ -10,6 +10,7 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low - Remove null-entry from trailing comma in sorted lists - Add configurable debian directory location - Sort Architecture (LP: #681131) + - Add --sort-binary-packages (LP: #681119) * dgetlp, grab-merge, pull-lp-source, syncpackage: Export DEB_VENDOR=Ubuntu when unpacking source packages. 3.0 (quilt) has optional per-vendor patch series. @@ -18,7 +19,7 @@ ubuntu-dev-tools (0.107) UNRELEASED; urgency=low * wrap-and-sort: Remove duplicate items from sorted lists. * syncpackage: Fix error message for failed downloads. - -- Stefano Rivera Fri, 26 Nov 2010 18:01:54 +0200 + -- Stefano Rivera Fri, 26 Nov 2010 18:38:05 +0200 ubuntu-dev-tools (0.106) experimental; urgency=low diff --git a/doc/wrap-and-sort.1 b/doc/wrap-and-sort.1 index 54f78d3..5e0e8ec 100644 --- a/doc/wrap-and-sort.1 +++ b/doc/wrap-and-sort.1 @@ -44,6 +44,9 @@ line only indent wrapped lines by one space (default is in\-line with the field name) .TP +\fB\-b\fR, \fB\-\-sort\-binary\-packages\fR +sort binary package paragraphs by name +.TP \fB\-n\fR, \fB\-\-no\-cleanup\fR do not remove trailing whitespaces .TP diff --git a/wrap-and-sort b/wrap-and-sort index f98efc0..c951636 100755 --- a/wrap-and-sort +++ b/wrap-and-sort @@ -54,7 +54,7 @@ class Control(object): f.write(content.encode("utf-8")) f.close() - def wrap_and_sort(self, wrap_always, short_indent): + def wrap_and_sort(self, wrap_always, short_indent, sort_paragraphs): for paragraph in self.paragraphs: for field in CONTROL_LIST_FIELDS: if field in paragraph: @@ -69,6 +69,11 @@ class Control(object): archs = sorted(archs, key=lambda x: (1 - int("any" in x), x)) paragraph["Architecture"] = " ".join(archs) + if sort_paragraphs: + # Sort with Source package first, by binary Package Name + key = lambda x: "" if "Source" in x else x["Package"] + self.paragraphs = sorted(self.paragraphs, key=key) + def _wrap_field(self, control, entry, wrap_always, short_indent, sort=True): packages = map(lambda x: x.strip(), control[entry].split(",")) if sort: @@ -138,7 +143,8 @@ def main(options): if options.verbose: print control_file control = Control(control_file, options.cleanup) - control.wrap_and_sort(options.wrap_always, options.short_indent) + control.wrap_and_sort(options.wrap_always, options.short_indent, + options.sort_binary_packages) control.save() copyright_files = filter(os.path.isfile, @@ -171,6 +177,10 @@ if __name__ == "__main__": help="only indent wrapped lines by one space (default is " "in-line with the field name)", action="store_true", default=False) + parser.add_option("-b", "--sort-binary-packages", + help="Sort binary package paragraphs by name", + dest="sort_binary_packages", action="store_true", + default=False) parser.add_option("-n", "--no-cleanup", help="don't cleanup whitespaces", dest="cleanup", action="store_false", default=True) parser.add_option("-d", "--debian-directory", dest="debian_directory",