#!/usr/bin/env python2
# -*- encoding: utf-8 -*-

from __future__ import print_function

import os
import sys
import argparse

import productmd.compose

here = sys.path[0]
if here != '/usr/bin':
    sys.path[0] = os.path.dirname(here)

from compose_utils.package_moves import ComposePackageMoves


def run(opts):
    old_compose = productmd.compose.Compose(opts.compose1)
    new_compose = productmd.compose.Compose(opts.compose2)

    pkgm = ComposePackageMoves()
    try:
        data = pkgm.get_report(old_compose, new_compose)
    except RuntimeError as exc:
        print('Error: {}'.format(exc), file=sys.stderr)
        sys.exit(1)

    name = opts.name or new_compose.info.compose.id
    pkgm.write(data, path=opts.path, name=name)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('compose1', metavar='OLD_COMPOSE')
    parser.add_argument('compose2', metavar='NEW_COMPOSE')
    parser.add_argument('-p', '--path',
                        help='Target directory where to write the output. '
                             'Defaults to current directory.')
    parser.add_argument('-n', '--name',
                        help='Identifier to be included in generated filenames. '
                             'Defaults to compose id of new compose.')
    opts = parser.parse_args()
    run(opts)
