Skip to content

Commit 1b31da1

Browse files
committed
Allow for setting of project and organization values using env vars. Closes Azure#1212
1 parent 8eb5144 commit 1b31da1

File tree

2 files changed

+39
-11
lines changed

2 files changed

+39
-11
lines changed

azure-devops/azext_devops/dev/common/const.py

+4
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
AZ_DEVOPS_CONFIG_DIR_ENVKEY = CLI_ENV_VARIABLE_PREFIX + 'CONFIG_DIR'
1919
AZ_DEVOPS_GITHUB_PAT_ENVKEY = CLI_ENV_VARIABLE_PREFIX + 'GITHUB_PAT'
2020
AZ_DEVOPS_PIPELINES_VARIABLES_KEY_PREFIX = CLI_ENV_VARIABLE_PREFIX + 'PIPELINE_VAR_'
21+
AZ_DEVOPS_DEFAULT_ORGANIZATION = CLI_ENV_VARIABLE_PREFIX + 'DEFAULT_ORGANIZATION'
22+
AZ_DEVOPS_DEFAULT_PROJECT = CLI_ENV_VARIABLE_PREFIX + 'DEFAULT_PROJECT'
2123

2224
# Import request Environment Variable
2325
GIT_SOURCE_PASSWORD_OR_PAT = CLI_ENV_VARIABLE_PREFIX + 'GIT_SOURCE_PASSWORD_OR_PAT'
@@ -47,3 +49,5 @@
4749
ORG_IGNORED_FROM_CONFIG = 'OrgIgnoredFromConfig'
4850
PROJECT_PICKED_FROM_CONFIG = 'ProjectPickedFromConfig'
4951
PROJECT_IGNORED_FROM_CONFIG = 'ProjectIgnoredFromConfig'
52+
ORG_PICKED_FROM_ENV = 'OrgPickedFromEnv'
53+
PROJECT_PICKED_FROM_ENV = 'ProjectPickedFromEnv'

azure-devops/azext_devops/dev/common/services.py

+35-11
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@
2424
PROJECT_PICKED_FROM_GIT,
2525
REPO_PICKED_FROM_GIT,
2626
ORG_PICKED_FROM_CONFIG,
27+
ORG_PICKED_FROM_ENV,
2728
ORG_IGNORED_FROM_CONFIG,
2829
PROJECT_PICKED_FROM_CONFIG,
29-
PROJECT_IGNORED_FROM_CONFIG)
30+
PROJECT_PICKED_FROM_ENV,
31+
PROJECT_IGNORED_FROM_CONFIG,
32+
AZ_DEVOPS_DEFAULT_ORGANIZATION,
33+
AZ_DEVOPS_DEFAULT_PROJECT)
3034
from ._credentials import get_credential
3135
from .git import get_remote_url
3236
from .vsts_git_url_info import VstsGitUrlInfo
@@ -346,17 +350,23 @@ def resolve_instance_project_and_repo(
346350
repo = git_info.repo
347351
vsts_tracking_data.properties[REPO_PICKED_FROM_GIT] = repo is not None
348352
if organization is None:
349-
organization = _resolve_instance_from_config(organization)
350-
vsts_tracking_data.properties[ORG_PICKED_FROM_CONFIG] = organization is not None
351-
else:
352-
orgFromConfig = _resolve_instance_from_config(organization)
353-
vsts_tracking_data.properties[ORG_IGNORED_FROM_CONFIG] = orgFromConfig is not None
353+
organization = _resolve_instance_from_env(organization)
354+
vsts_tracking_data.properties[ORG_PICKED_FROM_ENV] = organization is not None
355+
if organization is None:
356+
organization = _resolve_instance_from_config(organization)
357+
vsts_tracking_data.properties[ORG_PICKED_FROM_CONFIG] = organization is not None
358+
else:
359+
orgFromConfig = _resolve_instance_from_config(organization)
360+
vsts_tracking_data.properties[ORG_IGNORED_FROM_CONFIG] = orgFromConfig is not None
354361
if project is None:
355-
project = _resolve_project_from_config(project, project_required)
356-
vsts_tracking_data.properties[PROJECT_PICKED_FROM_CONFIG] = organization is not None
357-
else:
358-
projectFromConfig = _resolve_project_from_config(project, False)
359-
vsts_tracking_data.properties[PROJECT_IGNORED_FROM_CONFIG] = projectFromConfig is not None
362+
project = _resolve_project_from_env(project, project_required)
363+
vsts_tracking_data.properties[PROJECT_PICKED_FROM_ENV] = project is not None
364+
if project is None:
365+
project = _resolve_project_from_config(project, project_required)
366+
vsts_tracking_data.properties[PROJECT_PICKED_FROM_CONFIG] = project is not None
367+
else:
368+
projectFromConfig = _resolve_project_from_config(project, False)
369+
vsts_tracking_data.properties[PROJECT_IGNORED_FROM_CONFIG] = projectFromConfig is not None
360370
if not is_valid_url(organization):
361371
raise _team_organization_arg_error()
362372
if project_required and project is None:
@@ -402,6 +412,20 @@ def _resolve_project_from_config(project, project_required=True):
402412
return project
403413

404414

415+
def _resolve_instance_from_env(organization):
416+
if organization is None:
417+
organization = os.getenv(AZ_DEVOPS_DEFAULT_ORGANIZATION, None)
418+
return organization
419+
420+
421+
def _resolve_project_from_env(project, project_required=True):
422+
if project is None:
423+
project = os.getenv(AZ_DEVOPS_DEFAULT_PROJECT, None)
424+
if project_required and (project is None or project == ''):
425+
_raise_team_project_arg_error()
426+
return project
427+
428+
405429
def get_vsts_info_from_current_remote_url():
406430
start = datetime.datetime.now()
407431
info = VstsGitUrlInfo(get_remote_url(VstsGitUrlInfo.is_vsts_url_candidate))

0 commit comments

Comments
 (0)