antigluk 22.05.2010 10:17
Скрипты — Напоминалка о событиях HolidaySH
Привет, Вилинуксоид!На днях написал скрипт для оповещения разных событий: дней рождения, задач.
Сегодня сел и оформил по-человечески в гибку консольную программу для оповещения событий совершенно разного рода по шаблонам, которые можно добавлять.
И так, перед вами HolidaySH, которая написана на bash.
Основные преимущества:
- Работает с текстовыми файлами
- Можно редактировать шаблоны
Установка
Для debian-based дистрибутивов: holidaysh.deb
Остальным - придется раскидывать файлы руками, делаете чекоут:
$ svn checkout http://holidaysh.googlecode.com/svn/trunk/ holidaysh
В holidaysh удаляете папку DEBIAN и разбрасываете файлы по папкам, даете права на выполнение (ВАЖНО!: У файлов-шаблонов также должны быть права на выполнение)
Использование
Для работы с программой нужно в домашней папке создать файл ".holidayshrc" с таким текстом:
HOLIDAYSLIST="$HOME/holidays"
TEMPLATESDIR="$HOME/.holidaysh/templates"
HOLIDAYSLIST - путь к файлу со списком праздников.
TEMPLATESDIR - путь к папке с пользовательскими шаблонами - указывайте при желании писать шаблоны.
По умолчанию праздники HSH берет из файла /etc/holidaysh/holiday-list, а также всех файлов в папке /etc/holidaysh/holidays.d/
Шаблоны - в папке /etc/holidaysh/templates/
Файл праздников - текстовый файл с такой информацией: (разделено символами таба "\t")
1) Шаблон события
Обязательное поле.
В моём комплекте есть 5 шаблонов: b (birdthday - день рождения), i (info - просто событие с информацией), t (task - задача на целый день), tt (time task - задача на указанное время).
2) Дата
Дата, в формате DD/MM/YYYY, обязательное поле.
3) Далее идут параметры в замисимости от выбранного шаблона.
Например, для дня рождения далее идет одно поле с именем человека в родительном падеже.
Пример файла с праздниками: (разделители - табы)
b 22/05/1990 Теста Тестовича
b 24/02/1984 Эксперементыча
t 22/05/2010 написать статью на хабре
tt 22/05/2010 10:00 попробовать задачу со временем
При запуске без параметров программа выдает праздники на сегодняшнее число:
$ holidaysh
День рождения у Теста Тестовича, исполняется 20
Сегодня тебе нужно написать статью на хабре
Сегодня в 10:00 тебе нужно попробовать задачу со временем
Параметры:
-d задает дату
$ holidaysh -d 24/02/2010
День рождения у Эксперементыча, исполняется 26
-p задает дополнительные параметры, которые передаются напрямую к шаблонам. Разделяются запятой.
Например, -p speech должны обрабатывать все шаблоны и оптимизировать вывод для голосового оповещения.
Сейчас -p speech обрабатывает только tt - убирает знак двоеточия между часами и минутами.
$ holidaysh
День рождения у Теста Тестовича, исполняется 20
Сегодня тебе нужно написать статью на хабре
Сегодня в 10:00 тебе нужно попробовать задачу со временем
$ holidaysh -p speech
День рождения у Теста Тестовича, исполняется 20
Сегодня тебе нужно написать статью на хабре
Сегодня в 10 00 тебе нужно попробовать задачу со временем
Удачи! Если понадобится - в следующей статье напишу как делать шаблоны.
И да, кстати, забыл добавить, что у меня при приведенных Вами настройках в файле .holidayshrc скрипт ругался:
Заменил строку на
и всё заработало как надо.
% cat ~/.holidayshrc
HOLIDAYSLIST="~/holidays"
TEMPLATESDIR="~/.holidaysh/templates"
% holidaysh
cat: ~/holidays: Нет такого файла или каталога
HOLIDAYSLIST="~/holidays"
TEMPLATESDIR="~/.holidaysh/templates"
% holidaysh
cat: ~/holidays: Нет такого файла или каталога
Заменил строку на
HOLIDAYSLIST="$HOME/holidays"
и всё заработало как надо.
Хм, возможно. Пример писал прямо в редакторе, не проверял. Поменял на ваш.
Для работы с программой нужно в домашней папке создать файл ".holidayshrc" с таким текстом:
1 HOLIDAYSLIST="$HOME/holidays"
2 TEMPLATESDIR="$HOME/.holidaysh/templates"
1 HOLIDAYSLIST="$HOME/holidays"
2 TEMPLATESDIR="$HOME/.holidaysh/templates"
Почему бы не сделать в скрипте проверку на существование файла .holidayshrc. И если файл не существует, то создать его с дефолтным содержанием?
Тогда не будет проблем как в комментарии выше.
Этого делать не обязательно, потому что если нет такого файла - то программа берет дефолтные настройки из /etc/holidaysh/*
У меня есть :)
Есть предложения?
Какие мои планы: несколько скриптов для быстрой интеграции с notifyosd, festival.
Есть предложения?
Какие мои планы: несколько скриптов для быстрой интеграции с notifyosd, festival.
Хотя думаю, что ещё буду его под себя переписывать — пожалуй, уберу некую зависимость от системных директорий (свои скрипты храню в ~/bin, переносимость лучше и в случае проблем с системой не беспокоюсь за то, что что-то забыл), да и неплохо добавить возможность добавлять задачи прямо из скрипта.
А ещё (как предложили на хабре) и вправду можно jabber-бота оформить под это дело… :)
В общем, ещё есть, что поковырять, но начало и вправду хорошее!