File: //snap/google-cloud-cli/394/platform/bq/frontend/utils_id.py
#!/usr/bin/env python
"""BQ CLI helper functions for IDs for the frontend."""
import re
from clients import utils as bq_client_utils
def FormatDataTransferIdentifiers(client, transfer_identifier: str) -> str:
"""Formats a transfer config or run identifier.
Transfer configuration/run commands should be able to support different
formats of how the user could input the project information. This function
will take the user input and create a uniform transfer config or
transfer run reference that can be used for various commands.
This function will also set the client's project id to the specified
project id.
Returns:
The formatted transfer config or run.
"""
formatted_identifier = transfer_identifier
match = re.search(r'projects/([^/]+)', transfer_identifier)
if not match:
formatted_identifier = (
'projects/'
+ bq_client_utils.GetProjectReference(id_fallbacks=client).projectId
+ '/'
+ transfer_identifier
)
else:
# TODO(b/324243535): Refactor out this side-effect.
client.project_id = match.group(1)
return formatted_identifier
def FormatProjectIdentifier(client, project_id: str) -> str:
"""Formats a project identifier.
If the user specifies a project with "projects/${PROJECT_ID}", isolate the
project id and return it.
This function will also set the client's project id to the specified
project id.
Returns:
The project is.
"""
formatted_identifier = project_id
match = re.search(r'projects/([^/]+)', project_id)
if match:
formatted_identifier = match.group(1)
# TODO(b/324243535): Refactor out this side-effect.
client.project_id = formatted_identifier
return formatted_identifier