Тул или пару строчек на баше?
https://github.com/ahmetalpbalkan/govvv
Софтина на голанге, вызывающая go build с параметрами, устанавливающими переменные с версией, датой сборки, идентификатором ревизии гита и прочим таким.
Я бы в жизни не додумался искать такую софтину, сделал бы в скрипте вызов $(git rev-parse HEAD) и впихнул ее вывод в -ldflags, а вот однако ж - бывает. Хрен знает, насколько хорошо тащить все червей из всех закоулков гитхаба ради условного "взять готовое решение".
Софтина на голанге, вызывающая go build с параметрами, устанавливающими переменные с версией, датой сборки, идентификатором ревизии гита и прочим таким.
Я бы в жизни не додумался искать такую софтину, сделал бы в скрипте вызов $(git rev-parse HEAD) и впихнул ее вывод в -ldflags, а вот однако ж - бывает. Хрен знает, насколько хорошо тащить все червей из всех закоулков гитхаба ради условного "взять готовое решение".
no subject
*sh, к сожалению, провоцирует на решение, которое таких тонкостей не учитывает. А года через два, когда этот двустрочник "был всегда" - опа! грабли.
Я это не к тому, что го не провоцирует на такие решения. Я его не видел, но судя по критике - может и провоцировать. Но *sh точно провоцирует. Этого опыта у меня более чем.
no subject
> *sh, к сожалению, провоцирует на решение
Это не sh провоцирует, это горделивые программисты, которым западло решать неинтересные проблемы, поэтому они их решают "на отъебись". Это не космическая навигация, это блин, система сборки, все состояния кода там поддаются перечислению и осмыслению и неожиданностей там быть не может.
no subject
Я действительно пробовал писать на шелле аккуратно. Очень быстро выясняется, что ой. Ну, чтоб не быть голословным - конструкцию вида try-finalize там сделать можно, но только в один уровень. Что, в общем, логично, ибо trap - это перехватчик не исключений, а сигналов, другая семантика. Но сразу приходится рисовать прорву вложенных if, в которых элементарно запутаться. Будет хуже, чем на го.
Это я не шибко сложные, но и не вполне тривиальные скрипты бэкапа писал. Кончилось тем, что они были переписаны на перле (perl был выбран потому, что мне бэкапить в основном дебианы, perl там по определению есть).
no subject
Тоже переписал на перле, да :)
no subject
двухпятистрочника — всосать пяток переменных из контроля версий — чуть что не так и досвидос. Эксепшн один — exit 255.