52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
#!/usr/bin/env python
|
|
"""BQ CLI frontend flag utils."""
|
|
|
|
from typing import Optional
|
|
|
|
from absl import app
|
|
from absl import flags
|
|
|
|
import table_formatter
|
|
import bq_flags
|
|
from clients import utils as bq_client_utils
|
|
|
|
FLAGS = flags.FLAGS
|
|
|
|
|
|
def using_alpha_feature(feature: bq_flags.AlphaFeatures) -> bool:
|
|
return feature in bq_flags.ALPHA.value
|
|
|
|
|
|
def fail_if_not_using_alpha_feature(feature: bq_flags.AlphaFeatures) -> None:
|
|
if not using_alpha_feature(feature):
|
|
raise app.UsageError(f"Please specify '--alpha={feature.value}' and retry.")
|
|
|
|
|
|
def get_formatter_from_flags(
|
|
secondary_format: Optional[str] = 'sparse',
|
|
) -> table_formatter.TableFormatter:
|
|
if FLAGS['format'].present:
|
|
return table_formatter.GetFormatter(FLAGS.format)
|
|
else:
|
|
return table_formatter.GetFormatter(secondary_format)
|
|
|
|
|
|
def get_job_id_from_flags() -> Optional[bq_client_utils.JobIdGenerator]:
|
|
"""Returns the job id or job generator from the flags."""
|
|
if FLAGS.fingerprint_job_id and FLAGS.job_id:
|
|
raise app.UsageError(
|
|
'The fingerprint_job_id flag cannot be specified with the job_id flag.'
|
|
)
|
|
if FLAGS.fingerprint_job_id:
|
|
return bq_client_utils.JobIdGeneratorFingerprint()
|
|
elif FLAGS.job_id is None:
|
|
return bq_client_utils.JobIdGeneratorIncrementing(
|
|
bq_client_utils.JobIdGeneratorRandom()
|
|
)
|
|
elif FLAGS.job_id:
|
|
return FLAGS.job_id
|
|
else:
|
|
# User specified a job id, but it was empty. Let the
|
|
# server come up with a job id.
|
|
return None
|