[devel] Автоматические release

Led ledest at gmail.com
Tue Aug 4 21:13:19 MSD 2009


On Tuesday 04 August 2009 20:07:19 Aleksey Avdeev wrote:
> Michael Shigorin пишет:
> > On Tue, Aug 04, 2009 at 07:29:54PM +0400, Aleksey Avdeev wrote:
> >> Похоже начало вытанцовываться что-то похожее. Если использовать
> >> прилагаемый макрофайл (см. вложение), то:
> >>
> >> Release: %distr_auto_release <prefix><number>[.<suffix>]
> >
> > IMHO чуточку лучше бы
> >
> > Release: %distro_release ...
> >
> > или вообще
> >
> > Release: %branch_release ...
>
>    OK. Тогда и остальные макросы в %branch_switch и %branch_release_num,
> для единообразия.
>
> >> PS: Данный вариант мне нравиться дольше, чем используемый
> >> сейчас. Думаю запаковать его. Прошу предлагать более внятные
> >> названия для макросов и/или самого пакета.
> >
> > Да, вполне симпатично.
> >
> >> #auto_distr macros
> >>
> >> # release format: <prefix><number>[.<suffix>]
> >> %distr_auto_release() %(if [ "%{?distr_switch}" = "" ]; then echo "%1";
> >> else echo "%1"|sed -rn -e
> >> 's@^([^[:space:]]+)([0-9]+)(|(\\.[^[:space:]]+))$@\\1/\\2/\\3 at p'|awk -v
> >> FS='/' -v distr_name='%{?distr_switch}' -v distr_num='%{?distr_num}'
> >> 'BEGIN {if (distr_num == "") {num="1"} else {num=distr_num}; suf=("."
> >> distr_name "." num) }; {print $1 ($2-1) suf $3}'; fi)
> >
> > Что-то подсказывает, что вместо if, echo, sed и awk можно
> > обойтись просто awk; с другой стороны, так экономится пара
> > циклов в тривиальном случае... :)
>
>    Вариант избавится от sed напрашивается. Но я не придумал, как в awk с
> помощью регулярного выражения разрезать строку на 3 переменных:

split()

> в голову 
> приходят только варианты отрезания подстрок по частям... А это
> получается более монстраподобно, чем sed.
>
>    От if можно избавиться с помощью конструкции вида
> %{!?distr_switch: %1}%{?distr_switch:  %(...)}, но это потребует
> обработки в awk ситуации, когда "%distr_switch" = "" (когда он определён
> как %nil или ""). if же позволяет отсечь данный случай на раннем этапе,
> до вызова sed/awk.
>
> PS: По хорошему, нужно ещё придумать как поступать когда <number> = 0 и
> когда <number> имеет ведущие 0 (сейчас они теряются).



-- 
Led


More information about the Devel mailing list