opus-nt/convert-to-local.py

68 lines
2.4 KiB
Python

import os
import shutil
sp = os.path.dirname(os.path.realpath(__file__))
p = os.path.join
regRep = "HKEY_LOCAL_MACHINE\\OPUS-NT_TMP"
def walklevel(some_dir, level=0):
some_dir = some_dir.rstrip(os.path.sep)
assert os.path.isdir(some_dir)
num_sep = some_dir.count(os.path.sep)
for root, dirs, files in os.walk(some_dir):
yield root, dirs, files
num_sep_this = root.count(os.path.sep)
if num_sep + level <= num_sep_this:
del dirs[:]
def convertFolder(dirIn):
# loop: tweaks
for tweakRoot,tweaks,_ in walklevel(dirIn):
for tweak in tweaks:
fullTweak = p(tweakRoot,tweak)
# loop: tweak types
for tweakTypeRoot,tweakTypes,_ in walklevel(fullTweak):
for tweakType in tweakTypes:
fullTweakType = p(tweakTypeRoot,tweakType)
# reg files
if tweakType.lower() == "reg":
for regTypeRoot,regTypes,_ in walklevel(fullTweakType):
for regType in regTypes:
fullRegType = p(regTypeRoot,regType)
for regRoot,_,regFiles in walklevel(fullRegType):
for regFile in regFiles:
fullReg = p(regRoot,regFile)
fullRegOut = fullReg.replace(dirIn,dirIn + " - converted")
fullRegOutDir = os.path.dirname(fullRegOut)
if not os.path.isdir(fullRegOutDir): os.makedirs(fullRegOutDir)
regFh = open(fullReg,"r")
regText = regFh.read()
regFh.close()
replaceWith = regRep
if regType.lower() == "software": replaceWith = "HKEY_LOCAL_MACHINE\\SOFTWARE"
if regType.lower() == "system": replaceWith = "HKEY_LOCAL_MACHINE\\SYSTEM"
if regType.lower() == "ntuser":
regFhOut = open(fullRegOut+ ".defaultUser" + ".reg","w",encoding="utf-8")
regFhOut.write(regText.replace(regRep,"HKEY_USERS\\.DEFAULT"))
regFhOut.close()
replaceWith = "HKEY_CURRENT_USER"
regTextOld = regText
regText = regText.replace(regRep,replaceWith)
if regText == regTextOld:
print("warning, " +tweak+ "/" +regType+ "/" +regFile+ ": not modified")
regFhOut = open(fullRegOut,"w",encoding="utf-8")
regFhOut.write(regText)
regFhOut.close()
if tweakType.lower() == "wim":
shutil.copytree(fullTweakType,fullTweakType.replace(dirIn,dirIn + " - converted"))
convertFolder(p(sp,"tweaks"))
convertFolder(p(sp,"tweaksReversal"))