#!/usr/bin/python -b
# Copyright 2020-2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

import argparse
import sys

from os import path as osp
if osp.isfile(osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), ".portage_not_installed")):
	sys.path.insert(0, osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), "lib"))
import portage
portage._internal_caller = True
from portage.util.shelve import dump, restore


def main(argv=None):
	parser = argparse.ArgumentParser(prog="shelve-utils")
	subparsers = parser.add_subparsers(help="sub-command help")

	dump_command = subparsers.add_parser("dump", help="dump shelve database")
	dump_command.add_argument("src", help="input shelve file")
	dump_command.add_argument("dest", help="output pickle file")
	dump_command.set_defaults(func=dump)

	restore_command = subparsers.add_parser("restore", help="restore shelve database")
	restore_command.add_argument("src", help="input pickle file")
	restore_command.add_argument("dest", help="output shelve file")
	restore_command.set_defaults(func=restore)

	args = parser.parse_args(args=portage._decode_argv(argv or sys.argv)[1:])
	args.func(args)


if __name__ == "__main__":
	portage.util.initialize_logger()
	main(argv=sys.argv)
