mkcommitfeed.pl - Commit Log Feed Generator
mkcommitfeed.pl \ --file-name filename.atom \ --feed-url http://example.com/myproject/filename.atom \ --feed-title "MyProject Commit Log" \ --feed-lang langtag \ --feed-related-url "http://example.com/myproject/" \ --feed-license-url "http://example.com/myproject/license" \ --feed-rights "Copyright or copyleft statement" \ < changes-in-this-revision.txt
The mkcommitfeed.pl
script provides a command-line interface to
update an Atom Feed that is intended for providing commit logs for a
software developmenet project.
The script, when invoked, adds an Atom Entry that describes a change made to the project's repository.
A description for the change must be specified to the standard input. It is used as the plain text content of the atom:content element of the Entry for the change to add.
Non-ASCII characters are not supported in this version of this script. Maybe a future version of this script would support UTF-8.
There are command-line options for the script. Some of them are
required, while the others are optional. As a general rule, an option
whose name begins with --entry
specifies a property for the Entry
to add, while an option whose name begins with --feed
specifies a
property for the entire Feed. Option values for Feed properties might
not be used when updating an existing Feed document.
--entry-author-mail foo@domain.example
(optional)
Specifies the mail address of the person who made a change. It is
used as the content of the atom:email
element of the atom:author
element of the Entry.
If this option is not specified, but the standard input includes a
ChangeLog entry in the standard GNU format, then the mail address is
taken from the ChangeLog entry. Otherwise, atom:email
element is
not specified.
The option value must be an RFC 2822 addr-spec
that does not match
obs-addr-spec
(i.e. standard email address format). Otherwise the
generated Feed would be non-conforming.
--entry-author-name author-name
(conditionally required)
Specifies the human readable name of the person who made a change. It
is used as the content of the atom:name
element of the
atom:author
element of the Entry.
If this option is not specified, but the standard input includes a
ChangeLog entry in the standard GNU format, then the name is taken
from the ChangeLog entry. If the standard input does not include a
GNU format ChangeLog entry, then the --entry-author-name
option
must be specified.
Non-ASCII characters are not supported in this version of this script.
--entry-content description
(optional)
Specifies the description of the change. It is used as the content of
the atom:content
element of the Entry, with type=text
.
If this option is specified, its value is used as if it were from the standard input and the actual standard input, if any, is ignored. If neither this option nor the standard input is specified, then the description is assumed as the empty string.
Non-ASCII characters are not supported in this version of this script.
--entry-title title
(optional)
Specifies the title of the change. It is used as the content of the
atom:title
element of the Entry, with type=text
.
If this option is not specified, then the date of the change, as well as the name of the author, is used as title.
Non-ASCII characters are not supported in this version of this script.
--feed-author-mail foo@domain.example
(optional)
Specifies the mail address of the author of the Feed. It is used as
the content of the atom:email
element of the atom:author
element
of the Feed.
This option is ignored if the --feed-author-name
option is not
specified.
If this option is not specified, atom:email
element is not
specified.
The option value must be an RFC 2822 addr-spec
that does not match
obs-addr-spec
(i.e. standard email address format). Otherwise the
generated Feed would be non-conforming.
This option is ignored if the Feed already has an atom:author
element.
--feed-author-name author-name
(optional)
Specifies the human readable name of the author of the Feed. It is
used as the content of the atom:name
element of the atom:author
element of the Feed.
If this option is not specified, the atom:author
element is not
specified in the Feed.
Non-ASCII characters are not supported in this version of this script.
This option is ignored if the Feed already has an atom:author
element.
--feed-author-url url
(optional)
Specifies the URI for the author (e.g. URL of the Web page for the
author). It is used as the content of the atom:uri
element of the
atom:author
element of the Feed.
If the --feed-author-name
option is not specified, this option is
ignored.
If this option is not specified, the atom:uri
element is not
specified.
The option value must be a URI reference conforming to RFC 3986. It should be an absolute reference unless you understand what is the base URL that is used to resolve a relative reference. Non-ASCII characters (i.e. IRI references) are not supported in this version of this script.
This option is ignored if the Feed already has an atom:author
element.
--feed-lang langtag
(optional)
Specifies the natural language used in textual parts of the Feed. It
is used as the value of xml:lang
attribute of the root element of
the Feed.
If this option is not specified, the default value i-default is used.
This option is ignored if the Feed already exists and has a
atom:link
element.
--feed-license-url url
(optional)
Specifies the URL that describes the license of the Feed. It is used
as the href
attribute value of an atom:link
element whose rel
is license
.
If this option is not specified, the atom:link
element whose rel
is license
is not specified.
The option value must be a URI reference conforming to RFC 3986. It should be an absolute reference unless you understand what is the base URL that is used to resolve a relative reference. Non-ASCII characters (i.e. IRI references) are not supported in this version of this script.
This option is ignored if the Feed already has a atom:link
element.
--feed-related-url url
(optional)
Specifies a related URL for the Feed. Usually the URL for the project
Web page should be specified. It is used as the href
attribute
value of an atom:link
element whose rel
is related
.
If this option is not specified, the atom:link
element whose rel
is related
is not specified.
The option value must be a URI reference conforming to RFC 3986. It should be an absolute reference unless you understand what is the base URL that is used to resolve a relative reference. Non-ASCII characters (i.e. IRI references) are not supported in this version of this script.
This option is ignored if the Feed already has a atom:link
element.
--feed-rights license-terms
(optional)
Specifies the license terms for the Feed. It is used as the content
of the atom:rights
element of the Feed.
If there is the atom:rights
element exists, its value is replaced
by the value of this option.
If this option is not specified, the atom:rights
element is not
added. If there are already the atom:rights
element specified,
however, it is not removed from the Feed.
Non-ASCII characters are not supported in this version of this script.
--feed-title title
(optional)
Specifies the title of the Feed. It is used as the content of the
atom:title
of the Feed.
If this option is not specified, the default value "ChangeLog" is used.
If there is Feed exists, then this option is ignored.
Non-ASCII characters are not supported in this version of this script.
--feed-url url
(required)
Specifies the URL of the Feed itself. It is used in various places,
such as in the href
attribute of the atom:link
element whose
rel
is self
.
The option value must be a URI reference conforming to RFC 3986. It should be an absolute reference unless you understand what is the base URL that is used to resolve a relative reference. Non-ASCII characters (i.e. IRI references) are not supported in this version of this script.
--file-name path-to-atom-file
(required)
Specifies the path to the file that contains the Atom Feed.
If the specified file is not found, then a new file is created. Otherwise, the existing file is loaded as an Atom Feed and then it is updated.
The file, if exists, must be encoded in UTF-8. The new content of the file generated by this script is encoded in UTF-8.
--help
Shows a help message and aborts.
For the execution of mkcommitfeed.pl
, the libiraries below are
required, as well as Perl 5.10.0 or later:
manakai-core http://suika.fam.cx/www/manakai-core/doc/web/
Whatpm http://suika.fam.cx/www/markup/html/whatpm/readme
The latest version of this script is available from the CVS repository: http://suika.fam.cx/gate/cvs/webroot/commitfeed/.
A gzipped tarball for the files is also available: http://suika.fam.cx/gate/cvs/webroot/commitfeed/commitfeed.tar.gz.
The mkcommitfeed.pl
Web site
http://suika.fam.cx/commitfeed/readme.
Wakaba <w@suika.fam.cx>.
This module was originally developed as part of Whatpm http://suika.fam.cx/www/markup/html/whatpm/readme.
An Atom Feed for updates for this script, which is itself generated by this script, is available at http://suika.fam.cx/commitfeed/commitfeed-commit.
Copyright 2008 Wakaba <w@suika.fam.cx>
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.