Проблема
Почти весь вывод CLI по умолчанию печатается «голым» JSON через format_output(..., "json", ...). Для машинной обработки это правильно, но для справочных / информационных команд (которые показывают человеку список значений, а не данные API) JSON-дамп читается плохо.
Пример уже существующей справочной команды, которая печатает сырой JSON:
direct dictionaries list-names → format_output(DICTIONARY_NAMES, "json", None) (direct_cli/commands/dictionaries.py:82-85) — жёстко зашит json, даже без --format.
Повод: обсуждали добавление справки по «динамическим параметрам» Яндекс Директа (подстановочные переменные {campaign_id}, {keyword}, {source_type}, … для UTM-меток/ссылок). Такую справку логично выводить человекочитаемо, а не одним JSON-блоком.
Что хочется
Для информационных/справочных команд (перечисления значений, справочники, шаблоны параметров) сделать человекочитаемый вывод по умолчанию, сохранив машинные форматы как опцию.
Варианты (обсудить при реализации):
- Дефолт
--format table для справочных команд (json/table/csv/tsv уже поддержаны в format_output, direct_cli/output.py:24; format_table через tabulate — output.py:160).
- Либо отдельный «pretty»-вывод (выровненный список «параметр — описание — пример»), а
--format json — для скриптов.
Объём / границы
- НЕ трогаем формат вывода команд, которые возвращают данные API (там
json по умолчанию — правильно и ожидаемо для пайплайнов).
- Касается только справочных команд: текущая
dictionaries list-names и будущие (tracking-params и т.п.).
- Все справочные команды должны поддерживать
--format {json,table,csv,tsv} единообразно (сейчас list-names не поддерживает вовсе).
Затрагиваемые места
direct_cli/output.py — format_output / format_table (переиспользовать, не дублировать).
direct_cli/commands/dictionaries.py:82 — list-names привести к общему виду с --format.
- Конвенция для новых справочных команд.
Проблема
Почти весь вывод CLI по умолчанию печатается «голым» JSON через
format_output(..., "json", ...). Для машинной обработки это правильно, но для справочных / информационных команд (которые показывают человеку список значений, а не данные API) JSON-дамп читается плохо.Пример уже существующей справочной команды, которая печатает сырой JSON:
direct dictionaries list-names→format_output(DICTIONARY_NAMES, "json", None)(direct_cli/commands/dictionaries.py:82-85) — жёстко зашитjson, даже без--format.Повод: обсуждали добавление справки по «динамическим параметрам» Яндекс Директа (подстановочные переменные
{campaign_id},{keyword},{source_type}, … для UTM-меток/ссылок). Такую справку логично выводить человекочитаемо, а не одним JSON-блоком.Что хочется
Для информационных/справочных команд (перечисления значений, справочники, шаблоны параметров) сделать человекочитаемый вывод по умолчанию, сохранив машинные форматы как опцию.
Варианты (обсудить при реализации):
--format tableдля справочных команд (json/table/csv/tsvуже поддержаны вformat_output,direct_cli/output.py:24;format_tableчерезtabulate—output.py:160).--format json— для скриптов.Объём / границы
jsonпо умолчанию — правильно и ожидаемо для пайплайнов).dictionaries list-namesи будущие (tracking-paramsи т.п.).--format {json,table,csv,tsv}единообразно (сейчасlist-namesне поддерживает вовсе).Затрагиваемые места
direct_cli/output.py—format_output/format_table(переиспользовать, не дублировать).direct_cli/commands/dictionaries.py:82—list-namesпривести к общему виду с--format.