Комментарии 7
Мне подобных штук очень не хватало в Си, потиху пилил свой велосипед. Начиналось всё с кросплатформенного printf с цветом, а закончилось Winter Novel. Не забывайте вовремя остановиться! :-)
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
hello()
Нашел для себя не менее (в чем-то и более) декларативную штуку — docopt: https://github.com/docopt/docopt
Классно, что есть такие штуки. В свое время искал библиотеку для консольного gui, но они все были ужасны. Не помню, на чем остановился, но в итоге из-за необходимости в мелких украшательствах код для отображения интерфейса занимал больше строк и потребовал больше времени, чем собственно вся остальная логика. После того случая изучение фронтенда уже не кажется пустой тратой времени
Для cli есть очень неплохая библиотека от еще более крупной корпорации — google fire. Идеально интегрируется в любой код, работает удобно. Только вот из коробки нет возможности задавать однобуквенные алиасы (-v вместо --version) или я не разобрался как. Автодополнения вроде тоже не было
Для cli
Что интересно, у этой утилиты вскоре появился конкурент на Go (kube-prompt), автор которой попутно «повторил» и саму библиотеку python-prompt-toolkit на том же Go — go-prompt. И она явно нашла своих пользователей (разработчиков) с 2300+ звёзд на GitHub и вот таким уже списком использующих её проектов.
За подборку спасибо. Действительно могут пригодиться. Даже знаю уже где попробую приткнуть.
А вот для прошлых моих юзкейсов большинство этих библиотек были бы бесполезны, кроме fabric наверное.
Правда я про него узнал когда активно уже использовал paramiko и connection pool, покрывая 10% нужной мне функциональности fabric без его удобства.
Не писал я скриптов с интерактивом, они "запустил и забыл" все. И запускаются то из cron то из под CI/CD то вообще один скрипт другой пускает или использует из него функции.
Так что наиболее важным всегда было написать внятный парсинг командной строки используя argparse или docopts.
Второй момент по значимости — это держать в голове мысль что твой скрипт может быть использован и как модуль.
Тогда сами по себе появляются классы/функции и мало-мальски оформленная архитектура.
Так что не только в замечательных библиотеках дело.
Мелкая питонячая радость #9: консольные приложения с человеческим лицом