#!/usr/bin/python -b # Copyright 2009-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 import argparse import sys import portage portage._internal_caller = True from portage import os def command_recompose(args): usage = "usage: recompose \n" if len(args) != 2: sys.stderr.write(usage) sys.stderr.write("2 arguments are required, got %s\n" % len(args)) return 1 binpkg_path, metadata_dir = args if not os.path.isfile(binpkg_path): sys.stderr.write(usage) sys.stderr.write("Argument 1 is not a regular file: '%s'\n" % \ binpkg_path) return 1 if not os.path.isdir(metadata_dir): sys.stderr.write(usage) sys.stderr.write("Argument 2 is not a directory: '%s'\n" % \ metadata_dir) return 1 t = portage.xpak.tbz2(binpkg_path) t.recompose(metadata_dir) return os.EX_OK def main(argv): if argv and isinstance(argv[0], bytes): for i, x in enumerate(argv): argv[i] = portage._unicode_decode(x, errors='strict') valid_commands = ('recompose',) description = "Perform metadata operations on a binary package." usage = "usage: %s COMMAND [args]" % \ os.path.basename(argv[0]) parser = argparse.ArgumentParser(description=description, usage=usage) options, args = parser.parse_known_args(argv[1:]) if not args: parser.error("missing command argument") command = args[0] if command not in valid_commands: parser.error("invalid command: '%s'" % command) if command == 'recompose': rval = command_recompose(args[1:]) else: raise AssertionError("invalid command: '%s'" % command) return rval if __name__ == "__main__": rval = main(sys.argv[:]) sys.exit(rval)