URI: 
       ttxt2ics - ics2txt - convert icalendar .ics file to plain text
  HTML git clone git://bitreich.org/ics2txt git://hg6vgqziawt5s4dj.onion/ics2txt
   DIR Log
   DIR Files
   DIR Refs
   DIR Tags
   DIR README
       ---
       ttxt2ics (2111B)
       ---
            1 #!/usr/bin/awk -f
            2 
            3 function prompt(msg)
            4 {
            5         if (TTY)
            6                 printf("%s", msg) >"/dev/stderr";
            7         if (!getline str)
            8                 exit(1);
            9         return str;
           10 }
           11 
           12 function parse_date(str, tm)
           13 {
           14         if (length(str) == 5) {
           15                 "date +%Y/%m/%d" | getline date
           16                 str = date " " str ;
           17                 close("date +%Y/%m/%d");
           18         }
           19 
           20         if (length(str) != 16) {
           21                 print("invalid date length") >"/dev/stderr";
           22                 return -1;
           23         }
           24 
           25         tm["yrs"] = substr(str, 1, 4);
           26         if (! match(tm["yrs"], "^[0-9]+$")) {
           27                 print("invalid year: " tm["yrs"]) >"/dev/stderr";
           28                 return -1;
           29         }
           30 
           31         tm["mth"] = substr(str, 6, 2);
           32         if (! match(tm["mth"], "^[0-1][0-9]$")) {
           33                 print("invalid month: " tm["mth"]) >"/dev/stderr";
           34                 return -1;
           35         }
           36 
           37         tm["day"] = substr(str, 9, 2);
           38         if (! match(tm["day"], "^[0-3][0-9]$")) {
           39                 print("invalid day: " tm["day"]) >"/dev/stderr";
           40                 return -1;
           41         }
           42 
           43         tm["hrs"] = substr(str, 12, 2);
           44         if (! match(tm["hrs"], "^[0-2][0-9]$")) {
           45                 print("invalid hours: " tm["hrs"]) >"/dev/stderr";
           46                 return -1;
           47         }
           48 
           49         tm["min"] = substr(str, 15, 2);
           50         if (! match(tm["min"], "^[0-6][0-9]$")) {
           51                 print("invalid minutes: " tm["min"]) >"/dev/stderr";
           52                 return -1;
           53         }
           54 
           55         return 0;
           56 }
           57 
           58 BEGIN {
           59         TTY = !system("tty >/dev/null");
           60 
           61         if (TTY) {
           62                 "date +%Y" | getline yrs
           63                 close("date +%Y");
           64                 system("cal " yrs ">/dev/stderr");
           65                 system("date >/dev/stderr");
           66                 system("date +'%Y/%m/%d %H:%M' >/dev/stderr");
           67                 print("") >"/dev/stderr";
           68         }
           69 
           70         do beg = prompt("Start [YYYY/MM/DD HH:MM] or [HH:MM] for today:    ");
           71         while (parse_date(beg, tm_beg) == -1);
           72 
           73         do end = prompt("End   [YYYY/MM/DD HH:MM] or [HH:MM] for same day: ");
           74         while (parse_date(end, tm_end) == -1);
           75 
           76         sum = prompt("Summary:     ");
           77         cat = prompt("Category:    ");
           78         loc = prompt("Location:    ");
           79         des = prompt("Description: ");
           80 
           81         print("BEGIN:VEVENT");
           82         print("DTSTART:" \
           83                 tm_beg["yrs"] tm_beg["mth"] tm_beg["day"] "T" \
           84                 tm_beg["hrs"] tm_beg["min"] "00");
           85         print("DTEND:" \
           86                 tm_end["yrs"] tm_end["mth"] tm_end["day"] "T" \
           87                 tm_end["hrs"] tm_end["min"] "00");
           88         if (cat) print("CATEGORIES:"        cat);
           89         if (sum) print("SUMMARY:"        sum);
           90         if (des) print("DESCRIPTION:"        des);
           91         if (loc) print("LOCATION:"        loc);
           92         print("END:VEVENT");
           93 }