88
99import click
1010
11+ from avito .cli .click_params import RequiredPromptArgument , RequiredPromptOption
1112from avito .cli .config import (
1213 AccountsDocument ,
1314 AccountStore ,
@@ -33,9 +34,32 @@ def account_group() -> None:
3334 """Управлять локальными учетными записями."""
3435
3536
37+ class _AuthRequiredPromptOption (RequiredPromptOption ):
38+ """Обязательный option с учетом глобального запрета интерактивного ввода."""
39+
40+ def _missing_value_error (self ) -> click .ClickException :
41+ """Создать auth-ошибку отсутствующего значения для non-interactive режима."""
42+
43+ return CliAuthRequiredError (
44+ f"{ self .human_readable_name } не передан, а интерактивный ввод отключен." ,
45+ )
46+
47+
3648@account_group .command ("add" )
37- @click .argument ("account_name" , metavar = "ACCOUNT-NAME" )
38- @click .option ("--client-id" , required = True , metavar = "CLIENT-ID" , help = "Client ID учетной записи." )
49+ @click .argument (
50+ "account_name" ,
51+ cls = RequiredPromptArgument ,
52+ prompt = "Имя учетной записи" ,
53+ metavar = "ACCOUNT-NAME" ,
54+ )
55+ @click .option (
56+ "--client-id" ,
57+ cls = _AuthRequiredPromptOption ,
58+ required = True ,
59+ prompt = "Client ID" ,
60+ metavar = "CLIENT-ID" ,
61+ help = "Client ID учетной записи." ,
62+ )
3963@click .option (
4064 "--client-secret" ,
4165 metavar = "CLIENT-SECRET" ,
@@ -144,7 +168,12 @@ def list_accounts(ctx: CliContext) -> None:
144168
145169
146170@account_group .command ("use" )
147- @click .argument ("account_name" , metavar = "ACCOUNT-NAME" )
171+ @click .argument (
172+ "account_name" ,
173+ cls = RequiredPromptArgument ,
174+ prompt = "Имя учетной записи" ,
175+ metavar = "ACCOUNT-NAME" ,
176+ )
148177@click .pass_obj
149178def use_account (ctx : CliContext , account_name : str ) -> None :
150179 """Сделать учетную запись активной."""
@@ -203,7 +232,12 @@ def current_account(ctx: CliContext) -> None:
203232
204233
205234@account_group .command ("delete" )
206- @click .argument ("account_name" , metavar = "ACCOUNT-NAME" )
235+ @click .argument (
236+ "account_name" ,
237+ cls = RequiredPromptArgument ,
238+ prompt = "Имя учетной записи" ,
239+ metavar = "ACCOUNT-NAME" ,
240+ )
207241@click .option ("--yes" , is_flag = True , help = "Удалить без интерактивного подтверждения." )
208242@click .option ("--confirm" , metavar = "ACCOUNT-NAME" , help = "Подтвердить имя удаляемой учетной записи." )
209243@click .pass_obj
0 commit comments