scripts/hores.awk
author llbatlle@comanegra
Fri, 01 Apr 2011 10:06:32 +0200
changeset 21 5dababf1cb7d
parent 19 39a78ed9bf03
permissions -rwxr-xr-x
Milloro l'escript que compta hores.

#!/home/llbatlle/.nix-profile/bin/awk -f
#
# Entrada: tt -t
#
# Distingeix 'fora' i 'dinar' com a coses que no són de la feina

BEGIN {
    fora="fora";
    ignora="dinar";
    FS=" "
}

{
    daystring = substr($3, 2);
    work = $2;

    if (work == fora || substr(work,1,5) == "fora,")
    {
        if (work == "fora,malalt")
            accumtime = 8*3600

        hores = int(accumtime / 3600);
        minuts = int((accumtime  - hores*3600) / 60);
        segons = int(accumtime  - hores*3600 - minuts*60);

        plegant = substr($4, 1, length($4)-1);

        split(daystring, diaplegar, "-");
        split(plegant, horaplegar, ":");

        stamp = mktime(diaplegar[1] " " diaplegar[2] " " diaplegar[3] " " horaplegar[1] \
            " " horaplegar[2] " " horaplegar[3] " CEST");

        diasetmana = strftime("%A", stamp)

        printf "%-10s %s: %02i:%02i:%02i (plegant a les %s)\n",
            diasetmana, daystring, hores, minuts, segons, plegant;

        accumsetmana += accumtime;
        if (diasetmana == "divendres")
        {
            hores = int(accumsetmana / 3600);
            minuts = int((accumsetmana  - hores*3600) / 60);
            segons = int(accumsetmana  - hores*3600 - minuts*60);
            printf "- Total setmana: %02i:%02i:%02i\n",
                hores, minuts, segons

            accumsetmana = 0;
        }


        accumtime = 0;
    }
    else
    {
        if (work != ignora)
        {
            split($1, time, ":");

            accumtime += time[1]*3600 + time[2]*60 + time[3];
        }
    }
}