пятница, 16 декабря 2011 г.

eix synced ago in conky

Эта заметка касается пользователей eix-sync и в особенности любителей синхронизировать portage по git (с calculate'овским зеркалом).

Очень удобно, на мой взгляд, иметь в коньках данные о дате последней синхронизации дерева портеджей. Причём, круто, если там сразу написано, что оно было синхронизировано 3 дня 15 ч 47 минут назад, а не, к примеру, 9 декабря в 17:30. То есть, вот так (это правый верхний угол экрана):

Альбом: openbox + conky + dmenu

Для этого наваял вот такой скрипт (разумно, имхо, для скриптов conky создать отдельный каталог и туда его и положить):


~/.conky/portage-lastsync.sh :
#!/bin/sh

DATE=$(date -r /var/cache/eix +%s)

let SECONDS=`date +%s`-$DATE
let DAYS=$SECONDS/86400

let SECONDS-=$DAYS*86400
let HOURS=$SECONDS/3600

let SECONDS-=$HOURS*3600
let MINUTES=$SECONDS/60

[ $HOURS -lt 10 ] && HOURS="0$HOURS"
[ $MINUTES -lt 10 ] && MINUTES="0$MINUTES"

echo "$DAYS дн. $HOURS:$MINUTES назад"

И сделать его исполняемым:
chmod +x  ~/.conky/portage-lastsync.sh


В конфиг коньков (.conkyrc, если conky не указан иной файл с опцией -c) надо добваить такую строчку:
${execi 600 ~/.conky/portage-lastsync.sh}


600 - это период выполнения этого скрипта коньками в секундах. Можно указать иное.


Если хочется, чтобы в коньках было не сколько _прошло времени_ с момента последней синхронизации, а _когда_ она была, то можно просто сделать так:
DATE=$(date -r /var/cache/eix +"%d %b %H:%M")
echo $DATE


Судить по /var/cache/eix, конечно, не идеально. Если выполнить eix-update, но не синхронизировать дерево, то скрипт покажет время с выполнения eix-update, а не время с синхронизации.
Но судить по файлу /usr/portage/metadata/timestamp.chk вообще не получится. Если, например, вы выполнили eix-sync более одного раза за период времени, в который само зеракло _не_ обновлялось, то этот файл остаётся без вообще каких-либо изменений. В этом случае, если судить по его содержимому или времени его модификации, мы будем иметь время самого первого за период времени выполнения eix-sync. Таким образом, по забывчивости и из-за некорректного вывода скрипта можно затрахать зеркало бессмысленными синхронизациями. :)



Вот. Вроде всё нопесал. Чо хотел. Удачи вам.