Change argument parser with subparser.
parent
f8e1324c82
commit
d52c74edc4
|
@ -10,42 +10,35 @@ del rpc
|
|||
def main(args):
|
||||
# Parser
|
||||
parser = argparse.ArgumentParser("home-backup", description="Manage backup tools")
|
||||
parser.add_argument("--sys-server", dest="sys_server", action="store_const", const=True, default=False, help="Run system service (root required).")
|
||||
parser.add_argument("--user-server", dest="user_server", action="store_const", const=True, default=False, help="Run user service.")
|
||||
sub_parser = parser.add_subparsers(dest="action")
|
||||
parser_remote_add = sub_parser.add_parser("remote-add", help="Add remote for backups.")
|
||||
parser_remote_list = sub_parser.add_parser("remote-list", help="List remotes.")
|
||||
parser_remote_delete = sub_parser.add_parser("remote-delete", help="Delete remote.")
|
||||
|
||||
parser_system_server = sub_parser.add_parser("system-server", help="Run system service (root required).")
|
||||
parser_user_server = sub_parser.add_parser("user-server", help="Run user service.")
|
||||
|
||||
# Arguments
|
||||
if not args:
|
||||
args = ["--help"]
|
||||
result = parser.parse_args(args)
|
||||
|
||||
def check_client_args_exists():
|
||||
return False
|
||||
|
||||
# Deamon mode
|
||||
if not isinstance(result.sys_server, bool):
|
||||
raise RuntimeError("Arg parser has the wrong type.")
|
||||
if not isinstance(result.user_server, bool):
|
||||
raise RuntimeError("Arg parser has the wrong type.")
|
||||
if result.sys_server and result.user_server:
|
||||
raise ValueError("System and user service can't be set simultan.")
|
||||
if result.sys_server:
|
||||
if result.action == "system-server":
|
||||
# Checks
|
||||
if check_client_args_exists():
|
||||
raise RuntimeError("Client settings are setting in system service mode.")
|
||||
if os.getuid() != 0: # Check root
|
||||
raise RuntimeError("System service has to run as root.")
|
||||
|
||||
# Run deamon
|
||||
asyncio.run(sys_service.rpc.run_deamon()) # TODO: Change default path
|
||||
elif result.user_server:
|
||||
# Checks
|
||||
if check_client_args_exists():
|
||||
raise RuntimeError("Client settings are setting in system service mode.")
|
||||
|
||||
# Run deamon
|
||||
elif result.action == "user-server":
|
||||
asyncio.run(user_service.rpc.run_deamon()) # TODO: Change default path of user and system socket
|
||||
|
||||
# Client actions
|
||||
|
||||
# Not found action
|
||||
elif result.action is None:
|
||||
parser.parse_args(["--help"])
|
||||
else:
|
||||
raise NotImplementedError()
|
||||
raise NotImplementedError("Action %s isn't implemented." % result.action)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
Loading…
Reference in New Issue