@@ -146,7 +146,7 @@ def fetch(
146146 )
147147
148148 if error :
149- secret_name = secret .name . split ( "/secrets/" )[ - 1 ] # Removes project prefix
149+ secret_name = _extract_secret_name ( secret .name )
150150 failed_secrets .append (secret_name )
151151 click .echo (f"Failed to retrieve secret '{ secret_name } ': { error } " , err = True )
152152 else :
@@ -255,7 +255,7 @@ def list_(
255255 table .add_column ("Created" , justify = "left" , style = "blue" , overflow = "fold" )
256256 for secret in secrets :
257257 full_secret_name = secret .name
258- secret_name = full_secret_name . split ( "/secrets/" )[ - 1 ] # Removes project prefix
258+ secret_name = _extract_secret_name ( full_secret_name )
259259 secret_url = _get_secret_url (secret_name , gcp_project_id )
260260 table .add_row (
261261 f"[link={ secret_url } ]{ secret_name } [/link]" ,
@@ -266,6 +266,24 @@ def list_(
266266 console .print (table )
267267
268268
269+ def _extract_secret_name (secret_name : str ) -> str :
270+ """Extract the secret name from a fully qualified secret path.
271+
272+ Handles different formats of secret names:
273+ - Full path: "projects/project-id/secrets/SECRET_NAME"
274+ - Already extracted: "SECRET_NAME"
275+
276+ Args:
277+ secret_name: The secret name or path
278+
279+ Returns:
280+ str: The extracted secret name without project prefix
281+ """
282+ if "/secrets/" in secret_name :
283+ return secret_name .split ("/secrets/" )[- 1 ]
284+ return secret_name
285+
286+
269287def _get_secret_url (secret_name : str , gcp_project_id : str ) -> str :
270288 """Generate a URL for a secret in the GCP Secret Manager console.
271289
@@ -280,6 +298,8 @@ def _get_secret_url(secret_name: str, gcp_project_id: str) -> str:
280298 Returns:
281299 str: URL to the secret in the GCP console
282300 """
301+ # Ensure we have just the secret name without the project prefix
302+ secret_name = _extract_secret_name (secret_name )
283303 return f"https://console.cloud.google.com/security/secret-manager/secret/{ secret_name } /versions?hl=en&project={ gcp_project_id } "
284304
285305
@@ -337,7 +357,7 @@ def _write_secret_file(
337357 versions = list (response )
338358
339359 if not versions :
340- secret_name = secret .name . split ( "/secrets/" )[ - 1 ] # Removes project prefix
360+ secret_name = _extract_secret_name ( secret .name )
341361 return f"No enabled version found for secret: { secret_name } "
342362
343363 enabled_version = versions [0 ]
0 commit comments