Открыв целых две вкладки в яквейке и разыскивая команды в истории, я понял, что пришло время осилить написание скриптов, чтобы автоматизировать свою рутинную деятельность по пинанию ОБС для сборки свежих личкрафтов. Спасибо rioky, ascrazy и settler за помощь! Результатом явился такой скрипт. Пробегусь по его содержимому:
- #!/bin/sh — указывает на приложение для исполнения данного файла (как правило, это ссылка на какой-либо шелл:
ls -l /bin/sh
в моём случае им является bash); - DGIT=~/Documents/obs/trash/leechcraft — присваивание значения переменной, пути с ~ нельзя брать в кавычки;
- echo 'Checking of github version:' — вывод сообщения;
- cd $DGIT — переменную вызываем с $;
- git pull — обновление локальной копии git-а;
- VGIT=`git describe` — присваивание переменной значения, являющейся выводом команды в ``, выводящей значение ??? последнего коммита;
- echo -e ' '$VGIT — вывод переменной после пустой строки;
- osc up — обновление лоакальной копии проекта ОБС;
- VOBS=`grep 'define LEECHCRAFT' leechcraft.spec | awk '{ print $3 }'` — третье слово из строки, содержащей искомую подстроку;
- if [ $VGIT == $VOBS ] — условие, сравниваются две переменные;
- then — отмечает начало кода, выполняемого, когда условие истинно;
- else — когда ложно;
- fi — завершение условия;
- read — ожидание ввода, прервать выполнение скрипта можно по Ctrl+C;
- CTIME=`date +%s` — получение текущего unix-времени;
- cp ./leechcraft.spec ./leechcraft.spec.$VOBS.$CTIME — бэкап спек-файла;
- sed "
s/$VOBS/$VGIT/g
"./leechcraft.spec.$VOBS.$CTIME > ./leechcraft.spec
— передача содержимого одного файла в другой с заменой заданных подстрок; - osc ci -m $VGIT — отправка изменений в проект ОБС.
Чтобы получить копию git-а, вбиваем git clone git://github.com/0xd34df00d/leechcraft.git
Чтобы получить копию проекта ОБС, вбиваем osc co home:Reki:leechcraft:masterbranch leechcraft
Для быстрого запуска скрипта можно добавить соответствующую строку в конфиг вашего шелла: alias bs-leechcraft-master='sh ~/Documents/obs/lc.sh'
zypper rm -u имя_пакета подчищает при удалении невостребованные другими пакетами зависимости.