Hi,
here's the script which creates a folder-/symlink-structure in pol home directory. Unfortunately I noticed, that it did not create all folders and symlinks, so I will improve that soon.
Here's what I did so far:
#!/usr/bin/python
import os
import shutil
"""
WinePortEnvironment class which is able to create fake environments
which enable PlayOnLinux to run a wineprefix, which is placed in opt
"""
class WinePortEnvironment:
def __init__(self):
self.dictLinkPaths = {}
# initialize defaults
self.sCurrentPath = ""
self.sProgramOptPrefix = ""
self.sProgramOptPrefixConfig = ""
self.sProgramPolPrefix = ""
self.sHomeDir = os.environ['HOME']
def getHomeDir(self):
return self.sHomeDir
def getOptPrefix(self):
return self.sProgramOptPrefix
def getPolPrefix(self):
return self.sProgramPolPrefix
def setCreatePolBaseStructure(self):
try:
os.mkdir( self.sProgramPolPrefix )
except os.error, err:
pass
aPaths = []
for sRootDir, aSubFolders, aFiles in os.walk( self.sProgramOptPrefixConfig ):
for sFile in aFiles:
aPaths.append( sRootDir + "/" + sFile )
for sCopySource in aPaths:
sRelativePath = sCopySource.replace( self.sProgramOptPrefixConfig, "" )
sCopyTarget = self.sProgramPolPrefix + sRelativePath
shutil.copyfile( sCopySource, sCopyTarget )
#print "COPY " + sCopySource + " TO " + sCopyTarget
def setCreatePolFolderStructure(self):
if self.sProgramOptPrefix != "":
aPaths = self.walkThroughPath( self.sProgramOptPrefix, True, False )
for sPath in aPaths:
sHomePath = self.getHomePathOfOptPath( sPath )
try:
os.mkdir( sHomePath )
except os.error, err:
pass
def setCreatePolSymlinkStructure(self):
if self.sProgramOptPrefix != "":
aPaths = self.walkThroughPath( self.sProgramOptPrefix, False, True )
for sPath in aPaths:
sHomePath = self.getHomePathOfOptPath( sPath )
try:
os.symlink( sPath ,sHomePath )
# print sPath + " => " + sHomePath
except os.error, err:
pass
def getHomePathOfOptPath( self, sPath ):
sRelativePath = sPath.replace( self.sProgramOptPrefix, "" )
return self.sProgramPolPrefix + sRelativePath
def setProgramOptPrefix(self, sProgramOptPrefix):
self.sProgramOptPrefix = sProgramOptPrefix
def setProgramOptPrefixConfig(self, sProgramOptPrefixConfig):
self.sProgramOptPrefixConfig = sProgramOptPrefixConfig
def setProgramPolPrefix(self, sProgramPolPrefix):
self.sProgramPolPrefix = self.sHomeDir + "/.PlayOnLinux/wineprefix/" + sProgramPolPrefix
def walkThroughPath(self , sBasePath, blFolders = True, blFiles = True ):
aPaths = []
for sRootDir, aSubFolders, aFiles in os.walk( sBasePath ):
for sFolder in aSubFolders:
if blFolders == True:
aPaths.append( sRootDir )
for sFileName in aFiles:
if blFiles == True:
aPaths.append( sRootDir + "/" + sFileName )
return aPaths
# main
oWinePortEnvironment = WinePortEnvironment()
print "Instance created..."
oWinePortEnvironment.setProgramOptPrefix( "/opt/wineports/Mateso/PasswortSafeRepository/prefix" )
oWinePortEnvironment.setProgramOptPrefixConfig( "/opt/wineports/Mateso/PasswortSafeRepository/prefixconfig" )
oWinePortEnvironment.setProgramPolPrefix( "PasswortSafeRepository" )
print "Pathes assigned..."
oWinePortEnvironment.setCreatePolBaseStructure()
oWinePortEnvironment.setCreatePolFolderStructure()
oWinePortEnvironment.setCreatePolSymlinkStructure()
print "Environment created..."
Comparing proprietary software and open-source software means comparing marketing and evolution. Which one is lasting?