ubuntu-dev-tools/ubuntu-iso
Dan Streetman 0eeb93ee0c logging: update ubuntutools.getLogger() to output to stdout/stderr correctly
Python logging by default sends all output to stderr, but that's not what
normal programs usually do and is not expected for these scripts.

Change the ubuntutools.getLogger() method to return a logger with handlers
correctly set up to send INFO level (or lower) logs to stdout and WARNING
level (or higher; technically INFO+1 level or higher) logs to stderr.

This results in normally logged output going to stdout and warnings/errors
going to stderr, as expected.
2021-02-02 06:25:12 -05:00

73 lines
1.9 KiB
Python
Executable File

#!/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()
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)