diff --git a/backportpackage b/backportpackage index 91dc996..c6ecb5f 100755 --- a/backportpackage +++ b/backportpackage @@ -26,7 +26,6 @@ import sys import tempfile import lsb_release -from devscripts.logger import Logger from httplib2 import Http, HttpLib2Error from ubuntutools.archive import (SourcePackage, DebianSourcePackage, @@ -36,6 +35,7 @@ from ubuntutools.builder import get_builder from ubuntutools.lp.lpapicache import (Launchpad, Distribution, SeriesNotFoundException, PackageNotFoundException) +from ubuntutools.logger import Logger from ubuntutools.misc import (system_distribution, vendor_to_distroinfo, codename_to_distribution) from ubuntutools.question import YesNoQuestion diff --git a/bitesize b/bitesize index 6d8298d..82ff59d 100755 --- a/bitesize +++ b/bitesize @@ -27,9 +27,8 @@ from optparse import OptionParser from launchpadlib.launchpad import Launchpad from launchpadlib.errors import HTTPError -from devscripts.logger import Logger - from ubuntutools.config import UDTConfig +from ubuntutools.logger import Logger def error_out(msg): Logger.error(msg) diff --git a/debian/changelog b/debian/changelog index 5fd10fc..1a3c378 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +ubuntu-dev-tools (0.147) UNRELEASED; urgency=low + + * Move devscripts.logger to ubuntutools.logger. + + -- Benjamin Drung Tue, 19 Mar 2013 00:17:25 +0100 + ubuntu-dev-tools (0.146) experimental; urgency=low [ Benjamin Drung ] diff --git a/harvest b/harvest index d345719..7938cea 100755 --- a/harvest +++ b/harvest @@ -28,9 +28,8 @@ from optparse import OptionParser import sys -from devscripts.logger import Logger - from ubuntutools.harvest import Harvest +from ubuntutools.logger import Logger def main(): usage = "usage: %prog source-package-name" diff --git a/import-bug-from-debian b/import-bug-from-debian index 81cd49b..27d4945 100755 --- a/import-bug-from-debian +++ b/import-bug-from-debian @@ -27,7 +27,6 @@ import re import sys import webbrowser -from devscripts.logger import Logger try: import SOAPpy except ImportError: @@ -37,6 +36,7 @@ except ImportError: from launchpadlib.launchpad import Launchpad from ubuntutools.config import UDTConfig +from ubuntutools.logger import Logger def main(): bug_re = re.compile(r"bug=(\d+)") diff --git a/pbuilder-dist b/pbuilder-dist index 1decbd4..956f050 100755 --- a/pbuilder-dist +++ b/pbuilder-dist @@ -32,13 +32,13 @@ import os import sys -from devscripts.logger import Logger from distro_info import DebianDistroInfo, UbuntuDistroInfo, DistroDataOutdated import ubuntutools.misc from ubuntutools.config import UDTConfig -from ubuntutools import subprocess +from ubuntutools.logger import Logger from ubuntutools.question import YesNoQuestion +from ubuntutools import subprocess class PbuilderDist: diff --git a/pull-debian-debdiff b/pull-debian-debdiff index 0320b8e..1b03180 100755 --- a/pull-debian-debdiff +++ b/pull-debian-debdiff @@ -23,10 +23,9 @@ import sys import debian.debian_support import debian.changelog -from devscripts.logger import Logger - from ubuntutools.archive import DebianSourcePackage, DownloadError from ubuntutools.config import UDTConfig +from ubuntutools.logger import Logger def previous_version(package, version, distance): "Given an (extracted) package, determine the version distance versions ago" diff --git a/pull-debian-source b/pull-debian-source index 92077a1..b7faebd 100755 --- a/pull-debian-source +++ b/pull-debian-source @@ -21,11 +21,11 @@ import optparse import sys import urllib2 -from devscripts.logger import Logger from distro_info import DebianDistroInfo, DistroDataOutdated from ubuntutools.archive import DebianSourcePackage, DownloadError, rmadison from ubuntutools.config import UDTConfig +from ubuntutools.logger import Logger def is_suite(version): diff --git a/pull-lp-source b/pull-lp-source index 0bbabbd..fbe3d15 100755 --- a/pull-lp-source +++ b/pull-lp-source @@ -29,7 +29,6 @@ import sys import urllib2 from optparse import OptionParser -from devscripts.logger import Logger from distro_info import UbuntuDistroInfo, DistroDataOutdated from ubuntutools.archive import UbuntuSourcePackage, DownloadError @@ -38,6 +37,7 @@ from ubuntutools.lp.lpapicache import Distribution, Launchpad from ubuntutools.lp.udtexceptions import (SeriesNotFoundException, PackageNotFoundException, PocketDoesNotExistError) +from ubuntutools.logger import Logger from ubuntutools.misc import split_release_pocket diff --git a/requestbackport b/requestbackport index 5d1ee47..7734d62 100755 --- a/requestbackport +++ b/requestbackport @@ -20,15 +20,15 @@ import re import sys import apt -from devscripts.logger import Logger from distro_info import UbuntuDistroInfo +from ubuntutools.config import UDTConfig from ubuntutools.lp.lpapicache import Launchpad, Distribution from ubuntutools.lp.udtexceptions import PackageNotFoundException -from ubuntutools.config import UDTConfig -from ubuntutools.rdepends import query_rdepends, RDependsException +from ubuntutools.logger import Logger from ubuntutools.question import (YesNoQuestion, EditBugReport, confirmation_prompt) +from ubuntutools.rdepends import query_rdepends, RDependsException class DestinationException(Exception): diff --git a/reverse-depends b/reverse-depends index 89d7ef0..9397670 100755 --- a/reverse-depends +++ b/reverse-depends @@ -17,9 +17,9 @@ import optparse import sys -from devscripts.logger import Logger from distro_info import DistroDataOutdated +from ubuntutools.logger import Logger from ubuntutools.misc import (system_distribution, vendor_to_distroinfo, codename_to_distribution) from ubuntutools.rdepends import query_rdepends, RDependsException diff --git a/seeded-in-ubuntu b/seeded-in-ubuntu index 9522175..1adc296 100755 --- a/seeded-in-ubuntu +++ b/seeded-in-ubuntu @@ -22,10 +22,9 @@ import os import time import urllib -from devscripts.logger import Logger - from ubuntutools.lp.lpapicache import (Distribution, Launchpad, PackageNotFoundException) +from ubuntutools.logger import Logger DATA_URL = 'http://qa.ubuntuwire.org/ubuntu-seeded-packages/seeded.json.gz' diff --git a/sponsor-patch b/sponsor-patch index 8825853..427c4eb 100755 --- a/sponsor-patch +++ b/sponsor-patch @@ -20,10 +20,9 @@ import shutil import sys import tempfile -from devscripts.logger import Logger - -from ubuntutools.config import UDTConfig from ubuntutools.builder import get_builder +from ubuntutools.config import UDTConfig +from ubuntutools.logger import Logger from ubuntutools.sponsor_patch.sponsor_patch import (sponsor_patch, check_dependencies) diff --git a/syncpackage b/syncpackage index 8b0a890..02a8c3b 100755 --- a/syncpackage +++ b/syncpackage @@ -30,21 +30,21 @@ import textwrap import urllib import debian.debian_support -from devscripts.logger import Logger from distro_info import UbuntuDistroInfo, DistroDataOutdated from lazr.restfulclient.errors import HTTPError from ubuntutools.archive import (DebianSourcePackage, UbuntuSourcePackage, DownloadError) from ubuntutools.config import UDTConfig, ubu_email -from ubuntutools.requestsync.mail import ( - get_debian_srcpkg as requestsync_mail_get_debian_srcpkg) -from ubuntutools.requestsync.lp import get_debian_srcpkg, get_ubuntu_srcpkg from ubuntutools.lp import udtexceptions from ubuntutools.lp.lpapicache import (Distribution, Launchpad, PersonTeam, SourcePackagePublishingHistory) +from ubuntutools.logger import Logger from ubuntutools.misc import split_release_pocket from ubuntutools.question import YesNoQuestion +from ubuntutools.requestsync.mail import ( + get_debian_srcpkg as requestsync_mail_get_debian_srcpkg) +from ubuntutools.requestsync.lp import get_debian_srcpkg, get_ubuntu_srcpkg from ubuntutools import subprocess diff --git a/ubuntu-upload-permission b/ubuntu-upload-permission index 2df06bd..5db701c 100755 --- a/ubuntu-upload-permission +++ b/ubuntu-upload-permission @@ -17,11 +17,10 @@ import optparse import sys -from devscripts.logger import Logger - from ubuntutools.lp.lpapicache import (Launchpad, Distribution, PersonTeam, Packageset, PackageNotFoundException, SeriesNotFoundException) +from ubuntutools.logger import Logger from ubuntutools.misc import split_release_pocket diff --git a/ubuntutools/archive.py b/ubuntutools/archive.py index de1334e..555e72b 100644 --- a/ubuntutools/archive.py +++ b/ubuntutools/archive.py @@ -41,11 +41,10 @@ import debian.deb822 import debian.debian_support import httplib2 -from devscripts.logger import Logger - from ubuntutools.config import UDTConfig from ubuntutools.lp.lpapicache import (Launchpad, Distribution, SourcePackagePublishingHistory) +from ubuntutools.logger import Logger from ubuntutools import subprocess diff --git a/ubuntutools/builder.py b/ubuntutools/builder.py index 6a8a765..ca70fd1 100644 --- a/ubuntutools/builder.py +++ b/ubuntutools/builder.py @@ -20,7 +20,7 @@ import os -from devscripts.logger import Logger +from ubuntutools.logger import Logger from ubuntutools import subprocess def _build_preparation(result_directory): diff --git a/ubuntutools/config.py b/ubuntutools/config.py index 3202925..899750f 100644 --- a/ubuntutools/config.py +++ b/ubuntutools/config.py @@ -22,7 +22,7 @@ import shlex import socket import sys -from devscripts.logger import Logger +from ubuntutools.logger import Logger class UDTConfig(object): """Ubuntu Dev Tools configuration file (devscripts config file) and diff --git a/ubuntutools/harvest.py b/ubuntutools/harvest.py index 3fc2d5e..8e222e1 100644 --- a/ubuntutools/harvest.py +++ b/ubuntutools/harvest.py @@ -16,7 +16,7 @@ import os.path import sys import urllib2 -from devscripts.logger import Logger +from ubuntutools.logger import Logger BASE_URL = "http://harvest.ubuntu.com/" diff --git a/ubuntutools/logger.py b/ubuntutools/logger.py new file mode 100644 index 0000000..3c04ca4 --- /dev/null +++ b/ubuntutools/logger.py @@ -0,0 +1,76 @@ +# +# logger.py - A simple logging helper class +# +# Copyright (C) 2010, Benjamin Drung +# +# Permission to use, copy, modify, and/or distribute this software +# for any purpose with or without fee is hereby granted, provided +# that the above copyright notice and this permission notice appear +# in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +# WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE +# AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, +# NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN +# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +import os +import sys + + +def escape_arg(arg): + """Shell-escpae arg, if necessary. + Fairly simplistic, doesn't escape anything except whitespace. + """ + if ' ' not in arg: + return arg + return '"%s"' % arg.replace('\\', r'\\').replace('"', r'\"') + + +class Logger(object): + script_name = os.path.basename(sys.argv[0]) + verbose = False + + stdout = sys.stdout + stderr = sys.stderr + + @classmethod + def _print(cls, format_, message, args=None, stderr=False): + if args: + message = message % args + stream = cls.stderr if stderr else cls.stdout + stream.write((format_ + "\n") % (cls.script_name, message)) + + @classmethod + def command(cls, cmd): + if cls.verbose: + cls._print("%s: I: %s", " ".join(escape_arg(arg) for arg in cmd)) + + @classmethod + def debug(cls, message, *args): + if cls.verbose: + cls._print("%s: D: %s", message, args, stderr=True) + + @classmethod + def error(cls, message, *args): + cls._print("%s: Error: %s", message, args, stderr=True) + + @classmethod + def warn(cls, message, *args): + cls._print("%s: Warning: %s", message, args, stderr=True) + + @classmethod + def info(cls, message, *args): + if cls.verbose: + cls._print("%s: I: %s", message, args) + + @classmethod + def normal(cls, message, *args): + cls._print("%s: %s", message, args) + + @classmethod + def set_verbosity(cls, verbose): + cls.verbose = verbose diff --git a/ubuntutools/requestsync/lp.py b/ubuntutools/requestsync/lp.py index ee34eb4..73f5d59 100644 --- a/ubuntutools/requestsync/lp.py +++ b/ubuntutools/requestsync/lp.py @@ -23,13 +23,13 @@ import re from debian.deb822 import Changes -from devscripts.logger import Logger from distro_info import DebianDistroInfo, DistroDataOutdated from httplib2 import Http, HttpLib2Error from ubuntutools.lp import udtexceptions from ubuntutools.lp.lpapicache import (Launchpad, Distribution, PersonTeam, DistributionSourcePackage) +from ubuntutools.logger import Logger from ubuntutools.question import confirmation_prompt diff --git a/ubuntutools/requestsync/mail.py b/ubuntutools/requestsync/mail.py index 9b78884..11e2768 100644 --- a/ubuntutools/requestsync/mail.py +++ b/ubuntutools/requestsync/mail.py @@ -28,13 +28,13 @@ import socket import tempfile from debian.changelog import Changelog, Version -from devscripts.logger import Logger from distro_info import DebianDistroInfo, DistroDataOutdated from ubuntutools.archive import rmadison, FakeSPPH +from ubuntutools.lp.udtexceptions import PackageNotFoundException +from ubuntutools.logger import Logger from ubuntutools.question import confirmation_prompt, YesNoQuestion from ubuntutools import subprocess -from ubuntutools.lp.udtexceptions import PackageNotFoundException __all__ = [ 'get_debian_srcpkg', diff --git a/ubuntutools/sponsor_patch/bugtask.py b/ubuntutools/sponsor_patch/bugtask.py index b2721d0..ce8d90e 100644 --- a/ubuntutools/sponsor_patch/bugtask.py +++ b/ubuntutools/sponsor_patch/bugtask.py @@ -23,7 +23,7 @@ import debian.debian_support import distro_info import httplib2 -from devscripts.logger import Logger +from ubuntutools.logger import Logger def is_sync(bug): """Checks if a Launchpad bug is a sync request. diff --git a/ubuntutools/sponsor_patch/patch.py b/ubuntutools/sponsor_patch/patch.py index 931a533..fd2575d 100644 --- a/ubuntutools/sponsor_patch/patch.py +++ b/ubuntutools/sponsor_patch/patch.py @@ -18,9 +18,8 @@ import os import re -from devscripts.logger import Logger - from ubuntutools import subprocess +from ubuntutools.logger import Logger from ubuntutools.sponsor_patch.question import ask_for_manual_fixing class Patch(object): diff --git a/ubuntutools/sponsor_patch/source_package.py b/ubuntutools/sponsor_patch/source_package.py index 3713f59..602c2bb 100644 --- a/ubuntutools/sponsor_patch/source_package.py +++ b/ubuntutools/sponsor_patch/source_package.py @@ -22,10 +22,9 @@ import sys import debian.changelog import debian.deb822 -from devscripts.logger import Logger - from ubuntutools import subprocess from ubuntutools.harvest import Harvest +from ubuntutools.logger import Logger from ubuntutools.question import Question, YesNoQuestion from ubuntutools.sponsor_patch.question import (ask_for_ignoring_or_fixing, diff --git a/ubuntutools/sponsor_patch/sponsor_patch.py b/ubuntutools/sponsor_patch/sponsor_patch.py index bd308d2..91ed8d4 100644 --- a/ubuntutools/sponsor_patch/sponsor_patch.py +++ b/ubuntutools/sponsor_patch/sponsor_patch.py @@ -20,13 +20,12 @@ import pwd import shutil import sys -from devscripts.logger import Logger - from distro_info import UbuntuDistroInfo from launchpadlib.launchpad import Launchpad from ubuntutools import subprocess +from ubuntutools.logger import Logger from ubuntutools.update_maintainer import (update_maintainer, MaintainerUpdateException) from ubuntutools.question import input_number diff --git a/ubuntutools/test/test_archive.py b/ubuntutools/test/test_archive.py index c45cbab..bb543d4 100644 --- a/ubuntutools/test/test_archive.py +++ b/ubuntutools/test/test_archive.py @@ -28,10 +28,9 @@ import debian.deb822 import httplib2 import mox -from devscripts.logger import Logger - import ubuntutools.archive from ubuntutools.config import UDTConfig +from ubuntutools.logger import Logger from ubuntutools.test import unittest from ubuntutools.test.example_package import ExamplePackage diff --git a/ubuntutools/test/test_config.py b/ubuntutools/test/test_config.py index cf78a3c..8696514 100644 --- a/ubuntutools/test/test_config.py +++ b/ubuntutools/test/test_config.py @@ -21,9 +21,8 @@ from StringIO import StringIO import mox -from devscripts.logger import Logger - from ubuntutools.config import UDTConfig, ubu_email +from ubuntutools.logger import Logger from ubuntutools.test import unittest class ConfigTestCase(mox.MoxTestBase, unittest.TestCase): diff --git a/ubuntutools/test/test_logger.py b/ubuntutools/test/test_logger.py new file mode 100644 index 0000000..91cbbed --- /dev/null +++ b/ubuntutools/test/test_logger.py @@ -0,0 +1,54 @@ +# test_logger.py - Test ubuntutools.logger.Logger. +# +# Copyright (C) 2012, Stefano Rivera +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +import StringIO +import sys + +from ubuntutools.logger import Logger +from ubuntutools.test import unittest + + +class LoggerTestCase(unittest.TestCase): + def setUp(self): + Logger.stdout = StringIO.StringIO() + Logger.stderr = StringIO.StringIO() + self._script_name = Logger.script_name + Logger.script_name = 'test' + self._verbose = Logger.verbose + + def tearDown(self): + Logger.stdout = sys.stdout + Logger.stderr = sys.stderr + Logger.script_name = self._script_name + Logger.verbose = self._verbose + + def testCommand(self): + Logger.command(('ls', 'a b')) + self.assertEqual(Logger.stdout.getvalue(), '') + Logger.set_verbosity(True) + Logger.command(('ls', 'a b')) + self.assertEqual(Logger.stdout.getvalue(), 'test: I: ls "a b"\n') + self.assertEqual(Logger.stderr.getvalue(), '') + + def testNoArgs(self): + Logger.normal('hello %s') + self.assertEqual(Logger.stdout.getvalue(), 'test: hello %s\n') + self.assertEqual(Logger.stderr.getvalue(), '') + + def testArgs(self): + Logger.normal('hello %s', 'world') + self.assertEqual(Logger.stdout.getvalue(), 'test: hello world\n') + self.assertEqual(Logger.stderr.getvalue(), '') diff --git a/ubuntutools/test/test_update_maintainer.py b/ubuntutools/test/test_update_maintainer.py index 6ad76e7..d08bd73 100644 --- a/ubuntutools/test/test_update_maintainer.py +++ b/ubuntutools/test/test_update_maintainer.py @@ -23,8 +23,7 @@ import sys import mox -from devscripts.logger import Logger - +from ubuntutools.logger import Logger from ubuntutools.test import unittest from ubuntutools.update_maintainer import update_maintainer diff --git a/ubuntutools/update_maintainer.py b/ubuntutools/update_maintainer.py index 9e74924..2b1ff59 100644 --- a/ubuntutools/update_maintainer.py +++ b/ubuntutools/update_maintainer.py @@ -20,7 +20,7 @@ import os import re import debian.changelog -from devscripts.logger import Logger +from ubuntutools.logger import Logger # Prior May 2009 these Maintainers were used: _PREVIOUS_UBUNTU_MAINTAINER = (