#!/usr/bin/python3

# ubuntuiso - tool to examine Ubuntu CD (ISO) installation media
# Copyright (C) 2008 Canonical Ltd.
# Author: Matt Zimmerman <mdz@ubuntu.com>
#
# ##################################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# See file /usr/share/common-licenses/GPL-2 for more details.
#
# ##################################################################

import optparse
import subprocess
import sys

from ubuntutools import getLogger
Logger = getLogger(__name__)


def extract(iso, path):
    command = ['isoinfo', '-R', '-i', iso, '-x', path]
    pipe = subprocess.run(command, encoding='utf-8',
                          stdout=subprocess.PIPE,
                          stderr=subprocess.PIPE)

    if pipe.returncode != 0:
        sys.stderr.write(pipe.stderr)
        sys.exit(pipe.returncode)

    return pipe.stdout


def main():
    desc = 'Given an ISO, %prog will display the Ubuntu version information'
    parser = optparse.OptionParser(usage='%prog [options] iso...',
                                   description=desc)
    isos = parser.parse_args()[1]
    err = False

    for iso in isos:
        if len(isos) > 1:
            prefix = '%s:' % iso
        else:
            prefix = ''

        version = extract(iso, '/.disk/info')

        if len(version) == 0:
            Logger.error('%s does not appear to be an Ubuntu ISO' % iso)
            err = True
            continue

        Logger.info(prefix + version)

    if err:
        sys.exit(1)


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