Plog has recently seen a major overhaul, and I consider it finally usable for others.
I will try to add some explanations to aid in understanding the whole system.
The following examples will probably be converted into part of
in the Plog suite. As soon as I will find sufficient time... `;-)
Please also have a look at the previous blog entry, introducing Plog!
catfor pure plaintext mode
I use the plog suite now regularly for two different setups from one single installation.
One project consists in a personal newsletter going to a
handful of addresses. In its configuration (
stored in the project directory
the values for the publication directories
pubdirtext are set to
'' so that they get ignored, and
therefore no files are written into any publication
A cronjob runs
pubnext.sh Newsletter twice a week,
resulting in two newsletters per week processed and sent.
As long as I am working on one, I keep the word
the beginning of its first line.
Newsletter looks like this:
A/ .plog.rc _pubnext.html _pubnext.log _pubnext.txt ad.txt t150110-news.md t150112-test.md
A is the archive directory where processed posts are saved.
ad.txt contains the addresses of the newsletter recipients,
and looks like
# addresses email@example.com firstname.lastname@example.org
_pubnext.* files are for internal use by
_pubnext.log contains the detailed log.
The contents of
.plog.rc look like this:
pubtext='' lentext=24 indtext='gophermap' indtexthead='' pubhtml='' lenhtml=12 indhtml='list.html' indhtmltitle="" rsshtml='rss.xml' rsstitle='feed' rssdesc='recent entries' baselink='http://example.com' subject='Newsletter:' fprefix='t' draft='DRAFT' arch='Archiv' htmlhead='<HTML><BODY>' htmlfoot="</BODY><!-- generated by $myself --></HTML>" logfile='_pubnext.log' convert0="$mydir/convchars.sh" convert1="$mydir/mrkdwn.pl" convert2='lynx -display_charset=US-ASCII -force-html -dump' mailer=mailx tmpf1='_pubnext.html' tmpf2='_pubnext.txt' lockf='.pubnext.lock'
This blog itself is handled by a different project. It also has a newsletter section, but it is sending posts to just one of my own addresses, so that I can monitor its correct functioning.
A daily cronjob calls
allpub.sh blog, which in turn repeatedly calls
pubnext.sh on the working directory
blog, and afterwards (re)generates
the index files
list.html (for the HTML/blog version) and
(for the text/gopherlog) version, and in addition the feed
the HTML version as well. These files are saved two levels above the
working directory in
To compartmentalize the scripts, there is an additional daily cronjob,
which in turn updates the directories facing the internet. It is based on
allsync.sh, which is also included in the Plog suite for reference.
blog looks quite similar to the one in the previous section:
Archiv/ .plog.rc _pubnext.html _pubnext.log _pubnext.txt ad.txt t15119-plog.md template.md
The source text you are now reading was put into the file
When it will be processed,
pubnext.sh will move it (via Git, see below)
into the archive directory
And here is the configuration script
.plog.rc for this project:
adds='ad.txt' pubtext='../../pubdirtext' lentext=24 indtext='gophermap' indtexthead='recent entries' pubhtml='../../pubdirhtml' lenhtml=12 indhtml='list.html' indhtmltitle="Y's blog" rsshtml='rss.xml' rsstitle="Y's blog feed" rssdesc='recent blog entries' baselink='http://yargo.sdf.org/blog' subject='(blogmonitor)' fprefix='t' draft='DRAFT' arch='Archiv' htmlhead='<HTML><BODY>' htmlfoot="</BODY><!-- generated by $myself -- 2015 YCB --></HTML>" logfile='_pubnext.log' convert0="$mydir/convchars.sh" convert1="$mydir/mrkdwn.pl" convert2='lynx -display_charset=US-ASCII -force-html -dump' mailer=mailx tmpf1='_pubnext.html' tmpf2='_pubnext.txt' lockf='.pubnext.lock'
Please keep in mind that the
.plog.rc file in fact is a shell script, which
will be executed ("sourced") by
pubnext.sh, and therefore
strange things may happen if you do not correctly pair
or if you make other syntactic mistakes.
The following paragraphs require understanding of Git. If you lack this, please learn about Git basics, from any of the good resources on the net.
There are no
.git files in the directories presented in the examples,
because in my case, their parent directory is version controlled by Git.
pubnext.sh handles the core Git functionality, as it tries to do a
git pull before changing anything in the working directory (i.e, to update
changes from a possible remote directory), and it does a
git commit and
git push afterwards.
Currently, a local only repository without remote might not be handled gracefully. If you have such a setup, try the scripts, but be prepared to do some hacking. In case you desperately need it, but cannot get it working, feel free to contact me; I might try to add the necessary logic.
You may ask yourself why I rely on cronjobs to launch the different scripts, and not on Git itself by making use of hooks. Here are my reasons:
If you make it that far, please tell me what you think about Plog! And good luck for your writing endeavours!