forked from Arch666Angel/mods
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.py
More file actions
68 lines (51 loc) · 2.13 KB
/
build.py
File metadata and controls
68 lines (51 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import os, shutil, sys, getopt
import json
class ModBuilder:
def __init__(self):
self.modNames = [modName for modName in next(os.walk('.'))[1] if self.__isReleased(modName)]
self.modFolderDir = None
opts, args = getopt.getopt(sys.argv[1:], ":m:", ['dir='])
for opt, arg in opts:
if opt in ('-m', '--moddir'):
self.modFolderDir = os.path.realpath(arg.strip())
if self.modFolderDir == None:
self.modFolderDir = "{0}/Factorio/mods/".format(os.getenv('APPDATA'))
def __isReleased(self, modName):
if modName.find("angels") >= 0:
if modName.find("angelsaddons-") < 0:
return True # base mod
if modName.find("liquidrobot") >= 0:
return False # not released
return True # released addon
return False # not part of angels
def __getModVersion(self, modName):
with open("{0}/info.json".format(modName)) as modDataFile:
modData = json.load(modDataFile)
return modData['version']
def __deleteAllVersions(self, modName, deleteZip=True):
# deleting folders
folders = [folderName for folderName in next(os.walk(self.modFolderDir))[1] if folderName.find(modName) >= 0]
for folder in folders:
print(" Removing '{0}/'".format(folder))
shutil.rmtree(self.modFolderDir + folder)
# deleting zip folders
folders = [folderName for folderName in os.listdir(self.modFolderDir) if deleteZip and folderName.find(modName) >= 0 ]
for folder in folders:
print(" Removing '{0}'".format(folder))
os.remove(self.modFolderDir + folder)
def __createNewVersion(self, modName):
folder = "{0}_{1}/".format(modName, self.__getModVersion(modName))
print(" Creating '{0}'".format(folder))
src_dir = "./{0}".format(modName)
dst_dir = self.modFolderDir + folder
shutil.copytree(src_dir, dst_dir)
def createMod(self, modName):
print("Updating '{0}'".format(modName))
self.__deleteAllVersions(modName, True)
self.__createNewVersion(modName)
def createAllMods(self):
for modName in self.modNames:
self.createMod(modName)
if __name__ == "__main__":
mb = ModBuilder()
mb.createAllMods()