From 384e86dcea4073485c8dd02dbc73eda0e4bb9144 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 5 Jun 2010 12:48:12 +1200 Subject: Move scripts to a subdirectory. Install everything in there. This makes it harder to forget to update liw-automation.install when a new script is added. --- build-journal | 6 --- debian/changelog | 8 ++++ debian/liw-automation.install | 8 +--- g | 3 -- journal-note | 46 ------------------ liw-vm-clone | 87 ----------------------------------- missing-journal-person-create | 28 ----------- missing-journal-tag-create | 20 -------- scripts/build-journal | 6 +++ scripts/g | 3 ++ scripts/journal-note | 46 ++++++++++++++++++ scripts/liw-vm-clone | 87 +++++++++++++++++++++++++++++++++++ scripts/missing-journal-person-create | 28 +++++++++++ scripts/missing-journal-tag-create | 20 ++++++++ scripts/sync-to-pieni | 21 +++++++++ scripts/world-dates | 27 +++++++++++ sync-to-pieni | 21 --------- world-dates | 27 ----------- 18 files changed, 247 insertions(+), 245 deletions(-) delete mode 100644 build-journal delete mode 100755 g delete mode 100755 journal-note delete mode 100755 liw-vm-clone delete mode 100755 missing-journal-person-create delete mode 100755 missing-journal-tag-create create mode 100644 scripts/build-journal create mode 100755 scripts/g create mode 100755 scripts/journal-note create mode 100755 scripts/liw-vm-clone create mode 100755 scripts/missing-journal-person-create create mode 100755 scripts/missing-journal-tag-create create mode 100755 scripts/sync-to-pieni create mode 100755 scripts/world-dates delete mode 100755 sync-to-pieni delete mode 100755 world-dates diff --git a/build-journal b/build-journal deleted file mode 100644 index cf12f3f..0000000 --- a/build-journal +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -set -e - -ikiwiki --setup $HOME/Journal/ikiwiki.setup - diff --git a/debian/changelog b/debian/changelog index 9729bc7..4118072 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +liw-automation (8.0.2) squeeze; urgency=low + + * Move scripts to a subdirectory. Install everything in there. + This makes it harder to forget to update liw-automation.install + when a new script is added. + + -- Lars Wirzenius Sat, 05 Jun 2010 12:47:37 +1200 + liw-automation (8.0.1) squeeze; urgency=low * Add liw-vm-clone. diff --git a/debian/liw-automation.install b/debian/liw-automation.install index 3a0ed0e..213e93f 100644 --- a/debian/liw-automation.install +++ b/debian/liw-automation.install @@ -1,7 +1 @@ -sync-to-pieni usr/bin -g usr/bin -build-journal usr/bin -journal-note usr/bin -world-dates usr/bin -missing-journal-person-create usr/bin -missing-journal-tag-create usr/bin +scripts/* usr/bin diff --git a/g b/g deleted file mode 100755 index 73a5f63..0000000 --- a/g +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -gedit --new-window "$@" diff --git a/journal-note b/journal-note deleted file mode 100755 index f91a07b..0000000 --- a/journal-note +++ /dev/null @@ -1,46 +0,0 @@ -#!/bin/sh - -set -e - -if [ "$#" != 1 ] -then - echo "Usage: $0 title" - exit 1 -fi - -title="$1" -temp="$(mktemp --tmpdir=$HOME/Journal)" - -cat << eof > "$temp" -[[!meta title="$title"]] -[[!tag ]] -[[!meta date="$(date +%Y-%m-%dT%H:%M)"]] - -eof - -checksum="$(mktemp)" -md5sum "$temp" > "$checksum" -vi "$temp" -if md5sum --status -c "$checksum" -then - echo "No change to note, aborting." - rm "$temp" "$checksum" - exit 1 -fi - -cat << eof >> "$temp" - -[[!meta done="$(date +%Y-%m-%dT%H:%M)"]] -eof - -cd "$HOME/Journal/src" -filename="notes/$(date +%Y-%m-%d-%H:%M.mdwn)" -if [ -e "$filename" ] -then - filename="notes/$(date +%Y-%m-%d-%H:%M:%S.mdwn)" -fi -cp "$temp" "$filename" -bzr add "$filename" -bzr commit -m "New note" "$filename" -ikiwiki --setup ../ikiwiki.setup --refresh -rm "$temp" "$checksum" diff --git a/liw-vm-clone b/liw-vm-clone deleted file mode 100755 index fc5b40d..0000000 --- a/liw-vm-clone +++ /dev/null @@ -1,87 +0,0 @@ -#!/bin/sh - -set -e - -die() -{ - printf -- "%s\n" "$*" 1>&2 - exit 1 -} - - -clone() -{ - local oldname="$1" - local newname="$2" - local img="$3" - - if [ -e "$img" ] - then - echo "Image file $img already exists. Skipping clone." - else - echo "Cloning $oldname to $newname" - virt-clone --connect qemu:///system -o "$oldname" -n "$newname" \ - -f "$img" - chmod 770 "$img" - fi -} - - -fixup() -{ - local oldname="$1" - local mountpt="$2" - - if grep -x -e "$oldname" "$mountpt/etc/hostname" > /dev/null - then - echo "fixing up /etc/hostname on $oldname" - sed -i "s/$oldname/$newname/g" "$mountpt/etc/hostname" - - echo "fixing up /etc/hosts on $oldname" - sed -i "s/$oldname/$newname/g" "$mountpt/etc/hosts" - - echo "removing udev's persistent net rule" - rm -f "$mountpt/etc/udev/rules.d/70-persistent-net.rules" - else - echo "EEEK! /etc/hostname does not match $oldname" - echo "Not touching this filesystem." - echo "/etc/hostname is:" - cat $mountpt/etc/hostname - fi -} - - -[ $# = 2 ] || die "Usage: $0 oldname newname" -oldname="$1" -newname="$2" -img="/srv/vm/$newname.img" - -clone "$oldname" "$newname" "$img" - -mountpt=$(mktemp -d) -tempfile=$(mktemp) -kpartx -av "$img" > "$tempfile" -sleep 2 # FIXME: for some reasons things are not immediate - -sed 's/.*(\(.*\)).*/\1/' "$tempfile" | -while read pair -do - dev="/dev/block/$pair" - if pvdisplay "$dev" > /dev/null 2>&1 - then - vg=$(pvdisplay "$dev" | awk '/^ VG Name/ { print $NF }') - vgchange -ay "$vg" > /dev/null - for lv in "/dev/$vg"/* - do - if mount "$lv" "$mountpt" 2> /dev/null && [ -e "$mountpt/etc" ] - then - fixup "$oldname" "$mountpt" - umount "$mountpt" - fi - done - vgchange -an "$vg" > /dev/null - fi -done -kpartx -d "$img" > /dev/null -rm -f "$tempfile" -rmdir "$mountpt" diff --git a/missing-journal-person-create b/missing-journal-person-create deleted file mode 100755 index 9468cfa..0000000 --- a/missing-journal-person-create +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; - -open(INPUT, "<", "/srv/http/journal/index.html"); -while () { - if (/^
  • .*page=people%2F([^&]*).*\n$/) { - s//$1/; - my $basename = $_; - my @names = split /\./, $_; - my @Names = map ucfirst, @names; - my $family = shift @Names; - my $given = join ' ', @Names; - my $realname = "$family, $given"; - my $pathname = "/home/liw/Journal/src/people/$basename.mdwn"; - if (!-e $pathname) { - print "$realname\n"; - open(OUTPUT, ">", $pathname); - print OUTPUT "[[!meta title=\"$realname\"]]\n\n"; - print OUTPUT "[[!inline feeds=no "; - print OUTPUT "pages=\"notes/* and !notes/*/* and "; - print OUTPUT "link(people/$basename)\"]]\n"; - close(OUTPUT); - } - } -} - diff --git a/missing-journal-tag-create b/missing-journal-tag-create deleted file mode 100755 index 7e7d3d1..0000000 --- a/missing-journal-tag-create +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; - -open(INPUT, "<", "/srv/http/journal/index.html"); -while () { - if (/^
  • .*page=%2Ftag%2F([^&]*)&from=notes%2F.*\n$/) { - s//$1/; - my $tag = $_; - my $pathname = "/home/liw/Journal/src/tag/$tag.mdwn"; - if (!-e $pathname) { - print "$tag\n"; - open(OUTPUT, ">", $pathname); - print OUTPUT "[[!inline archive=yes pages=\"link(tag/$tag)\"]]\n"; - close(OUTPUT); - } - } -} - diff --git a/scripts/build-journal b/scripts/build-journal new file mode 100644 index 0000000..cf12f3f --- /dev/null +++ b/scripts/build-journal @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +ikiwiki --setup $HOME/Journal/ikiwiki.setup + diff --git a/scripts/g b/scripts/g new file mode 100755 index 0000000..73a5f63 --- /dev/null +++ b/scripts/g @@ -0,0 +1,3 @@ +#!/bin/sh + +gedit --new-window "$@" diff --git a/scripts/journal-note b/scripts/journal-note new file mode 100755 index 0000000..f91a07b --- /dev/null +++ b/scripts/journal-note @@ -0,0 +1,46 @@ +#!/bin/sh + +set -e + +if [ "$#" != 1 ] +then + echo "Usage: $0 title" + exit 1 +fi + +title="$1" +temp="$(mktemp --tmpdir=$HOME/Journal)" + +cat << eof > "$temp" +[[!meta title="$title"]] +[[!tag ]] +[[!meta date="$(date +%Y-%m-%dT%H:%M)"]] + +eof + +checksum="$(mktemp)" +md5sum "$temp" > "$checksum" +vi "$temp" +if md5sum --status -c "$checksum" +then + echo "No change to note, aborting." + rm "$temp" "$checksum" + exit 1 +fi + +cat << eof >> "$temp" + +[[!meta done="$(date +%Y-%m-%dT%H:%M)"]] +eof + +cd "$HOME/Journal/src" +filename="notes/$(date +%Y-%m-%d-%H:%M.mdwn)" +if [ -e "$filename" ] +then + filename="notes/$(date +%Y-%m-%d-%H:%M:%S.mdwn)" +fi +cp "$temp" "$filename" +bzr add "$filename" +bzr commit -m "New note" "$filename" +ikiwiki --setup ../ikiwiki.setup --refresh +rm "$temp" "$checksum" diff --git a/scripts/liw-vm-clone b/scripts/liw-vm-clone new file mode 100755 index 0000000..fc5b40d --- /dev/null +++ b/scripts/liw-vm-clone @@ -0,0 +1,87 @@ +#!/bin/sh + +set -e + +die() +{ + printf -- "%s\n" "$*" 1>&2 + exit 1 +} + + +clone() +{ + local oldname="$1" + local newname="$2" + local img="$3" + + if [ -e "$img" ] + then + echo "Image file $img already exists. Skipping clone." + else + echo "Cloning $oldname to $newname" + virt-clone --connect qemu:///system -o "$oldname" -n "$newname" \ + -f "$img" + chmod 770 "$img" + fi +} + + +fixup() +{ + local oldname="$1" + local mountpt="$2" + + if grep -x -e "$oldname" "$mountpt/etc/hostname" > /dev/null + then + echo "fixing up /etc/hostname on $oldname" + sed -i "s/$oldname/$newname/g" "$mountpt/etc/hostname" + + echo "fixing up /etc/hosts on $oldname" + sed -i "s/$oldname/$newname/g" "$mountpt/etc/hosts" + + echo "removing udev's persistent net rule" + rm -f "$mountpt/etc/udev/rules.d/70-persistent-net.rules" + else + echo "EEEK! /etc/hostname does not match $oldname" + echo "Not touching this filesystem." + echo "/etc/hostname is:" + cat $mountpt/etc/hostname + fi +} + + +[ $# = 2 ] || die "Usage: $0 oldname newname" +oldname="$1" +newname="$2" +img="/srv/vm/$newname.img" + +clone "$oldname" "$newname" "$img" + +mountpt=$(mktemp -d) +tempfile=$(mktemp) +kpartx -av "$img" > "$tempfile" +sleep 2 # FIXME: for some reasons things are not immediate + +sed 's/.*(\(.*\)).*/\1/' "$tempfile" | +while read pair +do + dev="/dev/block/$pair" + if pvdisplay "$dev" > /dev/null 2>&1 + then + vg=$(pvdisplay "$dev" | awk '/^ VG Name/ { print $NF }') + vgchange -ay "$vg" > /dev/null + for lv in "/dev/$vg"/* + do + if mount "$lv" "$mountpt" 2> /dev/null && [ -e "$mountpt/etc" ] + then + fixup "$oldname" "$mountpt" + umount "$mountpt" + fi + done + vgchange -an "$vg" > /dev/null + fi +done +kpartx -d "$img" > /dev/null +rm -f "$tempfile" +rmdir "$mountpt" diff --git a/scripts/missing-journal-person-create b/scripts/missing-journal-person-create new file mode 100755 index 0000000..9468cfa --- /dev/null +++ b/scripts/missing-journal-person-create @@ -0,0 +1,28 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +open(INPUT, "<", "/srv/http/journal/index.html"); +while () { + if (/^
  • .*page=people%2F([^&]*).*\n$/) { + s//$1/; + my $basename = $_; + my @names = split /\./, $_; + my @Names = map ucfirst, @names; + my $family = shift @Names; + my $given = join ' ', @Names; + my $realname = "$family, $given"; + my $pathname = "/home/liw/Journal/src/people/$basename.mdwn"; + if (!-e $pathname) { + print "$realname\n"; + open(OUTPUT, ">", $pathname); + print OUTPUT "[[!meta title=\"$realname\"]]\n\n"; + print OUTPUT "[[!inline feeds=no "; + print OUTPUT "pages=\"notes/* and !notes/*/* and "; + print OUTPUT "link(people/$basename)\"]]\n"; + close(OUTPUT); + } + } +} + diff --git a/scripts/missing-journal-tag-create b/scripts/missing-journal-tag-create new file mode 100755 index 0000000..7e7d3d1 --- /dev/null +++ b/scripts/missing-journal-tag-create @@ -0,0 +1,20 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +open(INPUT, "<", "/srv/http/journal/index.html"); +while () { + if (/^
  • .*page=%2Ftag%2F([^&]*)&from=notes%2F.*\n$/) { + s//$1/; + my $tag = $_; + my $pathname = "/home/liw/Journal/src/tag/$tag.mdwn"; + if (!-e $pathname) { + print "$tag\n"; + open(OUTPUT, ">", $pathname); + print OUTPUT "[[!inline archive=yes pages=\"link(tag/$tag)\"]]\n"; + close(OUTPUT); + } + } +} + diff --git a/scripts/sync-to-pieni b/scripts/sync-to-pieni new file mode 100755 index 0000000..84facfa --- /dev/null +++ b/scripts/sync-to-pieni @@ -0,0 +1,21 @@ +#!/bin/sh + +set -e + +for dir in $HOME/GTD $HOME/Journal/src $HOME/checklists $HOME/Templates +do + echo "$dir" + ( + set -e + cd "$dir" + if ! bzr diff > /dev/null + then + bzr commit --quiet -m 'commit from sync-to-pieni' + fi + bzr merge --pull + bzr push + ) + echo +done + + diff --git a/scripts/world-dates b/scripts/world-dates new file mode 100755 index 0000000..c6793e6 --- /dev/null +++ b/scripts/world-dates @@ -0,0 +1,27 @@ +#!/bin/sh + +timezones=" + US/Pacific + Europe/London + UTC + Europe/Helsinki + Asia/Tokyo + Australia/Brisbane + Pacific/Auckland + " + +w=0 +for tz in $timezones +do + len=$(echo -n $tz | wc -c) + if [ $len -gt $w ] + then + w=$len + fi +done + +for tz in $timezones +do + printf "%${w}s -- %s\n" $tz \ + "$(LC_ALL=C TZ=$tz date +'%a %Y-%m-%d %H:%M')" +done diff --git a/sync-to-pieni b/sync-to-pieni deleted file mode 100755 index 84facfa..0000000 --- a/sync-to-pieni +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh - -set -e - -for dir in $HOME/GTD $HOME/Journal/src $HOME/checklists $HOME/Templates -do - echo "$dir" - ( - set -e - cd "$dir" - if ! bzr diff > /dev/null - then - bzr commit --quiet -m 'commit from sync-to-pieni' - fi - bzr merge --pull - bzr push - ) - echo -done - - diff --git a/world-dates b/world-dates deleted file mode 100755 index c6793e6..0000000 --- a/world-dates +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -timezones=" - US/Pacific - Europe/London - UTC - Europe/Helsinki - Asia/Tokyo - Australia/Brisbane - Pacific/Auckland - " - -w=0 -for tz in $timezones -do - len=$(echo -n $tz | wc -c) - if [ $len -gt $w ] - then - w=$len - fi -done - -for tz in $timezones -do - printf "%${w}s -- %s\n" $tz \ - "$(LC_ALL=C TZ=$tz date +'%a %Y-%m-%d %H:%M')" -done -- cgit v1.2.1