#!/usr/bin/python3 # # Copyright (C) 2010, Benjamin Drung <bdrung@ubuntu.com> # # 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. # pylint: disable=invalid-name # pylint: enable=invalid-name import argparse 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 = f"{path}debian" 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]) epilog = f"See {script_name}(1) for more info." parser = argparse.ArgumentParser(epilog=epilog) parser.add_argument( "-d", "--debian-directory", dest="debian_directory", help="location of the 'debian' directory (default: %(default)s).", metavar="PATH", default=find_debian_dir() or "./debian", ) parser.add_argument( "-r", "--restore", help="Restore the original maintainer", action="store_true" ) parser.add_argument( "-q", "--quiet", help="print no informational messages", dest="quiet", action="store_true" ) args = parser.parse_args() if not args.restore: operation = update_maintainer else: operation = restore_maintainer try: operation(args.debian_directory, not args.quiet) except MaintainerUpdateException: sys.exit(1) if __name__ == "__main__": main()