gemfeed.awk §

#!/usr/bin/awk -f
# Create an gemfeed from a list of plain text files.
# First line of a post is title
# Second line is date formatted %Y-%m-%dT%TZ


BEGIN {
	if ( ARGC != 2 ) { usage() } # check we have ARGV[1]

	# if the user didn't specify variables, use defaults
	if ( gemfeedtitle == "" ) { gemfeedtitle = "My gemfeed"}

	# command to list all posts. ARGV[1] is replaced by directory given as arg
	if ( cmd == "" ) {
		cmd = "find " ARGV[1] " -name '*.txt' -maxdepth 1 -a ! -name '_*'  | sort -r"
	}

	printf "# %s\n\n", gemfeedtitle

	# let's go
	n = 0

	while (( cmd | getline post ) == 1 ) {

		# get first line : title
		if ((getline title < post) != 1) { continue }
		# remove leading "#" if any
		sub("^# +?", "", title)
		# get second line : pubdate
		if ((getline pubdate < post) != 1) { continue }
		date = substr(pubdate, 1, 10)

		link = "/" post

		printf "=> %s %s  —  %s\n", link, date, title
		n++
	}
	close(cmd)
}

END {
	print "=> ../ "
}

function usage() {
	printf "usage : awk -f atom.awk -v gemfeedtitle='my feed' posts/"
	exit 1
}