Для одного проекта понадобилось высылать заказчику обновления ( 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) проверка, что в проекте реально есть изменения
