@@ -3501,6 +3501,48 @@ def _resolve_studio_identity_region(
35013501 )
35023502
35033503
3504+ def _resolve_studio_cloud_credentials (
3505+ access_key : str | None ,
3506+ secret_key : str | None ,
3507+ credentials_path : Path | None = None ,
3508+ ) -> tuple [str , str ]:
3509+ """Resolve Studio deploy credentials from CLI, environment, or ~/.volc."""
3510+ import configparser
3511+
3512+ resolved_access_key = access_key or os .getenv ("VOLCENGINE_ACCESS_KEY" , "" )
3513+ resolved_secret_key = secret_key or os .getenv ("VOLCENGINE_SECRET_KEY" , "" )
3514+ if resolved_access_key and resolved_secret_key :
3515+ return resolved_access_key , resolved_secret_key
3516+
3517+ path = credentials_path or Path .home () / ".volc" / "credentials"
3518+ if path .is_file ():
3519+ parser = configparser .ConfigParser (interpolation = None )
3520+ try :
3521+ with path .open (encoding = "utf-8" ) as credentials_file :
3522+ parser .read_file (credentials_file )
3523+ except (OSError , UnicodeError , configparser .Error ) as error :
3524+ raise click .ClickException (
3525+ f"Failed to read Volcengine credentials file '{ path } ': { error } "
3526+ ) from error
3527+ default_profile = parser ["default" ] if parser .has_section ("default" ) else {}
3528+ resolved_access_key = (
3529+ resolved_access_key or str (default_profile .get ("access_key_id" , "" )).strip ()
3530+ )
3531+ resolved_secret_key = (
3532+ resolved_secret_key
3533+ or str (default_profile .get ("secret_access_key" , "" )).strip ()
3534+ )
3535+
3536+ if resolved_access_key and resolved_secret_key :
3537+ return resolved_access_key , resolved_secret_key
3538+ raise click .ClickException (
3539+ "Volcengine credentials required: pass --volcengine-access-key/"
3540+ "--volcengine-secret-key, set VOLCENGINE_ACCESS_KEY/"
3541+ "VOLCENGINE_SECRET_KEY, or configure the [default] profile in "
3542+ "~/.volc/credentials."
3543+ )
3544+
3545+
35043546@studio .command ("deploy" )
35053547@click .option (
35063548 "--user-pool-id" ,
@@ -3640,21 +3682,18 @@ def frontend_deploy(
36403682 import tempfile
36413683 import shutil
36423684
3643- from veadk .config import getenv , veadk_environments
3685+ from veadk .config import veadk_environments
36443686
36453687 try :
36463688 branding_title = normalize_site_title (site_title )
36473689 branding_logo = resolve_site_logo (site_logo )
36483690 except ValueError as error :
36493691 raise click .ClickException (str (error )) from error
36503692
3651- ak = volcengine_access_key or getenv ("VOLCENGINE_ACCESS_KEY" )
3652- sk = volcengine_secret_key or getenv ("VOLCENGINE_SECRET_KEY" )
3653- if not ak or not sk :
3654- raise click .ClickException (
3655- "Volcengine credentials required: set VOLCENGINE_ACCESS_KEY/SECRET_KEY "
3656- "or pass --volcengine-access-key/--volcengine-secret-key."
3657- )
3693+ ak , sk = _resolve_studio_cloud_credentials (
3694+ volcengine_access_key ,
3695+ volcengine_secret_key ,
3696+ )
36583697
36593698 identity_region = _resolve_studio_identity_region (
36603699 access_key = ak ,
0 commit comments