dap: (Default)
dap ([personal profile] dap) wrote2012-02-24 10:03 am

*sh-скрипнинг | Правильное удаление пакетов

Открыв целых две вкладки в яквейке и разыскивая команды в истории, я понял, что пришло время осилить написание скриптов, чтобы автоматизировать свою рутинную деятельность по пинанию ОБС для сборки свежих личкрафтов. Спасибо 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 имя_пакета подчищает при удалении невостребованные другими пакетами зависимости.


Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting