mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2024-11-28 12:25:19 +01:00
112 lines
3.6 KiB
Python
112 lines
3.6 KiB
Python
|
## @file
|
||
|
# Inventory workspace's distribution package information.
|
||
|
#
|
||
|
# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
|
||
|
#
|
||
|
# SPDX-License-Identifier: BSD-2-Clause-Patent
|
||
|
#
|
||
|
"""
|
||
|
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 as 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 % ST.MSG_EDKII_MAIL_ADDR,
|
||
|
RaiseError=False
|
||
|
)
|
||
|
Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(),
|
||
|
platform) + format_exc())
|
||
|
|
||
|
if ReturnCode == 0:
|
||
|
Logger.Quiet(ST.MSG_FINISH)
|
||
|
|
||
|
return ReturnCode
|