1212__LOCAL_RUN__ = os .environ ['BUILDKITE_AGENT_NAME' ] == 'local'
1313
1414__REVISION_METADATA__ = 'buildkite-perforce-revision'
15- __REVISION_METADATA_DEPRECATED__ = 'buildkite:perforce:revision' # old metadata key, incompatible with `bk local run`
15+ __REVISION_METADATA_DEPRECATED__ = (
16+ 'buildkite:perforce:revision' # old metadata key, incompatible with `bk local run`
17+ )
18+
1619
1720def get_env ():
1821 """Get env vars passed in via plugin config"""
19- env = {
20- 'P4PORT' : os .environ .get ('P4PORT' ) or os .environ .get ('BUILDKITE_REPO' )
21- }
22+ env = {'P4PORT' : os .environ .get ('P4PORT' ) or os .environ .get ('BUILDKITE_REPO' )}
2223 for p4var in ['P4PORT' , 'P4USER' , 'P4TICKETS' , 'P4TRUST' ]:
2324 plugin_value = os .environ .get ('BUILDKITE_PLUGIN_PERFORCE_%s' % p4var )
2425 if plugin_value :
2526 env [p4var ] = plugin_value
2627 return env
2728
29+
2830def list_from_env_array (var ):
2931 """Read list of values from either VAR or VAR_0, VAR_1 etc"""
3032 result = os .environ .get (var , [])
3133 if result :
32- return [result ] # convert single value to list
34+ return [result ] # convert single value to list
3335
3436 i = 0
3537 while True :
@@ -41,6 +43,7 @@ def list_from_env_array(var):
4143
4244 return result
4345
46+
4447def get_config ():
4548 """Get configuration which will be passed directly to perforce.P4Repo as kwargs"""
4649 conf = {}
@@ -54,7 +57,9 @@ def get_config():
5457
5558 if 'BUILDKITE_PLUGIN_PERFORCE_ROOT' in os .environ and not __LOCAL_RUN__ :
5659 raise Exception ("Custom P4 root is for use in unit tests only" )
57- conf ['root' ] = os .environ .get ('BUILDKITE_PLUGIN_PERFORCE_ROOT' ) or os .environ .get ('BUILDKITE_BUILD_CHECKOUT_PATH' )
60+ conf ['root' ] = os .environ .get ('BUILDKITE_PLUGIN_PERFORCE_ROOT' ) or os .environ .get (
61+ 'BUILDKITE_BUILD_CHECKOUT_PATH'
62+ )
5863
5964 # Coerce view into pairs of [depot client] paths
6065 view_parts = conf ['view' ].split (' ' )
@@ -63,27 +68,35 @@ def get_config():
6368 conf ['view' ] = ['%s %s' % (v , next (view_iter )) for v in view_iter ]
6469 return conf
6570
71+
6672def get_metadata (key ):
6773 """If it exists, retrieve metadata from buildkite for a given key"""
6874 if not __ACCESS_TOKEN__ :
6975 # Cannot get metadata outside of buildkite context
7076 return None
7177
7278 if subprocess .call (['buildkite-agent' , 'meta-data' , 'exists' , key ]) == 0 :
73- return subprocess .check_output (['buildkite-agent' , 'meta-data' , 'get' , key ]).decode (sys .stdout .encoding )
79+ return subprocess .check_output (
80+ ['buildkite-agent' , 'meta-data' , 'get' , key ]
81+ ).decode (sys .stdout .encoding )
82+
7483
7584def set_metadata (key , value , overwrite = False ):
76- """ Set metadata in buildkite for a given key. Optionally overwrite existing data.
77- Returns true if data was written
85+ """Set metadata in buildkite for a given key. Optionally overwrite existing data.
86+ Returns true if data was written
7887 """
7988 if not __ACCESS_TOKEN__ or __LOCAL_RUN__ :
8089 # Cannot set metadata outside of buildkite context, including `bk local run`
8190 return False
8291
83- if overwrite or subprocess .call (['buildkite-agent' , 'meta-data' , 'exists' , key ]) == 100 :
84- subprocess .call (['buildkite-agent' , 'meta-data' , 'set' , key , value ])
92+ if (
93+ overwrite
94+ or subprocess .call (['buildkite-agent' , 'meta-data' , 'exists' , key ]) == 100
95+ ):
96+ subprocess .call (['buildkite-agent' , 'meta-data' , 'set' , key , value ])
8597 return True
8698
99+
87100def get_users_changelist ():
88101 """Get the shelved changelist supplied by the user, if applicable"""
89102 # Overrides the CL to unshelve via plugin config
@@ -96,11 +109,14 @@ def get_users_changelist():
96109 if branch .isdigit ():
97110 return branch
98111
112+
99113def get_build_revision ():
100114 """Get a p4 revision for the build from buildkite context"""
101- revision = get_metadata (__REVISION_METADATA__ ) or \
102- get_metadata (__REVISION_METADATA_DEPRECATED__ ) or \
103- os .environ ['BUILDKITE_COMMIT' ] # HEAD, user-defined revision or git-sha
115+ revision = (
116+ get_metadata (__REVISION_METADATA__ )
117+ or get_metadata (__REVISION_METADATA_DEPRECATED__ )
118+ or os .environ ['BUILDKITE_COMMIT' ]
119+ ) # HEAD, user-defined revision or git-sha
104120
105121 # Convert bare changelist number to revision specifier
106122 # Note: Theoretically, its possible for all 40 characters of a git sha to be digits.
@@ -113,12 +129,16 @@ def get_build_revision():
113129 # Unable to establish a concrete revision for the build
114130 return None
115131
132+
116133def set_build_revision (revision ):
117134 """Set the p4 revision for following jobs in this build"""
118135 set_metadata (__REVISION_METADATA__ , revision )
119136 set_metadata (__REVISION_METADATA_DEPRECATED__ , revision )
120137
138+
121139def set_build_info (revision , description ):
122140 """Set the description and commit number in the UI for this build by mimicking a git repo"""
123- revision = revision .lstrip ('@#' ) # revision must look like a git sha for buildkite to accept it
141+ revision = revision .lstrip (
142+ '@#'
143+ ) # revision must look like a git sha for buildkite to accept it
124144 set_metadata ('buildkite:git:commit' , 'commit %s\n \n \t %s' % (revision , description ))
0 commit comments