# pylint: disable=E0401

from __future__ import absolute_import, annotations, division, print_function

__metaclass__ = type  # pylint: disable=C0103

from typing import TYPE_CHECKING

from ansible.module_utils.basic import AnsibleModule

from ansible_collections.finallycoffee.cicd.plugins.module_utils.Jenkins import Jenkins
from ansible_collections.finallycoffee.cicd.plugins.module_utils.docs.jenkins_node_info import (
    DOCUMENTATION,
    EXAMPLES,
    RETURN,
)

if TYPE_CHECKING:
    from typing import Optional, Dict, Any


def run_module():
    module_args = dict(
        name=dict(type="str", required=True, aliases=["node", "node_name"]),
        server=dict(type="str", required=True, aliases=["server_url", "url"]),
        username=dict(type="str", required=True, aliases=["user"]),
        api_token=dict(type="str", required=True, aliases=["password", "pass"]),
    )
    result = dict(changed=False)
    module = AnsibleModule(argument_spec=module_args, supports_check_mode=True)

    jenkins = Jenkins(
        module.params["server"], module.params["username"], module.params["api_token"]
    )
    node = jenkins.get_node_info(module.params["name"])

    result["name"] = node.name
    result["secret"] = node.secret
    result["work_dir"] = node.work_dir

    # in the event of a successful module execution, you will want to
    # simple AnsibleModule.exit_json(), passing the key/value results
    module.exit_json(**result)


def main():
    run_module()


if __name__ == "__main__":
    main()