60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
#!/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
|