def get_project_id()

in composer_local_dev/utils.py [0:0]


def get_project_id() -> Optional[str]:
    """Gets the project ID from the Cloud CLI."""
    try:
        output = subprocess.run(
            [gcloud_cmd()] + _CLOUD_CLI_CONFIG_COMMAND.split(),
            check=True,
            capture_output=True,
            text=True,
        ).stdout
        LOG.debug("Cloud CLI output: %s", output)
    except (subprocess.CalledProcessError, OSError, IOError) as err:
        logging.debug(
            "Failed to get project ID from the Cloud CLI.", exc_info=True
        )
        raise errors.InvalidAuthError(err)

    try:
        configuration = json.loads(output)
    except ValueError as err:
        raise errors.ComposerCliError(
            f"Failed to decode gcloud CLI configuration: {err}"
        ) from None

    try:
        project_id = configuration["configuration"]["properties"]["core"][
            "project"
        ]
        LOG.info("Using GCP project %s", project_id)
        return project_id
    except KeyError:
        raise errors.ComposerCliError(
            "gcloud configuration is missing project id."
        ) from None