mirror of https://github.com/acidanthera/audk.git
117 lines
4.0 KiB
Python
117 lines
4.0 KiB
Python
## @file
|
|
# Inventory workspace's distribution package information.
|
|
#
|
|
# Copyright (c) 2014, Intel Corporation. All rights reserved.<BR>
|
|
#
|
|
# This program and the accompanying materials are licensed and made available
|
|
# under the terms and conditions of the BSD License which accompanies this
|
|
# distribution. The full text of the license may be found at
|
|
# http://opensource.org/licenses/bsd-license.php
|
|
#
|
|
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|
#
|
|
"""
|
|
Inventory workspace's distribution package information.
|
|
"""
|
|
##
|
|
# Import Modules
|
|
#
|
|
from sys import platform
|
|
from traceback import format_exc
|
|
from platform import python_version
|
|
|
|
from Logger import StringTable as ST
|
|
from Logger.ToolError import FatalError
|
|
from Logger.ToolError import ABORT_ERROR
|
|
from Logger.ToolError import CODE_ERROR
|
|
import Logger.Log as Logger
|
|
|
|
from Library import GlobalData
|
|
|
|
## InventoryDistInstalled
|
|
#
|
|
# This method retrieves the installed distribution information from the internal UPT database
|
|
#
|
|
# @param DataBase: the UPT database
|
|
#
|
|
def InventoryDistInstalled(DataBase):
|
|
DistInstalled = DataBase.InventoryDistInstalled()
|
|
|
|
#
|
|
# find the max length for each item
|
|
#
|
|
DpNameStr = "DpName"
|
|
DpGuidStr = "DpGuid"
|
|
DpVerStr = "DpVer"
|
|
DpOriginalNameStr = "DpOriginalName"
|
|
MaxGuidlen = len(DpGuidStr)
|
|
MaxVerlen = len(DpVerStr)
|
|
MaxDpAliasFileNameLen = len(DpNameStr)
|
|
MaxDpOrigFileNamelen = len(DpOriginalNameStr)
|
|
|
|
for (DpGuid, DpVersion, DpOriginalName, DpAliasFileName) in DistInstalled:
|
|
MaxGuidlen = max(MaxGuidlen, len(DpGuid))
|
|
MaxVerlen = max(MaxVerlen, len(DpVersion))
|
|
MaxDpAliasFileNameLen = max(MaxDpAliasFileNameLen, len(DpAliasFileName))
|
|
MaxDpOrigFileNamelen = max(MaxDpOrigFileNamelen, len(DpOriginalName))
|
|
|
|
OutMsgFmt = "%-*s\t%-*s\t%-*s\t%-s"
|
|
OutMsg = OutMsgFmt % (MaxDpAliasFileNameLen,
|
|
DpNameStr,
|
|
MaxGuidlen,
|
|
DpGuidStr,
|
|
MaxVerlen,
|
|
DpVerStr,
|
|
DpOriginalNameStr)
|
|
Logger.Info(OutMsg)
|
|
|
|
for (DpGuid, DpVersion, DpFileName, DpAliasFileName) in DistInstalled:
|
|
OutMsg = OutMsgFmt % (MaxDpAliasFileNameLen,
|
|
DpAliasFileName,
|
|
MaxGuidlen,
|
|
DpGuid,
|
|
MaxVerlen,
|
|
DpVersion,
|
|
DpFileName)
|
|
Logger.Info(OutMsg)
|
|
|
|
## Tool entrance method
|
|
#
|
|
# This method mainly dispatch specific methods per the command line options.
|
|
# If no error found, return zero value so the caller of this tool can know
|
|
# if it's executed successfully or not.
|
|
#
|
|
# @param Options: command Options
|
|
#
|
|
def Main(Options = None):
|
|
if Options:
|
|
pass
|
|
|
|
try:
|
|
DataBase = GlobalData.gDB
|
|
InventoryDistInstalled(DataBase)
|
|
ReturnCode = 0
|
|
except FatalError, XExcept:
|
|
ReturnCode = XExcept.args[0]
|
|
if Logger.GetLevel() <= Logger.DEBUG_9:
|
|
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
|
|
except KeyboardInterrupt:
|
|
ReturnCode = ABORT_ERROR
|
|
if Logger.GetLevel() <= Logger.DEBUG_9:
|
|
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
|
|
except:
|
|
ReturnCode = CODE_ERROR
|
|
Logger.Error("\nInventoryWs",
|
|
CODE_ERROR,
|
|
ST.ERR_UNKNOWN_FATAL_INVENTORYWS_ERR,
|
|
ExtraData=ST.MSG_SEARCH_FOR_HELP,
|
|
RaiseError=False
|
|
)
|
|
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(),
|
|
platform) + format_exc())
|
|
|
|
if ReturnCode == 0:
|
|
Logger.Quiet(ST.MSG_FINISH)
|
|
|
|
return ReturnCode |