def get_options()

in tools/stix-to-ecs/stix_to_ecs.py [0:0]


def get_options() -> Options | None:
    parser = build_argument_parser()
    args = parser.parse_args()

    if args.recursive and not args.input.is_dir():
        print("Flag -r can only be used if input is a directory")
        parser.print_usage()
        return None

    elastic_info = None
    if args.elastic:
        if args.configuration:
            tmp = {
                k: (v if v else None)
                for k, v in json.loads(args.configuration.read_text()).items()
            }

            elastic_info = ElasticInfo(
                tmp["cloud_id"],
                tmp["api_key"],
                tmp["url"],
                tmp["username"],
                tmp["password"],
                tmp["index"],
                verify_certs=args.verify_certs,
            )

        else:
            elastic_info = ElasticInfo(
                args.cloud_id,
                (
                    getpass.getpass(
                        "Please enter your API key to connect to the Elastic cluster\n"
                    )
                    if not args.username
                    else None
                ),
                args.url,
                args.username,
                (
                    getpass.getpass(
                        "Please enter your password to connect to the Elastic cluster\n"
                    )
                    if args.username
                    else None
                ),
                args.index,
                args.verify_certs,
            )

        if msg := elastic_info.check():
            print(msg)
            parser.print_usage()
            return None

    return Options(args.input, args.output, args.recursive, args.provider, elastic_info)