[devel] Автоматические release
Aleksey Avdeev
solo at solin.spb.ru
Tue Aug 4 21:07:19 MSD 2009
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 переменных: в голову
приходят только варианты отрезания подстрок по частям... А это
получается более монстраподобно, чем sed.
От if можно избавиться с помощью конструкции вида
%{!?distr_switch: %1}%{?distr_switch: %(...)}, но это потребует
обработки в awk ситуации, когда "%distr_switch" = "" (когда он определён
как %nil или ""). if же позволяет отсечь данный случай на раннем этапе,
до вызова sed/awk.
PS: По хорошему, нужно ещё придумать как поступать когда <number> = 0 и
когда <number> имеет ведущие 0 (сейчас они теряются).
--
С уважением. Алексей.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 552 bytes
Desc: OpenPGP digital signature
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20090804/6ea50af0/attachment-0001.bin>
More information about the Devel
mailing list