#!/usr/bin/python3 # # Copyright (C) 2010, Benjamin Drung # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # 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 os import sys from ubuntutools.update_maintainer import ( MaintainerUpdateException, restore_maintainer, update_maintainer, ) def find_debian_dir(depth=6): """Scans up the directory hierarchy looking for a ./debian dir :param int depth: Levels to scan up the directory tree. :rtype: str :returns: a path to an existing debian/ directory, or None """ for path in ["../" * n or "./" for n in list(range(0, depth + 1))]: debian_path = "{}debian".format(path) if os.path.exists(os.path.join(debian_path, "control")) and os.path.exists( os.path.join(debian_path, "changelog") ): return debian_path return None 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( "-d", "--debian-directory", dest="debian_directory", help="location of the 'debian' directory (default: %default).", metavar="PATH", default=find_debian_dir() or "./debian", ) parser.add_option( "-r", "--restore", help="Restore the original maintainer", action="store_true", default=False, ) parser.add_option( "-q", "--quiet", help="print no informational messages", dest="quiet", action="store_true", default=False, ) (options, args) = parser.parse_args() if len(args) != 0: print( "%s: Error: Unsupported additional parameters specified: %s" % (script_name, ", ".join(args)), file=sys.stderr, ) sys.exit(1) if not options.restore: operation = update_maintainer else: operation = restore_maintainer try: operation(options.debian_directory, not options.quiet) except MaintainerUpdateException: sys.exit(1) if __name__ == "__main__": main()