This is an automated email from the git hooks/post-receive script. bdrung pushed a commit to branch master in repository devscripts.
commit 5b9506ac4a5ec73e0cc14ba227d8938e8bd4d15c Author: Benjamin Drung <bdr...@debian.org> Date: Sun Feb 4 22:49:16 2018 +0100 Fix all pylint3 issues Signed-off-by: Benjamin Drung <bdr...@debian.org> --- scripts/debdiff-apply | 73 ++++++++++--------- scripts/devscripts/test/__init__.py | 8 ++ scripts/devscripts/test/test_help.py | 8 +- scripts/devscripts/test/test_pylint.py | 6 +- scripts/reproducible-check | 26 ++++--- scripts/sadt | 20 ++--- scripts/setup.py | 27 ++++--- scripts/suspicious-source | 59 +++++++-------- scripts/wrap-and-sort | 129 ++++++++++++++++----------------- 9 files changed, 185 insertions(+), 171 deletions(-) diff --git a/scripts/debdiff-apply b/scripts/debdiff-apply index 1f7b0e8..2b2a613 100755 --- a/scripts/debdiff-apply +++ b/scripts/debdiff-apply @@ -26,18 +26,15 @@ import email.utils import hashlib import logging import os -import unidiff import shutil import subprocess import sys import tempfile import time -from debian.changelog import Changelog, ChangeBlock +import unidiff -dirname = os.path.dirname -basename = os.path.basename -C = subprocess.check_call +from debian.changelog import Changelog, ChangeBlock # this can be any valid value, it doesn't appear in the final output DCH_DUMMY_TAIL = "\n -- debdiff-apply dummy tool <infini...@debian.org> " \ @@ -48,15 +45,16 @@ DISTRIBUTION_DEFAULT = "experimental" def workaround_dpkg_865430(dscfile, origdir, stdout): - f = subprocess.check_output(["dcmd", "--tar", "echo", dscfile]).rstrip() - if not os.path.exists(os.path.join(origdir.encode("utf-8"), os.path.basename(f))): - C(["dcmd", "--tar", "cp", dscfile, origdir], stdout=stdout) + filename = subprocess.check_output(["dcmd", "--tar", "echo", dscfile]).rstrip() + if not os.path.exists(os.path.join(origdir.encode("utf-8"), os.path.basename(filename))): + subprocess.check_call(["dcmd", "--tar", "cp", dscfile, origdir], stdout=stdout) def is_dch(path): - return (basename(path) == 'changelog' - and basename(dirname(path)) == 'debian' - and dirname(dirname(dirname(path))) == '') + dirname = os.path.dirname(path) + return (os.path.basename(path) == 'changelog' + and os.path.basename(dirname) == 'debian' + and os.path.dirname(os.path.dirname(dirname)) == '') def hunk_lines_to_str(hunk_lines): @@ -77,15 +75,16 @@ def read_dch_patch(dch_patch): return source_version, target -def apply_dch_patch(source_file, current, patch_name, old_version, target, dry_run): +def apply_dch_patch(source_file, current, old_version, target, dry_run): target_version = str(target.version) if not old_version or not target_version.startswith(old_version): - logging.warn("don't know how to rebase version-change (%s => %s) onto %s" % - (old_version, target_version, old_version)) + logging.warning("don't know how to rebase version-change (%s => %s) onto %s", + old_version, target_version, old_version) newlog = subprocess.getoutput("EDITOR=cat dch -n 2>/dev/null").rstrip() version = str(Changelog(newlog, 1)[0].version) - logging.warn("using version %s based on `dch -n`; feel free to make me smarter", version) + logging.warning("using version %s based on `dch -n`; feel free to make me smarter", + version) else: version_suffix = target_version[len(old_version):] version = str(current[0].version) + version_suffix @@ -94,7 +93,7 @@ def apply_dch_patch(source_file, current, patch_name, old_version, target, dry_r if dry_run: return version - current._blocks.insert(0, target) + current._blocks.insert(0, target) # pylint: disable=protected-access current.set_version(version) shutil.copy(source_file, source_file + ".new") @@ -103,10 +102,11 @@ def apply_dch_patch(source_file, current, patch_name, old_version, target, dry_r current.write_to_open_file(fp) os.rename(source_file + ".new", source_file) except Exception: - logging.warn("failed to patch %s", source_file) - logging.warn("half-applied changes in %s", source_file + ".new") - logging.warn("current working directory is %s", os.getcwd()) + logging.warning("failed to patch %s", source_file) + logging.warning("half-applied changes in %s", source_file + ".new") + logging.warning("current working directory is %s", os.getcwd()) raise + return version def call_patch(patch_str, *args, check=True, **kwargs): @@ -134,7 +134,7 @@ def debdiff_apply(patch, patch_name, args): changelog = list(filter(lambda x: is_dch(x.path), patch)) if not changelog: - logging.info("no debian/changelog in patch: %s" % args.patch_file) + logging.info("no debian/changelog in patch: %s", args.patch_file) old_version = None target = ChangeBlock( package=CHBLOCK_DUMMY_PACKAGE, @@ -169,15 +169,14 @@ def debdiff_apply(patch, patch_name, args): call_patch(patch_str) logging.info("patch %s applies!", patch_name) elif check_patch(patch_str, "-R"): - logging.warn("patch %s already applied", patch_name) + logging.warning("patch %s already applied", patch_name) return False else: call_patch(patch_str, "--dry-run", "-f") - raise ValueError("patch %s doesn't apply!", patch_name) + raise ValueError("patch %s doesn't apply!" % (patch_name)) # only apply d/changelog patch if the rest of the patch applied - new_version = apply_dch_patch(args.changelog, current, patch_name, - old_version, target, dry_run) + new_version = apply_dch_patch(args.changelog, current, old_version, target, dry_run) if args.target_version: print(new_version) return False @@ -189,7 +188,7 @@ def debdiff_apply(patch, patch_name, args): return True -def main(args): +def parse_args(args): parser = argparse.ArgumentParser( description='Apply a debdiff to a Debian source package') parser.add_argument( @@ -250,8 +249,12 @@ def main(args): "after debdiff-apply(1) exits. If not given, then it will be extracted to a " "temporary directory.", ) - args = parser.parse_args(args) + return parser.parse_args(args) + +def main(args): + # Split this function! pylint: disable=too-many-branches,too-many-locals,too-many-statements + args = parse_args(args) if args.verbose: logging.getLogger().setLevel(logging.DEBUG) @@ -261,14 +264,14 @@ def main(args): try: patch = unidiff.PatchSet(data.splitlines(keepends=True), encoding=enc) break - except Exception: + except Exception: # pylint: disable=broad-except if enc == TRY_ENCODINGS[-1]: raise else: continue patch_name = '%s:%s' % ( - basename(args.patch_file), + os.path.basename(args.patch_file), hashlib.sha256(data).hexdigest()[:20 if args.patch_file == '/dev/stdin' else 8]) quiet = args.source_version or args.target_version dry_run = args.source_version or args.target_version @@ -288,7 +291,8 @@ def main(args): os.makedirs(extractdir) try: builddir = os.path.join(extractdir, parts[0]) # dpkg-source doesn't like existing dirs - C(["dpkg-source", "-x", "--skip-patches", dscfile, builddir], stdout=stdout) + subprocess.check_call(["dpkg-source", "-x", "--skip-patches", dscfile, builddir], + stdout=stdout) origdir = os.getcwd() workaround_dpkg_865430(dscfile, origdir, stdout) os.chdir(builddir) @@ -297,22 +301,21 @@ def main(args): return os.chdir(origdir) try: - C(["dpkg-source", "-b", builddir]) + subprocess.check_call(["dpkg-source", "-b", builddir]) except subprocess.CalledProcessError: if args.quilt_refresh: - C(["sh", "-c", """ + subprocess.check_call(["sh", "-c", """ set -ex export QUILT_PATCHES=debian/patches while quilt push; do quilt refresh; done -""" - ], cwd=builddir) - C(["dpkg-source", "-b", builddir]) +"""], cwd=builddir) + subprocess.check_call(["dpkg-source", "-b", builddir]) else: raise finally: cleandir = builddir if args.directory else extractdir if args.no_clean: - logging.warn("you should clean up temp files in %s", cleandir) + logging.warning("you should clean up temp files in %s", cleandir) else: shutil.rmtree(cleandir) diff --git a/scripts/devscripts/test/__init__.py b/scripts/devscripts/test/__init__.py index f19955c..3de1e9e 100644 --- a/scripts/devscripts/test/__init__.py +++ b/scripts/devscripts/test/__init__.py @@ -22,6 +22,14 @@ if sys.version_info < (2, 7): else: import unittest +SCRIPTS = [ + "debdiff-apply", + "reproducible-check", + "sadt", + "suspicious-source", + "wrap-and-sort", +] + def discover(): # import __main__ triggers code re-execution diff --git a/scripts/devscripts/test/test_help.py b/scripts/devscripts/test/test_help.py index 33ceb03..42a7d10 100644 --- a/scripts/devscripts/test/test_help.py +++ b/scripts/devscripts/test/test_help.py @@ -20,14 +20,14 @@ import select import signal import subprocess import time +import unittest -import setup -from devscripts.test import unittest +from . import SCRIPTS TIMEOUT = 5 -def load_tests(loader, tests, pattern): +def load_tests(loader, tests, pattern): # pylint: disable=unused-argument "Give HelpTestCase a chance to populate before loading its test cases" suite = unittest.TestSuite() HelpTestCase.populate() @@ -38,7 +38,7 @@ def load_tests(loader, tests, pattern): class HelpTestCase(unittest.TestCase): @classmethod def populate(cls): - for script in setup.scripts: + for script in SCRIPTS: setattr(cls, 'test_' + script, cls.make_help_tester(script)) @classmethod diff --git a/scripts/devscripts/test/test_pylint.py b/scripts/devscripts/test/test_pylint.py index 33b0b9c..591dfe0 100644 --- a/scripts/devscripts/test/test_pylint.py +++ b/scripts/devscripts/test/test_pylint.py @@ -16,9 +16,9 @@ import re import subprocess +import unittest -import setup -from devscripts.test import unittest +from . import SCRIPTS WHITELIST = [re.compile(': %s$' % x) for x in ( # Wildcard import: @@ -35,7 +35,7 @@ class PylintTestCase(unittest.TestCase): def test_pylint(self): "Test: Run pylint on Python source code" files = ['devscripts'] - for script in setup.scripts: + for script in SCRIPTS: f = open(script, 'r', encoding='utf-8') if 'python' in f.readline(): files.append(script) diff --git a/scripts/reproducible-check b/scripts/reproducible-check index eed705a..852731a 100755 --- a/scripts/reproducible-check +++ b/scripts/reproducible-check @@ -15,16 +15,17 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -import os +import argparse import bz2 -import apt -import sys +import collections import json -import time import logging +import os +import sys +import time + +import apt import requests -import argparse -import collections try: from xdg.BaseDirectory import xdg_cache_home @@ -138,7 +139,8 @@ class ReproducibleCheck(object): if y['status'] == 'unreproducible' } - def get_installed_packages(self): + @staticmethod + def get_installed_packages(): result = collections.defaultdict(list) for x in apt.Cache(): @@ -151,7 +153,8 @@ class ReproducibleCheck(object): return result - def output_by_source(self, unreproducible, installed): + @staticmethod + def output_by_source(unreproducible, installed): num_installed = sum(len(x) for x in installed.keys()) num_unreproducible = sum(len(x) for x in unreproducible.keys()) default_architecture = apt.apt_pkg.config.find('APT::Architecture') @@ -173,14 +176,15 @@ class ReproducibleCheck(object): source, )) - x = "{}/{} ({:.2f}%) of installed binary packages are unreproducible." - print(x.format( + msg = "{}/{} ({:.2f}%) of installed binary packages are unreproducible." + print(msg.format( num_unreproducible, num_installed, 100. * num_unreproducible / num_installed, )) - def output_raw(self, unreproducible, installed): + @staticmethod + def output_raw(unreproducible, installed): # pylint: disable=unused-argument for x in sorted(x for xs in unreproducible.values() for x in set(xs)): print(x) diff --git a/scripts/sadt b/scripts/sadt index 32fb57a..cb96c5a 100755 --- a/scripts/sadt +++ b/scripts/sadt @@ -99,7 +99,8 @@ class Progress(object): else: self._back = '' - def _write(self, s): + @staticmethod + def _write(s): sys.stdout.write(s) sys.stdout.flush() @@ -172,6 +173,7 @@ class TestGroup(object): self.depends = '@' self.tests_directory = 'debian/tests' self._check_depends_cache = None + self._depends_cache = None def __iter__(self): return iter(self.tests) @@ -211,7 +213,7 @@ class TestGroup(object): def check_depends(self): if self._check_depends_cache is not None: if isinstance(self._depends_cache, Exception): - raise self._check_depends_cache + raise self._check_depends_cache # false positive, pylint: disable=raising-bad-type return child = ipc.Popen(['dpkg-checkbuilddeps', '-d', self.depends], stderr=ipc.PIPE, env={}) error = child.stderr.read().decode('ASCII') @@ -229,7 +231,7 @@ class TestGroup(object): def check_restrictions(self, ignored_restrictions): restrictions = self.restrictions - frozenset(ignored_restrictions) - class Options: + class Options: # pylint: disable=too-few-public-methods rw_build_tree_needed = False allow_stderr = False for r in restrictions: @@ -289,7 +291,7 @@ class TestGroup(object): if cwd is not None: os.chdir(cwd) - def _run(self, test, progress, allow_stderr=False): + def _run(self, test, progress, allow_stderr=False): # pylint: disable=too-many-locals path = os.path.join(self.tests_directory, test) tmpdir1 = tempfile.mkdtemp(prefix='sadt.') tmpdir2 = tempfile.mkdtemp(prefix='sadt.') @@ -352,10 +354,9 @@ def copy_build_tree(): def main(): - for description in __doc__.splitlines(): - if description: - break - parser = argparse.ArgumentParser(description=description) + # TODO: refactor main function + # pylint: disable=too-many-branches,too-many-statements,too-many-locals,too-many-nested-blocks + parser = argparse.ArgumentParser(description=__doc__.strip()) parser.add_argument('-v', '--verbose', action='store_true', help='verbose output') parser.add_argument('-b', '--built-source-tree', action='store_true', help='assume built source tree') @@ -377,7 +378,8 @@ def main(): with file: for n, para in enumerate(deb822.Packages.iter_paragraphs(file)): if n == 0: - para['Source'] + # FIXME statement with no effect + # para['Source'] for field in 'Build-Depends', 'Build-Depends-Indep': try: build_depends += deb822.PkgRelation.parse_relations(para[field]) diff --git a/scripts/setup.py b/scripts/setup.py index 091e4d3..b0e7bd2 100755 --- a/scripts/setup.py +++ b/scripts/setup.py @@ -1,24 +1,29 @@ #!/usr/bin/python3 -from setuptools import setup import os import re -# look/set what version we have -changelog = "../debian/changelog" -if os.path.exists(changelog): - head = open(changelog, encoding="utf8").readline() - match = re.compile(".*\((.*)\).*").match(head) - if match: - version = match.group(1) +from setuptools import setup + +from devscripts.test import SCRIPTS + + +def get_version(): + # look/set what version we have + changelog = "../debian/changelog" + if os.path.exists(changelog): + head = open(changelog, encoding="utf8").readline() + match = re.compile(r".*\((.*)\).*").match(head) + if match: + return match.group(1) + raise Exception("Failed to determine version from debian/changelog") -scripts = "debdiff-apply sadt suspicious-source wrap-and-sort reproducible-check".split() if __name__ == '__main__': setup( name='devscripts', - version=version, - scripts=scripts, + version=get_version(), + scripts=SCRIPTS, packages=['devscripts', 'devscripts/test'], test_suite='devscripts.test.discover', ) diff --git a/scripts/suspicious-source b/scripts/suspicious-source index c860b10..27b69f6 100755 --- a/scripts/suspicious-source +++ b/scripts/suspicious-source @@ -1,6 +1,6 @@ #!/usr/bin/python3 -# Copyright (c) 2010-2014, Benjamin Drung <bdr...@debian.org> +# Copyright (c) 2010-2018, Benjamin Drung <bdr...@debian.org> # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,7 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -import optparse +import argparse import os import sys @@ -109,12 +109,12 @@ def suspicious_source(whitelisted_mimetypes, whitelisted_extensions, directory, magic_cookie.load() for root, dirs, files in os.walk(directory): - for f in files: - mimetype = magic_cookie.file(os.path.join(root, f)) + for _file in files: + mimetype = magic_cookie.file(os.path.join(root, _file)) if mimetype not in whitelisted_mimetypes: if not [x for x in whitelisted_extensions - if f.lower().endswith(x)]: - output = os.path.join(root, f) + if _file.lower().endswith(x)]: + output = os.path.join(root, _file) if verbose: output += " (" + mimetype + ")" print(output) @@ -125,33 +125,28 @@ def suspicious_source(whitelisted_mimetypes, whitelisted_extensions, directory, def main(): script_name = os.path.basename(sys.argv[0]) - usage = "%s [options]" % (script_name) epilog = "See %s(1) for more info." % (script_name) - parser = optparse.OptionParser(usage=usage, epilog=epilog) - - parser.add_option("-v", "--verbose", help="print more information", - dest="verbose", action="store_true", default=False) - parser.add_option("-d", "--directory", - help="check the files in the specified directory", - dest="directory", default=".") - parser.add_option("-m", "--mimetype", metavar="MIMETYPE", - help="Add MIMETYPE to list of whitelisted mimetypes.", - dest="whitelisted_mimetypes", action="append", - default=DEFAULT_WHITELISTED_MIMETYPES) - parser.add_option("-e", "--extension", metavar="EXTENSION", - help="Add EXTENSION to list of whitelisted extensions.", - dest="whitelisted_extensions", action="append", - default=DEFAULT_WHITELISTED_EXTENSIONS) - - (options, args) = parser.parse_args() - - if len(args) != 0: - Logger.error("This script does not take any additional parameters.") - sys.exit(1) - - whitelisted_extensions = [x.lower() for x in options.whitelisted_extensions] - suspicious_source(options.whitelisted_mimetypes, whitelisted_extensions, - options.directory, options.verbose) + parser = argparse.ArgumentParser(epilog=epilog) + + parser.add_argument("-v", "--verbose", help="print more information", + dest="verbose", action="store_true", default=False) + parser.add_argument("-d", "--directory", + help="check the files in the specified directory", + dest="directory", default=".") + parser.add_argument("-m", "--mimetype", metavar="MIMETYPE", + help="Add MIMETYPE to list of whitelisted mimetypes.", + dest="whitelisted_mimetypes", action="append", + default=DEFAULT_WHITELISTED_MIMETYPES) + parser.add_argument("-e", "--extension", metavar="EXTENSION", + help="Add EXTENSION to list of whitelisted extensions.", + dest="whitelisted_extensions", action="append", + default=DEFAULT_WHITELISTED_EXTENSIONS) + + args = parser.parse_args() + + whitelisted_extensions = [x.lower() for x in args.whitelisted_extensions] + suspicious_source(args.whitelisted_mimetypes, whitelisted_extensions, + args.directory, args.verbose) if __name__ == "__main__": diff --git a/scripts/wrap-and-sort b/scripts/wrap-and-sort index 4d1d24d..dfbee29 100755 --- a/scripts/wrap-and-sort +++ b/scripts/wrap-and-sort @@ -1,6 +1,6 @@ #!/usr/bin/python3 # -# Copyright (C) 2010-2016, Benjamin Drung <bdr...@debian.org> +# Copyright (C) 2010-2018, Benjamin Drung <bdr...@debian.org> # 2010, Stefano Rivera <stefa...@ubuntu.com> # # Permission to use, copy, modify, and/or distribute this software for any @@ -15,9 +15,9 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +import argparse import glob import operator -import optparse import os import re import sys @@ -76,6 +76,7 @@ class WrapAndSortControl(Control): def wrap_and_sort(self, wrap_always, short_indent, sort_paragraphs, keep_first, trailing_comma): + # pylint: disable=too-many-arguments for paragraph in self.paragraphs: for field in CONTROL_LIST_FIELDS: if field in paragraph: @@ -97,6 +98,7 @@ class WrapAndSortControl(Control): def _wrap_field(self, control, entry, wrap_always, short_indent, trailing_comma, sort=True): + # pylint: disable=too-many-arguments # An empty element is not explicitly disallowed by Policy but known to # break QA tools, so remove any packages = [x.strip() for x in control[entry].split(",") if x.strip()] @@ -151,15 +153,14 @@ class Install(object): def remove_trailing_whitespaces(filename): assert os.path.isfile(filename), "%s does not exist." % (filename) content = open(filename).read() - if len(content) == 0: + if not content: return content = content.rstrip() + "\n" lines = content.split("\n") lines = [l.rstrip() for l in lines] new_content = "\n".join(lines) - f = open(filename, "w") - f.write(new_content) - f.close() + with open(filename, "w") as _file: + _file.write(new_content) def sort_list(unsorted_list): @@ -168,30 +169,30 @@ def sort_list(unsorted_list): return sorted(packages) + sorted(special) -def wrap_and_sort(options): - control_files = [f for f in options.files if re.search("/control[^/]*$", f)] +def wrap_and_sort(args): + control_files = [f for f in args.files if re.search("/control[^/]*$", f)] for control_file in control_files: - if options.verbose: + if args.verbose: print(control_file) - control = WrapAndSortControl(control_file, options.max_line_length) - if options.cleanup: + control = WrapAndSortControl(control_file, args.max_line_length) + if args.cleanup: control.strip_trailing_spaces() - control.wrap_and_sort(options.wrap_always, options.short_indent, - options.sort_binary_packages, options.keep_first, - options.trailing_comma) + control.wrap_and_sort(args.wrap_always, args.short_indent, + args.sort_binary_packages, args.keep_first, + args.trailing_comma) control.save() - copyright_files = [f for f in options.files + copyright_files = [f for f in args.files if re.search("/copyright[^/]*$", f)] for copyright_file in copyright_files: - if options.verbose: + if args.verbose: print(copyright_file) remove_trailing_whitespaces(copyright_file) pattern = "(dirs|docs|examples|info|install|links|maintscript|manpages)$" - install_files = [f for f in options.files if re.search(pattern, f)] + install_files = [f for f in args.files if re.search(pattern, f)] for install_file in sorted(install_files): - if options.verbose: + if args.verbose: print(install_file) install = Install(install_file) install.sort() @@ -210,61 +211,57 @@ def get_files(debian_directory): def main(): script_name = os.path.basename(sys.argv[0]) - usage = "%s [options]" % (script_name) epilog = "See %s(1) for more info." % (script_name) - parser = optparse.OptionParser(usage=usage, epilog=epilog) - - parser.add_option("-a", "--wrap-always", action="store_true", default=False, - help="wrap lists even if they do not exceed the line length limit") - parser.add_option("-s", "--short-indent", dest="short_indent", - 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("-k", "--keep-first", - help="When sorting binary package paragraphs, leave the " - "first one at the top. Unqualified debhelper " - "configuration files are applied to the first " - "package.", - dest="keep_first", 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("-t", "--trailing-comma", help="add trailing comma", - dest="trailing_comma", action="store_true", - default=False) - parser.add_option("-d", "--debian-directory", dest="debian_directory", - help="location of the 'debian' directory (default: " - "./debian)", metavar="PATH", default="debian") - parser.add_option("-f", "--file", metavar="FILE", - dest="files", action="append", default=list(), - help="Wrap and sort only the specified file.") - parser.add_option("-v", "--verbose", - help="print all files that are touched", - dest="verbose", action="store_true", default=False) - parser.add_option("--max-line-length", type='int', default=79, - help="set maximum allowed line length before wrapping (default: %default)") - - (options, args) = parser.parse_args() - - if len(args) != 0: - parser.error("Unsupported additional parameters specified: %s" % - ", ".join(args)) - - if not os.path.isdir(options.debian_directory): + parser = argparse.ArgumentParser(epilog=epilog) + + parser.add_argument("-a", "--wrap-always", action="store_true", default=False, + help="wrap lists even if they do not exceed the line length limit") + parser.add_argument("-s", "--short-indent", dest="short_indent", + help="only indent wrapped lines by one space (default is " + "in-line with the field name)", + action="store_true", default=False) + parser.add_argument("-b", "--sort-binary-packages", + help="Sort binary package paragraphs by name", + dest="sort_binary_packages", action="store_true", + default=False) + parser.add_argument("-k", "--keep-first", + help="When sorting binary package paragraphs, leave the " + "first one at the top. Unqualified debhelper " + "configuration files are applied to the first " + "package.", + dest="keep_first", action="store_true", default=False) + parser.add_argument("-n", "--no-cleanup", help="don't cleanup whitespaces", + dest="cleanup", action="store_false", default=True) + parser.add_argument("-t", "--trailing-comma", help="add trailing comma", + dest="trailing_comma", action="store_true", + default=False) + parser.add_argument("-d", "--debian-directory", dest="debian_directory", + help="location of the 'debian' directory (default: ./debian)", + metavar="PATH", default="debian") + parser.add_argument("-f", "--file", metavar="FILE", + dest="files", action="append", default=list(), + help="Wrap and sort only the specified file.") + parser.add_argument("-v", "--verbose", + help="print all files that are touched", + dest="verbose", action="store_true", default=False) + parser.add_argument("--max-line-length", type=int, default=79, + help="set maximum allowed line length before wrapping " + "(default: %(default)i)") + + args = parser.parse_args() + + if not os.path.isdir(args.debian_directory): parser.error('Debian directory not found, expecting "%s".' % - options.debian_directory) + args.debian_directory) - not_found = [f for f in options.files if not os.path.isfile(f)] + not_found = [f for f in args.files if not os.path.isfile(f)] if not_found: parser.error('Specified files not found: %s' % ", ".join(not_found)) - if not options.files: - options.files = get_files(options.debian_directory) + if not args.files: + args.files = get_files(args.debian_directory) - wrap_and_sort(options) + wrap_and_sort(args) if __name__ == "__main__": -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/collab-maint/devscripts.git _______________________________________________ devscripts-devel mailing list devscripts-devel@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/devscripts-devel