metaclass: (Default)
[personal profile] metaclass
https://github.com/ahmetalpbalkan/govvv
Софтина на голанге, вызывающая go build с параметрами, устанавливающими переменные с версией, датой сборки, идентификатором ревизии гита и прочим таким.
Я бы в жизни не додумался искать такую софтину, сделал бы в скрипте вызов $(git rev-parse HEAD) и впихнул ее вывод в -ldflags, а вот однако ж - бывает. Хрен знает, насколько хорошо тащить все червей из всех закоулков гитхаба ради условного "взять готовое решение".

Date: 2016-08-16 02:16 pm (UTC)
From: [identity profile] raydac.livejournal.com
я тоже в жизни не додумался бы искать такую софтину, просто в свою тулзу для голанг встроил поддержку систем контроля версий и что бы можно было сказать какая версия мне нужна в зависимостях и всё

Date: 2016-08-16 02:16 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Ну у меня есть какой-то прибамбасик, сдергивает вот это вот, и дату, и фамилию автора последнего коммита, чтобы в ресурс впендюрить в скальном продукте. В принципе, все равно на чем писать; мне проще на скале.

Date: 2016-08-16 03:13 pm (UTC)
From: [identity profile] besm6.livejournal.com
Однако ж сходу: ВНЕЗАПНО может оказаться, что собирается отнюдь не HEAD... Начиная от "незакоммиченное состояние" и заканчивая результатом checkout конкретного коммита.

*sh, к сожалению, провоцирует на решение, которое таких тонкостей не учитывает. А года через два, когда этот двустрочник "был всегда" - опа! грабли.

Я это не к тому, что го не провоцирует на такие решения. Я его не видел, но судя по критике - может и провоцировать. Но *sh точно провоцирует. Этого опыта у меня более чем.

Date: 2016-08-16 04:17 pm (UTC)
From: [personal profile] ex0_planet
git describe делает большую часть необходимой работы. А 80% кода этого "тула" предназначены для того чтобы изобразить из себя шелл.

> *sh, к сожалению, провоцирует на решение

Это не sh провоцирует, это горделивые программисты, которым западло решать неинтересные проблемы, поэтому они их решают "на отъебись". Это не космическая навигация, это блин, система сборки, все состояния кода там поддаются перечислению и осмыслению и неожиданностей там быть не может.

Date: 2016-08-16 05:18 pm (UTC)
From: [identity profile] besm6.livejournal.com
*sh неудобен для аккуратного перебора всех вариантов. Потому и провоцирует на. Он хорош на своем месте - для малой автоматизации работы юзера и для работы под присмотром оного юзера. Чем меньше присмотра предполагается, тем больше аргументов в пользу чего-то другого.

Я действительно пробовал писать на шелле аккуратно. Очень быстро выясняется, что ой. Ну, чтоб не быть голословным - конструкцию вида try-finalize там сделать можно, но только в один уровень. Что, в общем, логично, ибо trap - это перехватчик не исключений, а сигналов, другая семантика. Но сразу приходится рисовать прорву вложенных if, в которых элементарно запутаться. Будет хуже, чем на го.

Это я не шибко сложные, но и не вполне тривиальные скрипты бэкапа писал. Кончилось тем, что они были переписаны на перле (perl был выбран потому, что мне бэкапить в основном дебианы, perl там по определению есть).

Date: 2016-08-16 05:38 pm (UTC)
From: [identity profile] sbj-ss.livejournal.com
Пытаться перехватывать на шелле исключения - ой-вей, таки спасибо, пытался. set -e - ну его фтопку, поведение меняется от версии к версии, условия срабатывания trap неочевидны. Плюс попытки перехватить при этом stderr выливаются в фоновый слушатель и подобный секс в гамаке и стоя.
Тоже переписал на перле, да :)

Date: 2016-08-17 03:43 pm (UTC)
From: [personal profile] ex0_planet
Дак не надо секс в гамаке, исключения там и все вот это вот. Задача обсуждаемого двухпятистрочника — всосать пяток переменных из контроля версий — чуть что не так и досвидос. Эксепшн один — exit 255.

Date: 2016-08-16 03:46 pm (UTC)

Date: 2016-08-16 03:55 pm (UTC)
From: [identity profile] max630.livejournal.com
для того чтобы захотеть убить, достаточно "примеров" кода в виде анимированного gif.

Date: 2016-08-16 07:25 pm (UTC)
From: [identity profile] jakobz.livejournal.com
Вообще, какой-то странный способ версию добавить в аппу. Я бы испугался тулзы, которая ради этого подменяет весь компилятор. Проще уж pre-build шаг добавить, например, который в go-файлик эти переменные кладет.

А в целом по вопросу - я не очень понимаю смысл использовать какой-то кривой, неполноценный, string-ориентированный язык+окружение. Т.е. я вообще не понимаю зачем этот весь ваш линукс-шелл с grep-ами и прочим. Может быть просто не пробовал. Но смысл от меня ускользает. Я беру этот свой C# со стандартной либой, и делаю все это на нем. И папки копирую, и конфиги патчу, и бекапы с баз делаю.

Впрочем, я вот юзаю тот же far, при этом никому не советую его юзать :)

Date: 2016-08-16 08:19 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
>я не очень понимаю смысл использовать какой-то кривой, неполноценный, string-ориентированный язык+окружение.

Вот-вот. Понаделали в 70х чудо-языков, которые от лишнего пробела в if ломаются. И тащат за собой, как обезьяний хвост.

Date: 2016-08-16 11:51 pm (UTC)
From: [identity profile] Дмитрий Васильев (from livejournal.com)
Но смысл от меня ускользает
Смысл в том, что C# - не репл, а баш - репл.

Date: 2016-08-17 12:57 am (UTC)
From: [identity profile] jakobz.livejournal.com
Ну, признаки "наличие REPL" и "является ущербным string-oriented-языком с идиотским синтаксисом" - ортогональны. Можно взять нормальный язык с REPL, можно взять говно с REPL, а можно и говно язык без REPL найти.

Мне, лично, в C# и без REPL неплохо. Хотя он есть в виде LinqPad-а, и свеженького "C:\Program Files (x86)\MSBuild\14.0\Bin\csi.exe", и иногда неплохо заходит.

Date: 2016-08-17 07:26 am (UTC)
From: [identity profile] zealer.livejournal.com
Сделаем шаг назад.
Go больше ориентирован на большие компании, много людей и много проектов. В маленьком señor сделает магический код, который будет понятен только ему, но который пишется быстрее. ( что затруднительно с Go).
У баш-скрипта очень плохая поддерживаемость - либо держим его в отдельном репозитории, что убивает преимущества баш скрипта, либо шлем потом письмо на всех с просьбой обновить скрипт.

Date: 2016-08-17 08:04 am (UTC)
From: [identity profile] metaclass.livejournal.com
Эээ, почему плохая поддерживаемость? Положил рядом с проектом или в зависимом репозитории и все.

Date: 2016-08-17 08:18 pm (UTC)
From: [identity profile] zealer.livejournal.com
Отдельный репозиторий со скриптами, который никто не хочет поддерживать. Который не продокументирован зачастую.
Добавил комментарий - упала база.
Этот случай позволянт ввести маленький скрипт. Только обычно их становится слишком много.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 8th, 2025 05:47 pm
Powered by Dreamwidth Studios