def main()

in cli/src/pcluster/cli/entrypoint.py [0:0]


def main():
    pcluster_logging.config_logger()
    try:
        ret = run(sys.argv[1:])
        if ret:
            output_str = json.dumps(ret, indent=2)
            print(output_str)
            LOGGER.info(output_str)
        sys.exit(0)
    except NoCredentialsError:  # TODO: remove from here
        LOGGER.error("AWS Credentials not found.")
        sys.exit(1)
    except KeyboardInterrupt:
        LOGGER.info("Received KeyboardInterrupt. Exiting.")
        sys.exit(1)
    except ParameterException as e:
        print(json.dumps(e.data, indent=2))
        sys.exit(1)
    except APIOperationException as e:
        LOGGER.error(json.dumps(e.data), exc_info=True)
        print(json.dumps(e.data, indent=2))
        sys.exit(1)
    except BrokenPipeError:
        pass
    except Exception as e:
        LOGGER.exception("Unexpected error of type %s: %s", type(e).__name__, e)
        sys.exit(1)
    finally:
        # If an external process has closed the other end of this pipe, flush
        # now to see if we'd get a BrokenPipeError on exit and if so, dup2 a
        # devnull over that output.
        try:
            sys.stdout.flush()
        except BrokenPipeError:
            os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stdout.fileno())

        try:
            sys.stderr.flush()
        except BrokenPipeError:
            os.dup2(os.open(os.devnull, os.O_WRONLY), sys.stderr.fileno())