UUGRN Stammtisch.sh: Unterschied zwischen den Versionen

Aus UUGRN
(Neuer Termin und Neue Location für den UNIX Stammtisch in Mannheim, neues Script)
K (aktuelles script)
Zeile 1: Zeile 1:
Dieses Script ermittelt die [[UUGRN:Stammtisch|Stammtischtermine]] in Mannheim gibt passenden SQL-Code für die Kalender-Tabelle aus.  
Dieses Script ermittelt die [[UUGRN:Stammtisch|Stammtischtermine]] und [[UUGRN:FIXME Treffen]] und gibt passenden SQL-Code für die Kalender-Tabelle aus.  


== Funktionsweise ==
== Script ==
; gegeben:
<code><pre>
Der Stammtisch findet immer am 2. Mittwoch im Monat um 20 Uhr in der Tomate in Mannheim (ORT_ID=7) statt.
#! /bin/sh
; Bedingungen:
Der 2. Wochentag eines Monats ist immer zwischen dem 8. und dem 14., der Mittwoch ist Wochentag Nummer 3.


; Code:
YEAR=${1:-$(date +%Y)}
Die beiden for-Schleifen durchlaufen für alle Monate alle Tage von 8 bis 14. Dabei wird für ein gegebenes Jahr ein Datum im ISO-Format erzeugt und an GNU-date übergeben.
test "${YEAR}" -gt 2000 -a "${YEAR}" -lt 2038 || YEAR="$(date +%Y)"
GNU-date erzeugt das Ausgabeformat
Wochentag|ISO-Datum|UNIX-Timestamp


Mit grep werden alle Zeilen ausgefischt, die mit 3 beginnen, das ist jeweils der Mittwoch. Alle anderen Zeilen werden verworfen.
for MONTH in $(gseq -w 01 12); do for DAY in $(gseq -w 01 31);  do
Die folgende while-Schleife erzeugt den SQL-Output für die Kalender-Tabelle.
    gdate "+%u|%d|%F" --date "${YEAR}-${MONTH}-${DAY}" 2>/dev/null
done; done |
while IFS='|' read DOW DOM DATE; do
  case ${DOM} in
    01|02|03|04|05|06|07) NIM=1 ;;
    08|09|10|11|12|13|14) NIM=2 ;;
    15|16|17|18|19|20|21) NIM=3 ;;
    22|23|24|25|26|27|28) NIM=4 ;;
    29|30|31) NIM=5 ;;
    *) NIM="0" ;;
  esac


Dabei wird das ISO-Datum hier nicht verwendet, es dient lediglich der Kontrolle. Sollte eine Tabelle gefüllt werden, die statt eines Integer-Wertes (Timestamp) ein echtes Datum erwartet, kann dieses hier verwendet werden.
  SQL="insert into KALENDER set ID=0"
  SQL2=""
  case ${NIM}-${DOW} in
    1-5) # 1. Freitag
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/'"
      ;;
    3-1) # 3. Montag
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/'"
      ;;
  esac


  if [ -n "${SQL2}" ]; then
    echo "${SQL}${SQL2};"
  fi
done
</pre></code>


== Bourne-Shell-Code ==
=== Variablen ===
J=2009
;YEAR,MONTH,DAY: Iteriert über alle Kalendertage des angegebenen Jahres
for M in 1 2 3 4 5 6 7 8 9 10 11 12; do
;DOW: day-of-week [1..7], 1=Montag 
  for T in 8 9 10 11 12 13 14 ; do
;DOM: day-of-month [1..31]
    gdate "+%w|%Y-%m-%d %H:%M:%S|%s" --date "$J-$M-$T 20:00:00"
;NIM: Nth-in-month [1..5]
  done
done |
grep ^3 |
while IFS='|' read WT DAT TS; do
  echo "insert into KALENDER set ID=0, DATUM=$TS, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';"
done




== Ausgabe für 2009 ==
== Aufruf / Ausgabe ==
insert into KALENDER set ID=0, DATUM=1231959600, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
<code><pre>
insert into KALENDER set ID=0, DATUM=1234378800, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
$ bin/uugrn_stammtischkalender.sh 2011
insert into KALENDER set ID=0, DATUM=1236798000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-01-07 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1239213600, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-01-17 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1242237600, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-02-04 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1244656800, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-02-21 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1247076000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-03-04 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1250100000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-03-21 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1252519200, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-04-01 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1255543200, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-04-18 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1257966000, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-05-06 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM=1260385200, ORT_ID=7,TEXT='UNIX Stammtisch',EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-05-16 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
 
insert into KALENDER set ID=0, DATUM='2011-06-03 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-06-20 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-07-01 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-07-18 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-08-05 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-08-15 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-09-02 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-09-19 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-10-07 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-10-17 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-11-04 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-11-21 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-12-02 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-12-19 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
</pre></code>


[[Kategorie:Script]]
[[Kategorie:Script]]
[[Kategorie:Verein]]
[[Kategorie:Verein]]

Version vom 18. Dezember 2010, 11:39 Uhr

Dieses Script ermittelt die Stammtischtermine und UUGRN:FIXME Treffen und gibt passenden SQL-Code für die Kalender-Tabelle aus.

Script

#! /bin/sh

YEAR=${1:-$(date +%Y)}
test "${YEAR}" -gt 2000 -a "${YEAR}" -lt 2038 || YEAR="$(date +%Y)"

for MONTH in $(gseq -w 01 12); do for DAY in $(gseq -w 01 31);  do
    gdate "+%u|%d|%F" --date "${YEAR}-${MONTH}-${DAY}" 2>/dev/null
done; done |
while IFS='|' read DOW DOM DATE; do
  case ${DOM} in
    01|02|03|04|05|06|07) NIM=1 ;;
    08|09|10|11|12|13|14) NIM=2 ;;
    15|16|17|18|19|20|21) NIM=3 ;;
    22|23|24|25|26|27|28) NIM=4 ;;
    29|30|31) NIM=5 ;;
    *) NIM="0" ;;
  esac

  SQL="insert into KALENDER set ID=0"
  SQL2=""
  case ${NIM}-${DOW} in
    1-5) # 1. Freitag
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/'"
      ;;
    3-1) # 3. Montag
      SQL2=", DATUM='${DATE} 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/'"
      ;;
  esac

  if [ -n "${SQL2}" ]; then
    echo "${SQL}${SQL2};"
  fi
done

Variablen

YEAR,MONTH,DAY
Iteriert über alle Kalendertage des angegebenen Jahres
DOW
day-of-week [1..7], 1=Montag
DOM
day-of-month [1..31]
NIM
Nth-in-month [1..5]


Aufruf / Ausgabe

$ bin/uugrn_stammtischkalender.sh 2011
insert into KALENDER set ID=0, DATUM='2011-01-07 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-01-17 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-02-04 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-02-21 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-03-04 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-03-21 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-04-01 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-04-18 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-05-06 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-05-16 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-06-03 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-06-20 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-07-01 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-07-18 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-08-05 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-08-15 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-09-02 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-09-19 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-10-07 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-10-17 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-11-04 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-11-21 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-12-02 20:00:00', ORT_ID=11, TEXT='FIXME', EVENT_LINK='http://fixme.uugrn.org/';
insert into KALENDER set ID=0, DATUM='2011-12-19 20:00:00', ORT_ID=12, TEXT='UnixStammtisch', EVENT_LINK='http://stammtisch.uugrn.org/';