Dmitri
1. Серверу ок
Aleksandr
на этапе напсания кода мне иде подскажет что поля то нет
Dmitri
2. Серверу не ок.
Dmitri
на этапе напсания кода мне иде подскажет что поля то нет
Вот, если уж об иде, то кодогенерация на уровне иде вполне решается
Dmitri
Если уж она умеет файлы сохранять при изменении, то, видимо, и автоматический запуск кодогенерации при изменении схемы прикрутить тоже можно
Aleksandr
можно
Dmitri
Если иде нет, то несколько сложнее
Dmitri
Оно либо скомпилилось, либо нет
Dmitri
И вот тут вам либо гитхуками обвешиваться
Dmitri
К слову, почему бы и нет
Dmitri
Либо думать на тему "что будет, если на сервер неполный жсон уйдет"
Dmitri
И тут либо все норм, либо сервер просто нафиг пошлет
Aleksandr
да. я все же считаю что код сгенерить должен разработчик, а не ci или что-то там на стороне, поэтому бы написал гитхук, который перед пушем генерит код из схемы, проверяет получившиеся файлы на идентичность с файлами из последнего коммита, и в случае не соответствия реджектил бы с сообщением
Dmitri
Ну вот да, проблема несгенеренных апишек где-то на этом уровне должна решаться
Dmitri
А автозапуск генерации сильно много поломать может
Dmitri
Так что я против такого "умного" компилятора
Aleksandr
да и вообще это странно, что у тебя в репо и релиз уйдет код, который разработчик даже не видел
Dmitri
Видеть-то видел. Просто не в запущенном состоянии)
Aleksandr
вчера продвигали тему, что генерить должен ci например. то есть я запушил, ci сгенерил по схеме код, протестил, сбилдил бинарники, разлил на бой
Aleksandr
при таком подходе разраб не видел новый код)
Dmitri
Свят-свят
Dmitri
При этом он его и не запускал
Dmitri
Вообще, мне кажется, что такие кейсы - они уже не в компетенции гошного компилятора
Dmitri
Если оно реально требует контроля, то уж билд-систему пилить всяко надо
Aleksandr
ненене, не CI, а make-скрипт
это про другое) искать не буду, о речь шла про ci
Dmitri
Ага, читал
Dmitri
Там было про "сгенеренный код кодом не считается, и держать его в Гите не надо"
Dmitri
Вот такая позиция, вроде, была
Aleksandr
Вот такая позиция, вроде, была
и что-то такое было. но это все разные кейсы. многое обсудили)
Roman
Там было про "сгенеренный код кодом не считается, и держать его в Гите не надо"
моя позиция была такова: "сгенеренный код - это тоже код, но не исходный, потому-что его не человек писал. Исходным кодом считается только то, что писал человек или сопостовимый интеллект" основываясь на https://softwareengineering.stackexchange.com/a/361460
Алексей
Ну не знаю какая там у других людей была позиция, но у меня была позиция - кодогенерация обязательно должна запускаться при компиляции (точнее перед), чтобы полностью исключить ситуацию когда человек забыл запустить кодогенерацию.
Алексей
А ci/не ci, коммитить/не коммитить - это уже другое дело.
Алексей
Roman
И прошу обратить внимание что тут написано "должна запускаться при компиляции", а не "должна запускаться только при компиляции".
однако с этим тоже есть небольшая проблемка... autocompletion будет партачить если вручную не запускать
Алексей
ну для автокомплита уж руками, или может ide сможет
Roman
ну для автокомплита уж руками, или может ide сможет
в таком случае лучше чтоб IDE генерила при сохранении исходника
Алексей
вот да
Roman
но, это не отменяет нужду генерации при сборке, просто она пройдёт из кеша
Алексей
точнее можно при сохранении запускать каждый раз генерацию
Алексей
если есть кеширование, то будет быстро
Roman
и при сохранении исходника и при сборке
Алексей
При сохранении чего?
Но ведь же можно прочитать сообщение выше.
Алексей
и при сохранении исходника и при сборке
Алексей
вот это вот
snip
Какого исходника?
snip
Любого файла? Файла го? Джисон?
Алексей
Я даже не знаю как на это реагировать
Алексей
ну ведь можно же наверное прочитать сообщения выше и понять о чём идёт речь
snip
Я почитал, там не сказано, там просто говорится что при изменении исходника
snip
Схема на основе которой генерится коды может быть в JSON, xml, yaml, а может в го коде
snip
Вот я и спрашиваю при изменении чего должна запускаться генерация
Roman
Я почитал, там не сказано, там просто говорится что при изменении исходника
из контекста понятно что не всех файлов, "исходника" -> одного, значит того, из которого генерится код, не "исходников"
snip
из контекста понятно что не всех файлов, "исходника" -> одного, значит того, из которого генерится код, не "исходников"
Вопрос как раз в этом - как иде поймёт после изменения какого файла надо запускать генерацию?
Roman
go run make.go -g
Roman
оптимизировать можно дальше, конечно
snip
А зачем? Почему просто не запустить генерацию, если мейк файл все равно руками запускаем?
Roman
в VSC есть такие полезные вещи как workspaces, где можно прописать выполнение скрипта на разные файлы: generated_api.json -> go run make.go -g generated_api.json
snip
Автоматизация ради автоматизации без реальной пользы и это я не про vsc
Roman
Автоматизация ради автоматизации без реальной пользы и это я не про vsc
из оперы "если мнение не моё - значит оно неверное"
snip
из оперы "если мнение не моё - значит оно неверное"
Так ты же не смог объяснить в чем польза, запускаем мейк файл руками, чтобы не запускать генерацию руками Ну охереть автоматизатор)))
Vadim
Watch "JavaScript: Understanding the Weird Parts - The First 3.5 Hours" on YouTube https://youtu.be/Bv_5Zv5c-Ts
Vadim
"The first 3.5 hours"
snip
аргументация вся озвучена, вернее описана, выше. ты совершенно не понял о чём идёт речь
Я как раз понимаю, а ты теоретизируешь и высасываешь из пальца
Roman
Watch "JavaScript: Understanding the Weird Parts - The First 3.5 Hours" on YouTube https://youtu.be/Bv_5Zv5c-Ts
How to write good JavaScript code, a step-by-step instruction: 1. Install TypeScript... *offtop*
hamper 𓅝
А почему может не работать ldflags? Делаю в пакете system переменную var Branch string, собираю через go build -ldflags "-X system.Branch=master" и при запуске в переменной пустая строка все равно.
🏁Александр
эм
🏁Александр
насколько я помню это работает только для пакета main
🏁Александр
но могу нагло врать
Илья
нагло
Илья
это работает везде
hamper 𓅝
Вот у меня в main работает а в отдельном пакете почему-то нет.