Move vendor_to_distroinfo and codename_to_distribution into ubuntutools.misc

This commit is contained in:
Evan Broder 2011-06-11 06:04:09 -07:00
parent 1a6fb270b4
commit 16300e471f
4 changed files with 30 additions and 31 deletions

View File

@ -35,8 +35,7 @@ from devscripts.logger import Logger
from ubuntutools.archive import SourcePackage, DebianSourcePackage, UbuntuSourcePackage, DownloadError, rmadison
from ubuntutools.config import UDTConfig, ubu_email
from ubuntutools.builder import get_builder
from ubuntutools.distro_info import vendor_to_distroinfo, codename_to_distribution
from ubuntutools.misc import system_distribution
from ubuntutools.misc import system_distribution, vendor_to_distroinfo, codename_to_distribution
from ubuntutools.question import YesNoQuestion
def error(msg):

2
debian/changelog vendored
View File

@ -26,7 +26,7 @@ ubuntu-dev-tools (0.125) UNRELEASED; urgency=low
* ubuntutools.misc: Add a new "system_distribution_chain", which returns
a list starting with the current distribution and working its way up
each distribution's parent.
* ubuntutools.distro_info: Add a function to find the distribution that
* ubuntutools.misc: Add a function to find the distribution that
used a given release codename.
* backportpackage, doc/backportpackage.1: Accept codenames from any
distribution in the parenting chain. Makes it possible to, e.g.,

View File

@ -18,8 +18,6 @@ import csv
import datetime
import os
from ubuntutools.misc import system_distribution_chain
def convert_date(string):
"""Convert a date string in ISO 8601 into a datetime object."""
if not string:
@ -197,29 +195,3 @@ class UbuntuDistroInfo(DistroInfo):
if date <= x["eol"] or
(x["eol-server"] is not None and date <= x["eol-server"])]
return distros
_vendor_to_distroinfo = {"Debian": DebianDistroInfo,
"Ubuntu": UbuntuDistroInfo}
def vendor_to_distroinfo(vendor):
""" vendor_to_distroinfo(string) -> DistroInfo class
Convert a string name of a distribution into a DistroInfo subclass
representing that distribution, or None if the distribution is
unknown.
"""
return _vendor_to_distroinfo.get(vendor)
def codename_to_distribution(codename):
""" codename_to_distribution(string) -> string
Finds a given release codename in your distribution's genaology
(i.e. looking at the current distribution and its parents), or
print an error message and return None if it can't be found
"""
for distro in system_distribution_chain():
info = vendor_to_distroinfo(distro)
if not info:
continue
if codename in info().all:
return distro

View File

@ -29,6 +29,7 @@ import os.path
from subprocess import Popen, PIPE
import sys
from ubuntutools import distro_info
from ubuntutools.lp.udtexceptions import PocketDoesNotExistError
_system_distribution_chain = []
@ -151,3 +152,30 @@ def require_utf8():
print >> sys.stderr, ("This program only functions in a UTF-8 locale. "
"Aborting.")
sys.exit(1)
_vendor_to_distroinfo = {"Debian": distro_info.DebianDistroInfo,
"Ubuntu": distro_info.UbuntuDistroInfo}
def vendor_to_distroinfo(vendor):
""" vendor_to_distroinfo(string) -> DistroInfo class
Convert a string name of a distribution into a DistroInfo subclass
representing that distribution, or None if the distribution is
unknown.
"""
return _vendor_to_distroinfo.get(vendor)
def codename_to_distribution(codename):
""" codename_to_distribution(string) -> string
Finds a given release codename in your distribution's genaology
(i.e. looking at the current distribution and its parents), or
print an error message and return None if it can't be found
"""
for distro in system_distribution_chain():
info = vendor_to_distroinfo(distro)
if not info:
continue
if codename in info().all:
return distro