slacklog 0.9.6
Convert Slackware ChangeLog to various formats
Requires Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, <4
Keywords: slackware changelog rss atom

.. image:: https://img.shields.io/pypi/v/slacklog.svg?style=plastic
   :target: https://pypi.python.org/pypi/slacklog
   :alt: Download
.. image:: https://travis-ci.org/vmj/slacklog.svg?branch=master
   :target: https://travis-ci.org/vmj/slacklog
   :alt: Build Status
.. image:: https://readthedocs.org/projects/slacklog/badge/?version=latest
   :target: https://slacklog.readthedocs.io/en/latest/?badge=latest
   :alt: Docs

slacklog -- Convert Slackware Changelog to various formats
**********************************************************

slacklog provides programs and a library to convert a Slackware
ChangeLogs into other formats.  Currently, RSS, Atom, JSON, and PyBlosxom
formats are supported.

| Download: https://pypi.python.org/pypi/slacklog
| Source code: https://github.com/vmj/slacklog
| Builds status: https://travis-ci.org/vmj/slacklog
| Documentation: https://slacklog.readthedocs.org

.. contents::


Basic usage
===========

Typical usage of the program looks like this::

    $ slacklog2rss --changelog slackware-current/ChangeLog.txt \
                   --encoding iso8859-1 \
                   --out ~/public_html/slackware-current.rss \
                   --slackware "Slackware current" \
                   --rssLink "http://linuxbox.fi/~vmj/slackware-current.rss" \
                   --description "Slackware current activity" \
                   --managingEditor "vmj@linuxbox.fi (Mikko Värri)" \
                   --webMaster "vmj@linuxbox.fi (Mikko Värri)"

The included Python library provides the ability to make custom
formats easily::

    #!/usr/bin/env python
    from __future__ import print_function
    import codecs
    import locale
    from slacklog.parsers import SlackLogParser

    def read(file):
        '''Return file contents as Unicode.'''
        return codecs.open(file, 'r', 'iso8859-1').read()

    def write(str):
        '''Print out in preferred encoding.'''
        print(str.encode(locale.getpreferredencoding()))

    # Parse the ChangeLog
    log = SlackLogParser().parse(read('ChangeLog.txt'))

    # Just an example of walking the log tree and print it out
    for entry in log.entries:
        write(u'[%s] %s\n' % (entry.timestamp.isoformat(), entry.description))
        for pkg in entry.pkgs:
            write(u'%s:%s' % (pkg.pkg, pkg.description))

Note that slacklog package deals solely in Unicode; parser expects to
be given Unicode input and formatters generate Unicode data.


Requirements
============

In addition to Python, `python-dateutil
<https://pypi.python.org/pypi/python-dateutil>`_ is required.

Python versions 2.7 and 3.4 - 3.7 are tested, together with python-dateutil versions 2.1 - 2.8.


Installation
============

Use either ``pip install slacklog`` or download the source archive and
use ``python setup.py install``.

The source code is available at `Python Package Index (PyPI)
<https://pypi.python.org/pypi/slacklog>`_ or, if you want the
unreleased version, from `Github <https://github.com/vmj/slacklog>`_
git repository.


Trying it in Docker
===================

Here's one way to hack on this inside a container::

    $ docker run --rm -it -v $(pwd):/slacklog -w /slacklog python:3.7-alpine3.8 sh
    # apk add --no-cache curl
    # pip install python-dateutil==2.7.3
    # python setup.py install
    # sh examples/fetch-changelogs.sh
    # sh examples/update-slacklog-rss.sh

Obviously, you need Docker installed and working,
and I'm assuming you run those commands in the git clone.


Authors
=======

Original author and current maintainer is Mikko Värri
(vmj@linuxbox.fi).


License
=======

slacklog is Free Software, licensed under GNU General Public License
(GPL), version 3 or later.  See LICENSE.txt file for details.


Release history
===============


Version 0.9.6 (2019-03-14)
--------------------------

Fixed a bug in text formatter when the original timestamp is in 12-hour format.

Added Python 3.7 and dateutil 2.8 into test matrix.

Deprecated PyBlosxom formatter.


Version 0.9.5 (2018-10-02)
--------------------------

This release adds the JSON formatter.

As for dependencies, support for Python 3.3 was dropped since it had it's end-of-life a year ago. Also, dateutil 2.7 is
tested to be good.


Version 0.9.4 (2017-09-03)
--------------------------

The parser subclass can now overwrite the generation of entry identifier and/or checksum.

Other than that, tests were updated to use python-dateutil 2.6.1, and documentation was fixed.


Version 0.9.3 (2017-08-23)
--------------------------

This release is mainly bug fixing.  RSS and atom formatters learnt to take
the feed build time (optionally) as an argument, which makes them more testable.


Version 0.9.2 (2017-05-25)
--------------------------

This release is backwards incompatible with the previous releases:
SlackLogParser and SlackLogFormatter (and subclasses) have to be instantiated,
and instead of using class methods, instance methods and properties have to be used.


Version 0.9.1 (2017-05-24)
--------------------------

This release adds checksum, identifier, and parent fields to SlackLogEntry.
Also, a couple of bugs with recognizing package names was resolved.


Verions 0.9.0 (2017-04-05)
--------------------------

After almost six years with only maintenance releases, it's time to move to beta.

This release switches from distutils to setuptools, and contains some refactoring to scripts (pure refactoring, no
changes in the CLI).


Version 0.0.9 (2017-04-04)
--------------------------

This release does not add any new functionality.

The dependencies were updated: Python 2.7, 3.3 - 3.6, and python-dateutil 2.1 - 2.6.
Support for Python 2.6 was dropped, not because it doesn't work but because Python core team doesn't support it.

The code was formatted according to PEP-8, and the example script was updated to include Slackware versions 14.0 and
14.2.


Version 0.0.8 (2014-09-28)
--------------------------

This release does not add any new functionality, but includes support
for Python 3.

In addition, Slackware{,64} 14.1 was added to the example script, and
Travis CI and ReadTheDocs were integrated (see the links at the top of
the README).

Version 0.0.7 (2011-06-16)
--------------------------

This release adds Atom feed formatter, and fixes compatibility issue
with recent ChangeLog.txt format change which caused empty entries to
be generated.  Also, Slackware{,64} 13.37 was added to the example
script.


Version 0.0.6 (2011-03-18)
--------------------------

This release adds documentation.


Version 0.0.5 (2011-03-17)
--------------------------

This release adds the example script in source distribution, too.


Version 0.0.4 (2011-03-17)
--------------------------

This release contains better error handling, better compatibility with
more feed readers, better support for timezones other that UTC, and an
example script suitable for a cron job to update RSS feeds.


Version 0.0.3 (2011-02-21)
--------------------------

Added PyBlosxom formatter and fixed a couple of issues.


Version 0.0.2 (2011-01-29)
--------------------------

Packaging cleanups.


Version 0.0.1 (2011-01-28)
--------------------------

Initial release.