#!/usr/bin/env python
#
# Copyright 2018 - The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
r"""Delete args.

Defines the delete arg parser that holds delete specific args.
"""
import argparse

from acloud.internal import constants


CMD_DELETE = "delete"


def GetDeleteArgParser(subparser):
    """Return the delete arg parser.

    Args:
       subparser: argparse.ArgumentParser that is attached to main acloud cmd.

    Returns:
        argparse.ArgumentParser with delete options defined.
    """
    delete_parser = subparser.add_parser(CMD_DELETE)
    delete_parser.required = False
    delete_parser.set_defaults(which=CMD_DELETE)
    delete_group = delete_parser.add_mutually_exclusive_group()
    delete_group.add_argument(
        "--instance-names",
        dest="instance_names",
        nargs="+",
        required=False,
        help="The names of the instances that need to delete, separated by "
        "spaces, e.g. --instance-names instance-1 local-instance-1")
    delete_group.add_argument(
        "--all",
        action="store_true",
        dest="all",
        required=False,
        help="If more than 1 AVD instance is found, delete them all.")
    delete_group.add_argument(
        "--adb-port", "-p",
        type=int,
        dest="adb_port",
        required=False,
        help="Delete instance with specified adb-port.")
    delete_parser.add_argument(
        "--local-only",
        action="store_true",
        dest="local_only",
        required=False,
        help="Do not authenticate and query remote instances.")
    delete_parser.add_argument(
        "--host",
        type=str,
        dest="remote_host",
        default=None,
        help="'cuttlefish only' Provide host name to clean up the remote host. "
        "For example: '--host 1.1.1.1'")
    delete_parser.add_argument(
        "--host-user",
        type=str,
        dest="host_user",
        default=constants.GCE_USER,
        help="'remote host only' Provide host user for logging in to the host. "
        "The default value is vsoc-01. For example: '--host 1.1.1.1 --host-user "
        "vsoc-02'")
    delete_parser.add_argument(
        "--host-ssh-private-key-path",
        type=str,
        dest="host_ssh_private_key_path",
        default=None,
        help="'remote host only' Provide host ssh private key path for logging "
        "in to the host. For exmaple: '--host-ssh-private-key-path "
        "~/.ssh/acloud_rsa'")

    # TODO(b/118439885): Old arg formats to support transition, delete when
    # transistion is done.
    delete_group.add_argument(
        "--instance_names",
        dest="instance_names",
        nargs="+",
        required=False,
        help=argparse.SUPPRESS)

    return delete_parser