Для одного проекта понадобилось высылать заказчику обновления ( pack ), так как это рутинная задача, я решил написать простой скрипт на shell:
#!/bin/sh # Мыльник куда отправляем пакет с обновлениями EMAIL=$1 # Директория с проектом PROJECT=/var/www/my_project # Дата ( для заголовка письма и названия файла архива с обновлением ) DATE=`date +%d-%m-%Y_%H-%M` # Название файла архива с обновлением TARNAME=pack_my_project_$DATE.tgz # Локальная директория в которой сохраняются архивы с обновлениями PACK=pack/$TARNAME # Изменения в проекте ( git ) CHANGE=`cd $PROJECT && git diff --stat | awk 'NF != 7 {print $1}' && cd - > /dev/null` # Тема письма с архивом обновления SUBJECT='Обновление project от $DATE' # Тело письма, опционально BODY='' # Создаем архив с изменениями и отправляем письмо cd $PROJECT && \ tar czf $PACK $CHANGE > /dev/null && \ ( ( echo $BODY $CHANGE ); uuencode $PACK $TARNAME ) \ | mail -s "Обновление project от $DATE" $EMAIL && \ cd - > /dev/null
в .zshrc прописываем путь к директории к скрипту и ставим разрешение на выполнение файла
Отправляем:
$ my_project_update.sh test@gmail.com
Сообщение с паком уйдет на почту.
TODO: Мою задачу скрипт решает полностью, но его можно доработать:
1) проверка наличия параметра $1
2) проверка, что в проекте реально есть изменения