[О блоге]
[наверх]
[пред]
[2024-03-24 11:47:19+03:00]
[42b3d1b739b5f0cef40f349cdc7044a785dc604a]
Темы: [zsh]
Более-менее активная работа с schwabrak-ом
В bd94115b066472316ea03e85d611f732785f8b7c я упоминал о написании "issue
tracker"-а на основе директорий и файлов, пригодного для использования
без дополнительного софта, имея под рукой только Git.
С парой коллег вот попытались его вести для нескольких проектов.
Наверное ещё рано говорить об успехе или провале, но пока вроде
отторжения ни у кого не вызывает это всё. Используем все написанные
на Z shell утилиты мои.
Много коммитов наделал в него, которые то тут, то там что-то упрощают
при работе с ним. Разукрасил его вывод, обмазал цветами: всё же цвета
ощутимо позволяют облегчить навигацию по тексту глазами. Изначально
использовал supercat утилиту, но, оказалось, есть ещё компьютеры с
настолько старой версией, где нет множества используемых мною опций.
Написал свою версию supercat на zsh:
# Usage: colourise ColourSpec:RegExp [ColourSpec:RegExp ...]
# It is intended to be a drop-in replacement for supercat utility.
# ColourSpec is comma delimited list of ANSI codes for colour setting.
# Look for zsh'es Functions/Misc/colors documentation about possible
# colour values. For example to set bold red on green background you use
# "bold,fg-red,bg-green" as a ColourSpec.
# RegExp is POSIX extended regular expression of the text you want to
# colourise.
colourise() {
if [[ -n $NO_COLOR ]] || [[ $# -eq 0 ]] ; then
cat
return
fi
(( ${+colour} )) || { autoload -Uz colors ; colors ; }
local lc=$'\e[' rc=m colr=""
local spec=(${(s/:/)1})
shift
for c (${(s/,/)${spec[1]}}) colr="${col}${lc}${colour[$c]}${rc}"
local re=${(j/:/)spec[2,-1]}
sed -E "s/${re}/${colr}&${reset_color}/g" | colourise $@
}
Можно давать вот такие команды:
colourise bold,fg-green,bg-magenta:"\d+" blue:"whatever regexp"
перечисляя множество регулярок и опций для формирования ANSI разукрасок.
Понравилось что вышло без кучи кода, переиспользуя colors модуль zsh и
POSIX-совместимый sed с расширенными регулярками.
Раньше не было команды "comment", ибо что в неё засунуть, если нужно
всего-лишь открыть issues/.../comment файл и после редактирования
добавить в Git? Но теперь она есть и позволяет предыдущий комментарий
оставить в виде "#"-комментария, а после выхода из редактора удаляет
его, добавляя в Git index. А если ничего не было отредактировано, то
оставляет как было.
"list" команда позволяет фильтровать по тагам. Причём не нужно указывать
полное название тагов. "list star" покажет список задач у которых есть
таги "assignee:stargrave". Если перед тагом написать "!", то будут
показаны задачи у которых него его. "list starg \!done" -- все не
сделанные задачи (у которых нет status:done тага) повешенные на меня.
На работе используется сраный GitLab (сраный -- потому что не
поддерживает SHA256 Git-репозитории, как минимум). Но в нём парой
щелчков можно включить отсылку оповещений о коммитах с показом diff-а.
Поэтому любой push в репозиторий с задачами -- оповещает на email всех
участников.
Пока мне очень нравится как с ним удаётся работать и лично мне ощутимо
помогает уже с несколькими десятками задач. Кроме него, у меня ещё и
личный issue tracker был, по которому очень легко было делать отчёты об
удалённой работе (да, сдаём каждый месяц такое). С schwabrak-based
tracker-ом можно давать ссылки на GitLab и на нужную директорию задачи,
что было бы уже проблематично, если бы задачи находились в
SQL/Recutils/Org-mode СУБД какой-нибудь.
[оставить комментарий]