Skip to content

Commit 87ce552

Browse files
committed
multiple changes
1 parent d769453 commit 87ce552

8 files changed

Lines changed: 133 additions & 101 deletions

File tree

builder-tool/pack.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class Builder(BaseBuilder):
55
def Setup(self):
6-
self.addDirectory('src')
6+
self.addDirectory('src', 'src/builderTool')
77
self.addAndReplaceByPackageVersion('pyproject.toml')
88
self.addAndReplaceByPackageVersion('readme.md')
99
self.runCommand(f'{PYTHON} -m pip install --upgrade build')

builder-tool/src/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .builderTool import BaseBuilder, PYTHON, NULL_TARGET

builder-tool/src/builderTool.py

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -158,32 +158,42 @@ def addAndReplaceByPackageVersion(self, src, dest = None, versionString = "{vers
158158
file.write(content)
159159
return True
160160

161-
def runCommand(self, command) -> bool:
161+
def runCommand(self, command, hideOutput = True) -> bool:
162162
"""Execute a command in the temporary directory"""
163163
Logger.debug(f'Executing command {command}\n working directory: {self.tempDir}')
164-
stdoutFile, stdoutPath = mkstemp()
165-
stderrFile, stderrPath = mkstemp()
164+
if hideOutput:
165+
stdoutFile, stdoutPath = mkstemp()
166+
stderrFile, stderrPath = mkstemp()
166167

167-
cwd = os.getcwd()
168-
os.chdir(self.tempDir)
169-
returnCode = os.system(f'{command} > {stdoutPath} 2> {stderrPath}')
170-
os.chdir(cwd)
171-
172-
if returnCode != 0:
173-
Logger.error(f'Task failed with return code {returnCode}')
174-
with open(stdoutPath, 'r') as file:
175-
Logger.debug('stdout:\n' + file.read())
176-
with open(stderrPath, 'r') as file:
177-
Logger.debug('stderr:\n' + file.read())
168+
cwd = os.getcwd()
169+
os.chdir(self.tempDir)
170+
returnCode = os.system(f'{command} > {stdoutPath} 2> {stderrPath}')
171+
os.chdir(cwd)
172+
173+
if returnCode != 0:
174+
Logger.error(f'Task failed with return code {returnCode}')
175+
with open(stdoutPath, 'r') as file:
176+
Logger.debug('stdout:\n' + file.read())
177+
with open(stderrPath, 'r') as file:
178+
Logger.debug('stderr:\n' + file.read())
179+
180+
os.remove(stdoutPath)
181+
os.remove(stderrPath)
182+
raise RuntimeError('Command failed')
183+
else:
184+
Logger.debug('Command executed successfully')
185+
os.remove(stdoutPath)
186+
os.remove(stderrPath)
187+
return True
178188

179-
os.remove(stdoutPath)
180-
os.remove(stderrPath)
181-
raise RuntimeError('Command failed')
182189
else:
183-
Logger.debug('Command executed successfully')
184-
os.remove(stdoutPath)
185-
os.remove(stderrPath)
186-
return True
190+
returnCode = os.system(f'{command}')
191+
if returnCode != 0:
192+
Logger.error(f'Task failed with return code {returnCode}')
193+
raise RuntimeError('Command failed')
194+
else:
195+
Logger.debug('Command executed successfully')
196+
return True
187197

188198

189199
def addFile(self, path, dest = None):

create-module/pack.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
class Builder(BaseBuilder):
55
def Setup(self):
6-
self.addDirectory('src')
6+
self.addDirectory('src', 'src/createModule')
77
self.addAndReplaceByPackageVersion('pyproject.toml')
88
self.runCommand(f'{PYTHON} -m pip install --upgrade build')
99

create-module/src/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .main import Archive

create-module/src/__main__.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import argparse
2+
from .main import Archive
3+
from .customTypes import Version, ModuleTypes
4+
from gamuLogger import Logger, error, info, critical, LEVELS
5+
6+
def handleParserError(message):
7+
error(message)
8+
raise ValueError("Invalid arguments")
9+
10+
def createParser():
11+
parser = argparse.ArgumentParser(description="Create a module archive")
12+
parser.error = handleParserError
13+
parser.add_argument("compiled_code_folder", help="The compiled code folder (dist folder for javascript)")
14+
parser.add_argument("module_name", help="The module name")
15+
parser.add_argument("module_version", help="The module version")
16+
parser.add_argument("module_type", help="The module type")
17+
parser.add_argument("module_description", help="The module description")
18+
parser.add_argument("module_author", help="The module author")
19+
parser.add_argument("--branch", help="The branch of the repository", default="main")
20+
parser.add_argument("--debug", "-d", help="Enable debug mode", action="store_true")
21+
return parser
22+
23+
Logger.setModule("createModule")
24+
25+
info("Starting module creation")
26+
27+
try:
28+
parser = createParser()
29+
args = parser.parse_args()
30+
31+
if args.debug:
32+
Logger.setLevel("stdout", LEVELS.DEBUG)
33+
34+
module_version = Version.fromString(args.module_version)
35+
module_type = ModuleTypes.fromString(args.module_type)
36+
37+
info(f"Creating archive for module {args.module_name} version {module_version}")
38+
39+
archive = Archive(args.compiled_code_folder, args.module_name, module_version, module_type, args.module_description, args.module_author, args.branch)
40+
archive.create()
41+
42+
except Exception as e:
43+
critical(f"Error creating module: {str(e)}")
44+
exit(1)
45+
46+
info(f"Archive created: {archive}")
47+
exit(0)

create-module/src/main.py

Lines changed: 38 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -7,84 +7,44 @@
77

88
from gamuLogger import debug, info, error, critical, Logger, LEVELS
99

10-
def parseModuleNames(module_name: str):
11-
# GamuNetwork/ModuleName -> ModuleName
12-
return module_name.replace("\\", "/").split("/")[-1]
13-
14-
def createJson(module_name, module_version : Version, module_type : ModuleTypes, module_description, module_author, branch = "main"):
15-
debug(f"Creating json file for module {module_name} version {module_version}")
16-
module = {
17-
"name": module_name,
18-
"version": str(module_version),
19-
"type": str(module_type),
20-
"description": module_description,
21-
"author": module_author,
22-
"created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
23-
"repository": f"https://github.com/GamuNetwork/{module_name}",
24-
"branch": branch
25-
}
26-
result = json.dumps(module, indent=4)
27-
debug(f"Json file created: {result}")
28-
return result
29-
30-
def addFolderToZip(zip: ZipFile, arc_path, folder, parent_folder = ""):
31-
debug(f"Adding folder {folder} to zip")
32-
for file in os.listdir(folder):
33-
file_path = os.path.join(folder, file)
34-
if os.path.isfile(file_path):
35-
debug(f"Adding file {file} to zip")
36-
zip.write(file_path, os.path.join(arc_path, parent_folder, file))
37-
elif os.path.isdir(file_path):
38-
addFolderToZip(zip, arc_path, file_path, os.path.join(parent_folder, file))
39-
40-
def createArchive(compiled_code_folder, module_name, module_version : Version, module_type : ModuleTypes, module_description, module_author, branch = "main"):
41-
with ZipFile(f'{module_name}-{str(module_version)}.gamod', 'w') as zip:
42-
addFolderToZip(zip, "build", compiled_code_folder)
43-
debug(f"Compiled code folder added to archive")
44-
zip.writestr('module.json', createJson(module_name, module_version, module_type, module_description, module_author, branch))
45-
debug(f"Json file added to archive")
46-
47-
return f'{module_name}-{str(module_version)}.gamod'
48-
49-
if __name__ == "__main__":
50-
import argparse
51-
52-
def handleParserError(message):
53-
error(message)
54-
raise ValueError("Invalid arguments")
55-
56-
def createParser():
57-
parser = argparse.ArgumentParser(description="Create a module archive")
58-
parser.error = handleParserError
59-
parser.add_argument("compiled_code_folder", help="The compiled code folder (dist folder for javascript)")
60-
parser.add_argument("module_name", help="The module name")
61-
parser.add_argument("module_version", help="The module version")
62-
parser.add_argument("module_type", help="The module type")
63-
parser.add_argument("module_description", help="The module description")
64-
parser.add_argument("module_author", help="The module author")
65-
parser.add_argument("--branch", help="The branch of the repository", default="main")
66-
parser.add_argument("--debug", "-d", help="Enable debug mode", action="store_true")
67-
return parser
68-
69-
info("Starting module creation")
70-
71-
try:
72-
parser = createParser()
73-
args = parser.parse_args()
10+
from .utils import addFolderToZip
11+
12+
class Archive:
13+
def __init__(self, compiled_code_folder, module_name, module_version : Version, module_type : ModuleTypes, module_description, module_author, branch = "main"):
14+
self.compiled_code_folder = compiled_code_folder
15+
self.module_name = module_name
16+
self.module_version = module_version
17+
self.module_type = module_type
18+
self.module_description = module_description
19+
self.module_author = module_author
20+
self.branch = branch
7421

75-
if args.debug:
76-
Logger.setLevel("stdout", LEVELS.DEBUG)
22+
self.archiveName = f'{self.module_name}-{str(self.module_version)}.gamod'
7723

78-
module_version = Version.fromString(args.module_version)
79-
module_type = ModuleTypes.fromString(args.module_type)
80-
81-
info(f"Creating archive for module {args.module_name} version {module_version}")
24+
def create(self):
25+
self.zipFile = ZipFile(self.archiveName, 'w')
26+
self.__addCode()
27+
self.__createJson()
8228

83-
createArchive(args.compiled_code_folder, parseModuleNames(args.module_name), module_version, module_type, args.module_description, args.module_author, args.branch)
84-
85-
except Exception as e:
86-
critical(f"Error creating module: {str(e)}")
87-
exit(1)
88-
89-
info(f"Archive created: {args.module_name}-{str(module_version)}.gamod")
90-
exit(0)
29+
def __addCode(self):
30+
debug(f"Adding code from {self.compiled_code_folder} to zip")
31+
addFolderToZip(self.zipFile, "build", self.compiled_code_folder)
32+
33+
def __createJson(self):
34+
debug(f"Creating json file for module {self.module_name} version {self.module_version}")
35+
module = {
36+
"name": self.module_name,
37+
"version": str(self.module_version),
38+
"type": str(self.module_type),
39+
"description": self.module_description,
40+
"author": self.module_author,
41+
"created_at": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
42+
"repository": f"https://github.com/GamuNetwork/{self.module_name}",
43+
"branch": self.branch
44+
}
45+
result = json.dumps(module, indent=4)
46+
debug(f"Json file created: {result}")
47+
self.zipFile.writestr('module.json', result)
48+
49+
def __str__(self):
50+
return self.archiveName

create-module/src/utils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from zipfile import ZipFile
2+
from gamuLogger import debug
3+
import os
4+
5+
def addFolderToZip(zip: ZipFile, arc_path, folder, parent_folder = ""):
6+
debug(f"Adding folder {folder} to zip")
7+
for file in os.listdir(folder):
8+
file_path = os.path.join(folder, file)
9+
if os.path.isfile(file_path):
10+
debug(f"Adding file {file} to zip")
11+
zip.write(file_path, os.path.join(arc_path, parent_folder, file))
12+
elif os.path.isdir(file_path):
13+
addFolderToZip(zip, arc_path, file_path, os.path.join(parent_folder, file))

0 commit comments

Comments
 (0)