summaryrefslogtreecommitdiff
path: root/Tools/Python/EdkIIWorkspace.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/Python/EdkIIWorkspace.py')
-rwxr-xr-xTools/Python/EdkIIWorkspace.py148
1 files changed, 0 insertions, 148 deletions
diff --git a/Tools/Python/EdkIIWorkspace.py b/Tools/Python/EdkIIWorkspace.py
deleted file mode 100755
index 935ffadc09..0000000000
--- a/Tools/Python/EdkIIWorkspace.py
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env python
-
-# This is the base class for applications that operate on an EDK II Workspace
-
-import os, sys
-from XmlRoutines import *
-
-class EdkIIWorkspace:
- def __init__(self):
- """Collect WorkspaceDir from the environment, the Verbose command line flag, and detect an icon bitmap file."""
- if os.environ.get('WORKSPACE') == None:
- print 'ERROR: WORKSPACE not defined. Please run EdkSetup from the EDK II install directory.'
- return False
-
- self.WorkspaceDir = os.path.realpath(os.environ.get('WORKSPACE'))
- (Drive, Path) = os.path.splitdrive(self.WorkspaceDir)
- if Drive == '':
- (Drive, CwdPath) = os.path.splitdrive(os.getcwd())
- if Drive != '':
- self.WorkspaceDir = Drive + Path
- else:
- self.WorkspaceDir = Drive.upper() + Path
-
- try:
- self.Icon = wx.Icon(self.WorkspaceFile('tools/Python/TianoCoreOrgLogo.gif'),wx.BITMAP_TYPE_GIF)
- except:
- self.Icon = None
-
- self.Verbose = False
- for arg in sys.argv:
- if arg.lower() == '-v':
- self.Verbose = True
-
- return True
-
- def WorkspaceRelativePath(self, FileName):
- """Convert a full path filename to a workspace relative filename."""
- FileName = os.path.realpath(FileName)
- if FileName.find(self.WorkspaceDir) != 0:
- return ''
- return FileName.replace (self.WorkspaceDir, '').strip('\\').strip('/')
-
- def WorkspaceFile(self, FileName):
- """Convert a workspace relative filename to a full path filename."""
- return os.path.realpath(os.path.join(self.WorkspaceDir,FileName))
-
- def XmlParseFile (self, FileName):
- """Parse an XML file into a DOM and return the DOM."""
- if self.Verbose:
- print FileName
- return XmlParseFile (self.WorkspaceFile(FileName))
-
- def XmlParseFileSection (self, FileName, SectionTag):
- """Parse a section of an XML file into a DOM(Document Object Model) and return the DOM."""
- if self.Verbose:
- print FileName
- return XmlParseFileSection (self.WorkspaceFile(FileName), SectionTag)
-
- def XmlSaveFile (self, Dom, FileName):
- """Save a DOM(Document Object Model) into an XML file."""
- if self.Verbose:
- print FileName
- return XmlSaveFile (Dom, self.WorkspaceFile(FileName))
-
- def ConvertTextFileToDictionary(self, FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter):
- """Convert a workspace relative text file to a dictionary of (name:value) pairs."""
- if self.Verbose:
- print FileName
- return ConvertTextFileToDictionary(self.WorkspaceFile(FileName), Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter)
-
- def ConvertDictionaryToTextFile(self, FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter):
- """Convert a dictionary of (name:value) pairs to a workspace relative text file."""
- if self.Verbose:
- print FileName
- return ConvertDictionaryToTextFile(self.WorkspaceFile(FileName), Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter)
-
-#
-# Convert a text file to a dictionary
-#
-def ConvertTextFileToDictionary(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter):
- """Convert a text file to a dictionary of (name:value) pairs."""
- try:
- f = open(FileName,'r')
- except:
- return False
- Keys = []
- for Line in f:
- LineList = Line.split(KeySplitCharacter,1)
- if len(LineList) >= 2:
- Key = LineList[0].split()
- if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] not in Keys:
- if ValueSplitFlag:
- Dictionary[Key[0]] = LineList[1].replace('\\','/').split(ValueSplitCharacter)
- else:
- Dictionary[Key[0]] = LineList[1].strip().replace('\\','/')
- Keys += [Key[0]]
- f.close()
- return True
-
-def ConvertDictionaryToTextFile(FileName, Dictionary, CommentCharacter, KeySplitCharacter, ValueSplitFlag, ValueSplitCharacter):
- """Convert a dictionary of (name:value) pairs to a text file."""
- try:
- f = open(FileName,'r')
- Lines = []
- Lines = f.readlines()
- f.close()
- except:
- Lines = []
- Keys = Dictionary.keys()
- MaxLength = 0
- for Key in Keys:
- if len(Key) > MaxLength:
- MaxLength = len(Key)
- Index = 0
- for Line in Lines:
- LineList = Line.split(KeySplitCharacter,1)
- if len(LineList) >= 2:
- Key = LineList[0].split()
- if len(Key) == 1 and Key[0][0] != CommentCharacter and Key[0] in Dictionary:
- if ValueSplitFlag:
- Line = '%-*s %c %s\n' % (MaxLength, Key[0], KeySplitCharacter, ' '.join(Dictionary[Key[0]]))
- else:
- Line = '%-*s %c %s\n' % (MaxLength, Key[0], KeySplitCharacter, Dictionary[Key[0]])
- Lines.pop(Index)
- if Key[0] in Keys:
- Lines.insert(Index,Line)
- Keys.remove(Key[0])
- Index += 1
- for RemainingKey in Keys:
- if ValueSplitFlag:
- Line = '%-*s %c %s\n' % (MaxLength, RemainingKey, KeySplitCharacter,' '.join(Dictionary[RemainingKey]))
- else:
- Line = '%-*s %c %s\n' % (MaxLength, RemainingKey, KeySplitCharacter, Dictionary[RemainingKey])
- Lines.append(Line)
- try:
- f = open(FileName,'w')
- except:
- return False
- f.writelines(Lines)
- f.close()
- return True
-
-# This acts like the main() function for the script, unless it is 'import'ed into another
-# script.
-if __name__ == '__main__':
-
- # Nothing to do here. Could do some unit tests.
- pass