#!/usr/bin/env python

"""This script tests REP-0132 CHANGELOG.rst files"""

from __future__ import print_function

import argparse
import logging
import os
import sys

import catkin_pkg.changelog
from catkin_pkg.changelog import Changelog
from catkin_pkg.changelog import populate_changelog_from_rst


def main(sysargs=None):
    parser = argparse.ArgumentParser(
        description="Tests a REP-0132 CHANGELOG.rst")
    parser.add_argument(
        'changelog_file',
        help="CHANGELOG.rst file to parse",
        default='.',
        nargs='?')

    args = parser.parse_args(sysargs)

    if os.path.isdir(args.changelog_file):
        changelog_file = os.path.join(args.changelog_file, 'CHANGELOG.rst')
        if not os.path.exists(changelog_file):
            print("No CHANGELOG.rst file in given directory: '{0}'"
                  .format(args.changelog_file), file=sys.stderr)
            return 1
    else:
        changelog_file = args.changelog_file
        if not os.path.exists(changelog_file):
            print("CHANGELOG.rst file given does not exist: '{0}'"
                  .format(args.changelog_file), file=sys.stderr)
            return 1

    if os.path.basename(changelog_file) != 'CHANGELOG.rst':
        print("WARNING: changelog file name should be CHANGELOG.rst")

    logging.basicConfig()
    catkin_pkg.changelog.log.setLevel(logging.DEBUG)
    changelog = Changelog()
    with open(changelog_file, 'r') as f:
        print(populate_changelog_from_rst(changelog, f.read()))

if __name__ == '__main__':
    sys.exit(main())
