2 # Inventory workspace's distribution package information.
4 # Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
6 # SPDX-License-Identifier: BSD-2-Clause-Patent
9 Inventory workspace's distribution package information.
14 from sys
import platform
15 from traceback
import format_exc
16 from platform
import python_version
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
24 from Library
import GlobalData
26 ## InventoryDistInstalled
28 # This method retrieves the installed distribution information from the internal UPT database
30 # @param DataBase: the UPT database
32 def InventoryDistInstalled(DataBase
):
33 DistInstalled
= DataBase
.InventoryDistInstalled()
36 # find the max length for each item
41 DpOriginalNameStr
= "DpOriginalName"
42 MaxGuidlen
= len(DpGuidStr
)
43 MaxVerlen
= len(DpVerStr
)
44 MaxDpAliasFileNameLen
= len(DpNameStr
)
45 MaxDpOrigFileNamelen
= len(DpOriginalNameStr
)
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
))
53 OutMsgFmt
= "%-*s\t%-*s\t%-*s\t%-s"
54 OutMsg
= OutMsgFmt
% (MaxDpAliasFileNameLen
,
63 for (DpGuid
, DpVersion
, DpFileName
, DpAliasFileName
) in DistInstalled
:
64 OutMsg
= OutMsgFmt
% (MaxDpAliasFileNameLen
,
73 ## Tool entrance method
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.
79 # @param Options: command Options
81 def Main(Options
= None):
86 DataBase
= GlobalData
.gDB
87 InventoryDistInstalled(DataBase
)
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())
98 ReturnCode
= CODE_ERROR
99 Logger
.Error("\nInventoryWs",
101 ST
.ERR_UNKNOWN_FATAL_INVENTORYWS_ERR
,
102 ExtraData
=ST
.MSG_SEARCH_FOR_HELP
% ST
.MSG_EDKII_MAIL_ADDR
,
105 Logger
.Quiet(ST
.MSG_PYTHON_ON
% (python_version(),
106 platform
) + format_exc())
109 Logger
.Quiet(ST
.MSG_FINISH
)