summaryrefslogtreecommitdiffstats
path: root/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/InventoryWs.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/InventoryWs.py')
-rwxr-xr-xsrc/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/InventoryWs.py111
1 files changed, 111 insertions, 0 deletions
diff --git a/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/InventoryWs.py b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/InventoryWs.py
new file mode 100755
index 00000000..262c6af5
--- /dev/null
+++ b/src/VBox/Devices/EFI/Firmware/BaseTools/Source/Python/UPT/InventoryWs.py
@@ -0,0 +1,111 @@
+## @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