Introduction
Introduction Statistics Contact Development Disclaimer Help
update man pages and generate project frontpage - ics2txt - convert icalendar .…
git clone git://bitreich.org/ics2txt git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws…
Log
Files
Refs
Tags
README
---
commit cf5ca595cdbe8c8d7d3358e58a43452cc222d7c2
parent 24ae7d2759496b7907cce29f0c26697950453ff5
Author: Josuah Demangeon <[email protected]>
Date: Sun, 20 Jun 2021 19:50:06 +0200
update man pages and generate project frontpage
Diffstat:
M .gitignore | 2 ++
A .site/head.gph | 5 +++++
A .site/head.html | 24 ++++++++++++++++++++++++
A .site/style.css | 39 +++++++++++++++++++++++++++++…
M Makefile | 11 ++++++++---
R README -> README.md | 0
M ics2tsv.1 | 10 +---------
D ics2txt.1 | 106 ------------------------------
A tsv2agenda.1 | 76 +++++++++++++++++++++++++++++…
M tsv2agenda.c | 9 ++++++---
A tsv2ics.1 | 53 ++++++++++++++++++++++++++++++
11 files changed, 214 insertions(+), 121 deletions(-)
---
diff --git a/.gitignore b/.gitignore
@@ -4,3 +4,5 @@
/tsv2ics
/tsv2agenda
/ics2txt-[0-9]*
+/style.css
+/index.*
diff --git a/.site/head.gph b/.site/head.gph
@@ -0,0 +1,5 @@
+ics2txt
+──────────────────────────…
+[9|release v0.1|/ics2txt/ics2txt-VERSION.tar.gz|server|port]
+[h|git clone git://code.z0.is/ics2txt/|URL:git://code.z0.is/ics2txt/||]
+[h|web version|URL:http://code.z0.is/ics2txt/||]
diff --git a/.site/head.html b/.site/head.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<title>ics2txt</title>
+<meta charset="UTF-8"/>
+<meta name="viewport" content="initial-scale=1.0">
+
+<style>
+body { padding:5em 5ch; font-family:sans; max-width:550pt; margin:auto; line-h…
+a { text-decoration:none; }
+h1 { line-height: 3em; }
+h2,h3,h4,h5,h6 { line-height:2em; }
+pre,code { background: #f6f6f6; }
+pre { padding:1em 2ch; line-height:1.1em; overflow:auto; }
+blockquote { padding-left:1.4ch; margin-left:1ch; border-left:solid 1px grey; }
+img { max-width:100%; }
+</style>
+
+<header>
+<a href="//josuah.net/">josuah.net</a>
+<nav style="float:right;">
+<a href="/ics2txt/ics2txt-VERSION.tar.gz">vVERSION</a> -
+<a href="git://code.z0.is/ics2txt/">git</a> -
+<a href="gopher://code.z0.is/1/ics2txt/">gopher</a>
+</nav>
+</header>
diff --git a/.site/style.css b/.site/style.css
@@ -0,0 +1,39 @@
+body {
+ padding: 5em 5ch;
+ font-family: sans;
+ max-width: 550pt;
+ margin: auto;
+ line-height: 1.4em;
+}
+
+a {
+ text-decoration: none;
+}
+
+h1 {
+ line-height: 3em;
+}
+
+h2,h3,h4,h5,h6 {
+ line-height: 2em;
+}
+
+pre, code {
+ background: #f6f6f6;
+}
+
+pre {
+ padding: 1em 2ch;
+ line-height: 1.1em;
+ overflow: auto;
+}
+
+blockquote {
+ padding-left: 1.4ch;
+ margin-left: 1ch;
+ border-left: solid 1px grey;
+}
+
+img {
+ max-width: 100%;
+}
diff --git a/Makefile b/Makefile
@@ -12,7 +12,7 @@ HDR = ical.h base64.h util.h
OBJ = ${SRC:.c=.o}
AWK = tsv2ics.awk
BIN = ics2tree ics2tsv tsv2agenda
-MAN1 = ics2txt.1 ics2tsv.1
+MAN1 = ics2tsv.1 tsv2ics.1 tsv2agenda.1
all: ${BIN}
@@ -28,7 +28,7 @@ ${BIN}: ${OBJ} ${BIN:=.o}
${CC} ${LDFLAGS} -o $@ [email protected] ${OBJ}
clean:
- rm -rf *.o ${BIN} ${AWK:.awk} ${NAME}-${VERSION} *.gz
+ rm -rf *.o ${BIN} ${AWK:.awk=} ${NAME}-${VERSION} *.gz
install: ${BIN} ${AWK:.awk=}
mkdir -p ${DESTDIR}$(PREFIX)/bin
@@ -38,8 +38,13 @@ install: ${BIN} ${AWK:.awk=}
dist: clean
mkdir -p ${NAME}-${VERSION}
- cp -r README Makefile ${AWK} ${MAN1} ${SRC} ${NAME}-${VERSION}
+ cp -r README.md Makefile ${AWK} ${MAN1} ${SRC} ${NAME}-${VERSION}
tar -cf - ${NAME}-${VERSION} | gzip -c >${NAME}-${VERSION}.tar.gz
+site: dist
+ notmarkdown README.md | notmarkdown-html | cat .site/head.html - >inde…
+ notmarkdown README.md | notmarkdown-gph | cat .site/head.gph - >index.…
+ sed -i "s/VERSION/${VERSION}/g" index.*
+
.SUFFIXES: .awk
.PHONY: ${AWK}
diff --git a/README b/README.md
diff --git a/ics2tsv.1 b/ics2tsv.1
@@ -118,15 +118,6 @@ Timezone to use for printing dates, as documented by
.
.Sh EXAMPLES
.
-Convert a calendar from HTTP
-.Pa .ics
-to custom
-.Pa .txt
-sorted by start date:
-.Dl curl "$url.ics" | ics2tsv | sort -n -k 1,1 | tsv2tsv
-.
-.Pp
-.
.Pp
Split an
.ics
@@ -142,6 +133,7 @@ ics2tsv -f CATEGORIES icalendar.ics | awk -F '\et' '{ print…
.Xr cal 1 ,
.Xr calendar 1 ,
.Xr date 1 ,
+.Xr tsv2agenda 1 ,
.Xr tzset 3
.
.
diff --git a/ics2txt.1 b/ics2txt.1
@@ -1,106 +0,0 @@
-.Dd $Mdocdate: Mar 1 2020$
-.Dt ICS2TXT 1
-.Os
-.
-.
-.Sh NAME
-.
-.Nm ics2txt
-.Nd convert ics file to simpler tsv or txt formats
-.
-.
-.Sh SYNOPSIS
-.
-.Nm ics2txt Ar <file.ics >file.txt
-.Pp
-.Nm ics2txt Ar <file.tsv >file.ics
-.Nm ics2tsv Ar <file.ics >file.tsv
-.Nm tsv2tcal Ar <file.tsv >file.txt
-.Nm tcal2tsv Ar <file.txt >file.tsv
-.Nm tsv2ics Ar <file.tsv >file.ics
-.
-.Sh DESCRIPTION
-.
-.Nm
-is set of awk scripts to deal with iCal
-.Pq Pa .ics
-format to publish, display and convert *.ics files, though a simple
-central TSV format.
-.
-.Pp
-They all read from either stdin or the file passed as argument, and
-write to stdout.
-.
-.Pp
-.The
-.Pa file.tsv
-have one line per event, with the first line declaring fields order
-and presence, among:
-.
-.Bl -tag -width xxxxx -offset 1n -compact
-.It Dq beg
-Begining of event (epoch)
-.It Dq end
-End of event (epoch)
-.It Dq cat
-Category
-.It Dq loc
-Location
-.It Dq sum
-Summary
-.It Dq des
-Description
-.El
-.
-.
-.Sh EXAMPLES
-.
-Convert a calendar from HTTP
-.Pa .ics
-to custom
-.Pa .txt
-sorted by start date:
-.Dl curl "$url.ics" | ics2tsv | sort -n -k 1,1 | tsv2txt
-.
-.Pp
-Convert a custom
-.Pa .txt
-format back to an
-.Pa .ics
-file and publish it:
-.Dl tcal2tsv cal.txt | tsv2ics | ssh "www@$host" 'cat >/var/www/cal.ics'
-.
-.Pp
-Split an
-.ics
-file according to the category, saved as
-.Pa .tsv :
-.Bd -literal
-ics2tsv cal.txt | awk -F '\et' '
- NR == 1 { for (i = 1; i <= NF; i++) F[$i] = i; next }
- { print >>($F["cat"]".tsv") }
-\'
-.Ed
-.
-.
-.Sh SEE ALSO
-.
-.Xr cal 1 ,
-.Xr calendar 1 ,
-.Xr date 1 ,
-.Xr sort 1
-.
-.
-.Sh STANDARDS
-.
-.Rs
-.%A Desruisseaux
-.%D September 2009
-.%T Internet Calendaring and Scheduling Core Object Specification (iCalendar)
-.%R RFC 5545
-.Re
-.
-.
-.Sh AUTHORS
-.
-.An Josuah Demangeon Aq Mt [email protected]
diff --git a/tsv2agenda.1 b/tsv2agenda.1
@@ -0,0 +1,76 @@
+.Dd $Mdocdate: Mar 1 2020$
+.Dt TSV2AGENDA 1
+.Os
+.
+.
+.Sh NAME
+.
+.Nm tsv2agenda
+.Nd convert TSV input to a visual agenda roll
+.
+.
+.Sh SYNOPSIS
+.
+.Nm tsv2agenda
+.Op Fl f Ar fromdate
+.Op Fl t Ar todate
+.
+.Sh DESCRIPTION
+.
+.Nm
+is a converter that reads tsv format as produced by
+.Xr ics2tsv 1
+and represents an aligned text agenda from it.
+.
+.Pp
+Every column (after the 4th one) present on the input is displayed on
+the output (if not empty).
+.
+.Bl -tag
+.
+.It Fl f Ar fromdate
+Show only events starting from
+.Ar fromdate .
+By default the current time: showing all future events.
+.
+.It Fl t Ar todate
+Show only events up to
+.Ar todate .
+By default show all future events.
+.
+.El
+.
+.
+.Sh ENVIRONMENT VARIABLES
+.
+.Bl -tag
+.
+.It TZ
+Timezone to use for printing dates, as documented by
+.Xr tzset 3 .
+.
+.El
+.
+.
+.Sh EXAMPLES
+.
+Show the events from a
+.Pa icalendar.ics
+file sorted by start date:
+.Dl curl "$url.ics" | ics2tsv | sort -n -k 1,1 | tsv2agenda
+.
+.Pp
+.
+.
+.Sh SEE ALSO
+.
+.Xr cal 1 ,
+.Xr calendar 1 ,
+.Xr ics2tsv 1 ,
+.Xr tsv2ics 1 ,
+.Xr tzset 3
+.
+.
+.Sh AUTHORS
+.
+.An Josuah Demangeon Aq Mt [email protected]
diff --git a/tsv2agenda.c b/tsv2agenda.c
@@ -119,6 +119,8 @@ print(AgendaCtx *ctx, char **fields)
return;
localtime_r(&t, &end);
+ fputc('\n', stdout);
+
print_header1(&ctx->beg, &beg);
print_row(ctx, fields, i++);
print_header2(&beg, &end);
@@ -142,7 +144,8 @@ tsv_to_agenda(AgendaCtx *ctx, FILE *fp)
char *fields[FIELD_MAX];
ctx->linenum++;
- if (getline(&ln1, &sz1, fp) < 0)
+ getline(&ln1, &sz1, fp);
+ if (ferror(fp))
err(1, "reading stdin: %s", strerror(errno));
if (feof(fp))
err(1, "empty input");
@@ -167,7 +170,8 @@ tsv_to_agenda(AgendaCtx *ctx, FILE *fp)
char *fields[FIELD_MAX];
ctx->linenum++;
- if (getline(&ln2, &sz2, fp) < 0)
+ getline(&ln2, &sz2, fp);
+ if (ferror(fp))
err(1, "reading stdin: %s", strerror(errno));
if (feof(fp))
break;
@@ -177,7 +181,6 @@ tsv_to_agenda(AgendaCtx *ctx, FILE *fp)
err(1, "line %zd: bad number of columns",
ctx->linenum, strerror(errno));
- fputc('\n', stdout);
print(ctx, fields);
}
fputc('\n', stdout);
diff --git a/tsv2ics.1 b/tsv2ics.1
@@ -0,0 +1,53 @@
+.Dd $Mdocdate: Mar 1 2020$
+.Dt TSV2ICS 1
+.Os
+.
+.
+.Sh NAME
+.
+.Nm tsv2ics
+.Nd convert ics file to simpler tsv or txt formats
+.
+.
+.Sh SYNOPSIS
+.
+.Nm tsv2ics Ar <file.ics >file.txt
+.
+.Sh DESCRIPTION
+.
+.Nm
+convert a tab-separated value input as produced by
+.Xr ics2tsv 1
+and produce iCalendar formatted output.
+The dates are formatted in UTC timestamps.
+.
+.
+.Sh EXAMPLES
+.
+Only keep the dates and
+.Dq SUMMARY
+from an iCalendar:
+.Dl ics2tsv -f SUMMARY icalendar.ics | tsv2ics
+.
+.
+.Sh SEE ALSO
+.
+.Xr cal 1 ,
+.Xr calendar 1 ,
+.Xr ics2tsv 1 ,
+.Xr tsv2agenda 1
+.
+.
+.Sh STANDARDS
+.
+.Rs
+.%A Desruisseaux
+.%D September 2009
+.%T Internet Calendaring and Scheduling Core Object Specification (iCalendar)
+.%R RFC 5545
+.Re
+.
+.
+.Sh AUTHORS
+.
+.An Josuah Demangeon Aq Mt [email protected]
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.