From 0b1862bd44a378bdf54ed9f429f4018f8537a5e5 Mon Sep 17 00:00:00 2001 From: shenlan Date: Fri, 3 Oct 2025 19:47:57 +0800 Subject: [PATCH] refactor: require cloud selection for pulumi cli --- iac_modules/pulumi/cli.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/iac_modules/pulumi/cli.py b/iac_modules/pulumi/cli.py index ed5c0bba..d05e2d72 100755 --- a/iac_modules/pulumi/cli.py +++ b/iac_modules/pulumi/cli.py @@ -15,10 +15,11 @@ from typing import Any, Callable, Dict, Optional, Union PROJECT_DIR = Path(__file__).resolve().parent DEFAULT_BACKUPS_DIR = Path("backups") DEFAULT_CONFIG_PATHS: Dict[str, str] = { - "alicloud": "config/alicloud", "aws": "config/aws-global", + "alicloud": "config/alicloud", "vultr": "config/vultr", } +CLOUD_CHOICES = tuple(DEFAULT_CONFIG_PATHS.keys()) DEFAULT_CREDENTIALS_FILE = Path( os.environ.get("IAC_CREDENTIALS_FILE", Path.home() / ".iac/credentials") ) @@ -305,8 +306,17 @@ def _build_parser() -> argparse.ArgumentParser: "--credentials", dest="credentials", type=Path, + metavar="CREDENTIALS", help="自定义凭据文件路径,默认读取 ~/.iac/credentials", ) + parser.add_argument( + "--cloud", + dest="cloud", + choices=CLOUD_CHOICES, + metavar="{aws, alicloud, vultr}", + required=True, + help="选择部署的云厂商(支持 aws、alicloud、vultr)", + ) parent = argparse.ArgumentParser(add_help=False, formatter_class=argparse.RawTextHelpFormatter) parent.add_argument( @@ -325,20 +335,9 @@ def _build_parser() -> argparse.ArgumentParser: type=Path, help="备份文件保存目录,默认为 ./backups", ) - parent.add_argument( - "--cloud", - dest="cloud", - choices=sorted(DEFAULT_CONFIG_PATHS.keys()), - help=( - "选择部署的云厂商(支持 alicloud、aws、vultr)。\n" - "options:\n" - " - migrate\n" - " - create\n" - " - upgrade\n" - " - backup\n" - " - restore\n" - " - destroy" - ), + parser.usage = ( + "cli.py [-h] [--credentials CREDENTIALS 默认~/.iac/credentials] " + "--cloud {aws, alicloud, vultr} {init,create,migrate,upgrade,backup,restore,destroy}" ) subparsers = parser.add_subparsers(dest="command", required=True)