# Packages
# README
Про
Скрипт не обрабатывает все возможные proto файлы (по крайней мере сейчас), был написан за пару дней, чтобы покрывать 99 процентов proto файлов консоли.
Скрипт ничего не генерирует и выводить ответ в консоль.
Вывод никак не форматируется - это отдается на откуп локальным линтерам.
Комментарии пока что не сохряняются.
Если в оригинальном proto файле есть вложенности messages или oneof конструкции, то будут сгенерированы соответствующие namespace - это надо понять и принять. Очень удобно и держит код в чистоте. namespace и коллизи имен в ts - это скрытый гем.
config.json
- нужен для подмены типов переменных proto файлов. Через флаг -k
можно задавать профили, если скрипт используется не в одном проекте - пишешь код для Datasphere, потом переключаештся в Console и используешь подстановки для консоли через -k
флаг.
Если в проекте есть коллизии имен типов из разных файлов, то лучше такие подстановки не добавлять в config.json
, а делать их самому и вдумчиво (если спрос на скрипт будет большим, то можно будет добавить парсинг import
самого proto файла, но пока так).
Про config.json
:
- первый ключ в json объекте - это ключ (задается через
-k
флаг) профиля импортов, по умолчанию онdatasphere
и подстановки берутся оттуда (для консоли лучше добавить новый ключconsole
и заполнить объект самим с учетом ts path aliases, тогда в вызов скрипта нужно будет добавить-k console
) - каждый ключ внутри профиля - это proto тип, который будет заменен на
substitution
значение - если указан
import_source
для proto типа, то скрипт добавит импорт дляsubstitution
(очень удобно будет добавить alias для ts импортов внутри своего проекта и затем прорастить их вconfig.json
, чтобы оставалось только отформатировать файл и не заниматься менеджментом импортов типов из других proto файлов), но при условии, что в этом же messages не определен уже тип
Самый быстрый запуск:
- клоним проект
- устанавливаем версию go из go.mod (пока что никаких сторонних либ не используется и не планируется)
cp base.config.json config.json
- делаем
go build
, сгенерируется исполняемый файл, копируем его абсолютный путь - добавляем в свой
~/.zshrc
строкуalias pTs='АБСОЛЮТНЫЙ_ПУТЬ_ДО_ФАЙЛА'
(pTs
- protoTypeScript, можно ещеpTTs
- protoToTypeScript или как угодно, это ваш скрипт и ваш alias). Альтернативно можно добавитьalias pTs='go run АБСОЛЮТНЫЙ_ПУТЬ_ДО_ФАЙЛА_main.go'
. - используем с удовольствием, оставляем фидбек и пожелания если есть необходимость