Я пытаюсь создать инструмент CLI для выполнения сценариев python в хранилище. Мой друг помог мне, но, учитывая, что я впервые использую argparse и click для создания CLI, у меня возникают проблемы с его правильным исполнением. Моя цель - создать CLI, который будет работать со всеми моими подкаталогами в моей папке Python:
https://github.com/Richard-Barrett/SalesforceCLI/tree/master/Python
Оказавшись здесь, я имею там есть скрипт: sfd c .py, который я хотел бы в конечном итоге импортировать как путь в /usr/local/bin
для выполнения внутри оболочки.
Основной сценарий, который выполняет это, должен быть sfdc.py
, и я хочу назвать его так
python sfdc.py <sub-directory> <optional_flag>
, чтобы подкаталог был аргументом, а исполняемый скрипт - необязательным. флаг.
Вот основной код: https://github.com/Richard-Barrett/SalesforceCLI/blob/master/Python/sfdc.py
Фактический код:
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser(
description='SalesforceCLI will return Pandas Dataframes from Salesforce Cases within an Organizations SFDC. It will also allow you to interact with Salesforce Lighting Experience or Service console from within the CLI. You will even be able to make leads, create cases, and send off emails all from your CLI!',
epilog="SalesforceCLI is here to help you automate reports and data within your Organizations SFDC"
)
# Poitional Arguments
parser.add_argument('accounts', help='Pandas Dataframe that shows all available accounts active within an organizational SFDC')
parser.add_argument('cases', help='cases dataframes related to defined case report, default is set to all cases')
parser.add_argument('contacts', help='return a list of contacts as a dataframe')
parser.add_argument('leads', help='leads dataframes related to all defined leads for user access, default is set to all concurrent leads within an organizational SFDC')
parser.add_argument('lightning', help='Work with Salesforce Lightning from the CLI')
parser.add_argument('service', help='Work with Salesforce Service Console from the CLI')
parser.add_argument('soql', help='SOQL custom query for users within an SFDC')
parser.add_argument('reports', help='reports dataframes related to defined reporst, default is set to list all available reports for use with SFDC access')
# Optional Arguments
parser.add_argument('-v','--version', dest='accumulate', action='store_const',
const=sum, default=max,
help='Returns the version of SalesforceCLI'),
#printf("Optional Arguments for cases")
parser.add_argument('-s1','--sev1', dest='accumulate', action='store_const',
const=sum, default=max,
help='Return Pandas Dataframe for all Severity Level 1 Cases')
parser.add_argument('-s2','--sev2', dest='accumulate', action='store_const',
const=sum, default=max,
help='Return Pandas Dataframe for all Severity Level 2 Cases')
parser.add_argument('-s3','--sev3', dest='accumulate', action='store_const',
const=sum, default=max,
help='Return Pandas Dataframe for all Severity Level 3 Cases')
parser.add_argument('-s4','--sev4', dest='accumulate', action='store_const',
const=sum, default=max,
help='Return Pandas Dataframe for all Severity Level 4 Cases')
args = parser.parse_args()
if args.sev1:
execfile('Cases/read_all_sev1_cases.py')
if args.sev2:
execfile('Cases/read_all_sev2_cases.py')
Как я могу создать инструмент CLI, используя эту структуру? Помощь и вывод текста почти к тому, что я хочу. Я даже изменил это, чтобы включить строки, подобные этой, но это не сработало.
parser.add_argument('-s2','--sev2', action='store_true',
help='Return Pandas Dataframe for all Severity Level 2 Cases')
У кого-нибудь есть какие-либо предложения о том, как написать CLI для использования python?
Я при попытке запустить код способом
python sfdc.py cases --sev2
при его запуске я получаю следующую трассировку:
richardbarret@1152-MBP ~/Git/SalesforceCLI/Python master ● ⍟1 python sfdc.py cases -s1 ✔ 1128 20:19:53
usage: sfdc.py [-h] [-v] [-s1]
accounts cases contacts leads lightning service soql reports
sfdc.py: error: too few arguments