]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/UPT/InventoryWs.py
BaseTools:Update mailing list address in BaseTools error messages
[mirror_edk2.git] / BaseTools / Source / Python / UPT / InventoryWs.py
1 ## @file
2 # Inventory workspace's distribution package information.
3 #
4 # Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
5 #
6 # SPDX-License-Identifier: BSD-2-Clause-Patent
7 #
8 """
9 Inventory workspace's distribution package information.
10 """
11 ##
12 # Import Modules
13 #
14 from sys import platform
15 from traceback import format_exc
16 from platform import python_version
17
18 from Logger import StringTable as ST
19 from Logger.ToolError import FatalError
20 from Logger.ToolError import ABORT_ERROR
21 from Logger.ToolError import CODE_ERROR
22 import Logger.Log as Logger
23
24 from Library import GlobalData
25
26 ## InventoryDistInstalled
27 #
28 # This method retrieves the installed distribution information from the internal UPT database
29 #
30 # @param DataBase: the UPT database
31 #
32 def InventoryDistInstalled(DataBase):
33 DistInstalled = DataBase.InventoryDistInstalled()
34
35 #
36 # find the max length for each item
37 #
38 DpNameStr = "DpName"
39 DpGuidStr = "DpGuid"
40 DpVerStr = "DpVer"
41 DpOriginalNameStr = "DpOriginalName"
42 MaxGuidlen = len(DpGuidStr)
43 MaxVerlen = len(DpVerStr)
44 MaxDpAliasFileNameLen = len(DpNameStr)
45 MaxDpOrigFileNamelen = len(DpOriginalNameStr)
46
47 for (DpGuid, DpVersion, DpOriginalName, DpAliasFileName) in DistInstalled:
48 MaxGuidlen = max(MaxGuidlen, len(DpGuid))
49 MaxVerlen = max(MaxVerlen, len(DpVersion))
50 MaxDpAliasFileNameLen = max(MaxDpAliasFileNameLen, len(DpAliasFileName))
51 MaxDpOrigFileNamelen = max(MaxDpOrigFileNamelen, len(DpOriginalName))
52
53 OutMsgFmt = "%-*s\t%-*s\t%-*s\t%-s"
54 OutMsg = OutMsgFmt % (MaxDpAliasFileNameLen,
55 DpNameStr,
56 MaxGuidlen,
57 DpGuidStr,
58 MaxVerlen,
59 DpVerStr,
60 DpOriginalNameStr)
61 Logger.Info(OutMsg)
62
63 for (DpGuid, DpVersion, DpFileName, DpAliasFileName) in DistInstalled:
64 OutMsg = OutMsgFmt % (MaxDpAliasFileNameLen,
65 DpAliasFileName,
66 MaxGuidlen,
67 DpGuid,
68 MaxVerlen,
69 DpVersion,
70 DpFileName)
71 Logger.Info(OutMsg)
72
73 ## Tool entrance method
74 #
75 # This method mainly dispatch specific methods per the command line options.
76 # If no error found, return zero value so the caller of this tool can know
77 # if it's executed successfully or not.
78 #
79 # @param Options: command Options
80 #
81 def Main(Options = None):
82 if Options:
83 pass
84
85 try:
86 DataBase = GlobalData.gDB
87 InventoryDistInstalled(DataBase)
88 ReturnCode = 0
89 except FatalError as XExcept:
90 ReturnCode = XExcept.args[0]
91 if Logger.GetLevel() <= Logger.DEBUG_9:
92 Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
93 except KeyboardInterrupt:
94 ReturnCode = ABORT_ERROR
95 if Logger.GetLevel() <= Logger.DEBUG_9:
96 Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(), platform) + format_exc())
97 except:
98 ReturnCode = CODE_ERROR
99 Logger.Error("\nInventoryWs",
100 CODE_ERROR,
101 ST.ERR_UNKNOWN_FATAL_INVENTORYWS_ERR,
102 ExtraData=ST.MSG_SEARCH_FOR_HELP % ST.MSG_EDKII_MAIL_ADDR,
103 RaiseError=False
104 )
105 Logger.Quiet(ST.MSG_PYTHON_ON % (python_version(),
106 platform) + format_exc())
107
108 if ReturnCode == 0:
109 Logger.Quiet(ST.MSG_FINISH)
110
111 return ReturnCode