|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When running index.sh on OpenBSD, the following error happens for
each item in the news/ directory (output is from "bash -x"):
+ touch -d '4 Jun 2017' news/andrew-robbins-new-maintainer.md
touch: out of range or illegal time specification: YYYY-MM-DDThh:mm:ss[.frac][Z]
This is because OpenBSD's touch(1) requires that the "d" flag's argument
be in ISO 8601 format, that is, "YYYY-MM-DDThh:mm:ss[.frac][Z]". This
could have been dealt with by converting the article date (determined
by "sed -n 3p $f | sed -e 's/^..//g'") to ISO 8601 format, then passing
the date to touch(1). That would have required even more code, so was
discarded as a possible solution.
Instead, this has been solved by prepending the ISO 8601 date to the names
of all news items. This has the benefit of avoiding the need for touch(1)
altogether, as a lexicographic sorting of ISO 8601 dates is the same as
a date-based sorting. In other words, "ls news/*.md" will give a list
of articles sorted by date, which we can then append to news/index.md in
that order.
One downside of this solution is that it introduces the possibility that
the date in the filename (ISO 8601 format) of a news article does not
match the date inside the article (e.g., 1 May 2017). I have not dealt
with this as it remains to be seen whether it will be a problem in
practice.
|