Skip to content

Commit 545199f

Browse files
committed
add argparse for builtin generators
1 parent 32a2e79 commit 545199f

File tree

3 files changed

+56
-30
lines changed

3 files changed

+56
-30
lines changed

src/nbl/builtin/builtinDataGen.py

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
# Creates a c++ file for builtin resources that contains binary data of all resources
22

3-
# TODO: use argparse not this by-hand-shit
4-
5-
import sys, os, subprocess, json
3+
import argparse, os, subprocess, json
64
from datetime import datetime, timezone
75

8-
if len(sys.argv) < 8 :
9-
print(sys.argv[0] + " - Incorrect argument count")
10-
else:
11-
outputBuiltinPath = sys.argv[1]
12-
outputArchivePath = sys.argv[2]
13-
bundleAbsoluteEntryPath = sys.argv[3]
14-
resourcesFile = sys.argv[4]
15-
resourcesNamespace = sys.argv[5]
16-
correspondingHeaderFile = sys.argv[6]
17-
xxHash256Exe = sys.argv[7]
6+
7+
parser = argparse.ArgumentParser(description="Creates a c++ file for builtin resources that contains binary data of all resources")
8+
parser.add_argument('--outputBuiltinPath', required=True, help="output path of generated C++ builtin data source")
9+
parser.add_argument('--outputArchivePath', required=True, help="output path of generated C++ archive data source")
10+
parser.add_argument('--bundleAbsoluteEntryPath', required=True, help="\"absolute path\" for an archive which will store a given bundle of builtin resources")
11+
parser.add_argument('--resourcesFile', required=True, help="path to file containing resources list")
12+
parser.add_argument('--resourcesNamespace', required=True, help="a C++ namespace builtin resources will be wrapped into")
13+
parser.add_argument('--correspondingHeaderFile', required=True, help="filename of previosly generated header (via buitinHeaderGen.py)")
14+
parser.add_argument('--xxHash256Exe', default="", nargs='?', help="path to xxHash256 executable")
15+
16+
def execute(args):
17+
outputBuiltinPath = args.outputBuiltinPath
18+
outputArchivePath = args.outputArchivePath
19+
bundleAbsoluteEntryPath = args.bundleAbsoluteEntryPath
20+
resourcesFile = args.resourcesFile
21+
resourcesNamespace = args.resourcesNamespace
22+
correspondingHeaderFile = args.correspondingHeaderFile
23+
xxHash256Exe = args.xxHash256Exe
1824

1925
forceConstexprHash = True if not xxHash256Exe else False
2026

@@ -196,4 +202,9 @@
196202

197203
outp = open(outputArchivePath, "w+")
198204
outp.write(archiveSource)
199-
outp.close()
205+
outp.close()
206+
207+
208+
if __name__ == "__main__":
209+
args: argparse.Namespace = parser.parse_args()
210+
execute(args)

src/nbl/builtin/builtinHeaderGen.py

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,25 @@
11
# Creates a header file for builtin resources
22

3-
# TODO: use argparse not this by-hand-shit
4-
5-
import sys, os
6-
7-
if len(sys.argv) < 8 :
8-
print(sys.argv[0] + " - Incorrect argument count")
9-
else:
10-
outputBuiltinPath = sys.argv[1]
11-
outputArchivePath = sys.argv[2]
12-
archiveBundlePath = sys.argv[3]
13-
resourcesFile = sys.argv[4]
14-
resourcesNamespace = sys.argv[5]
15-
guardSuffix = sys.argv[6]
16-
isSharedLibrary = True if sys.argv[7] == "True" else False
3+
import argparse, sys, os
4+
5+
6+
parser = argparse.ArgumentParser(description="Creates a c++ file for builtin resources that contains binary data of all resources")
7+
parser.add_argument('--outputBuiltinPath', required=True, help="output path of generated C++ builtin header source")
8+
parser.add_argument('--outputArchivePath', required=True, help="output path of generated C++ archive header source")
9+
parser.add_argument('--archiveBundlePath', required=True, help="path for an archive which will store a given bundle of builtin resources")
10+
parser.add_argument('--resourcesFile', required=True, help="path for a file which containins list of resources")
11+
parser.add_argument('--resourcesNamespace', required=True, help="a C++ namespace builtin resources will be wrapped into")
12+
parser.add_argument('--guardSuffix', required=True, help="include guard suffix name, for C header files")
13+
parser.add_argument('--isSharedLibrary', required=True, choices=["True", "False"])
14+
15+
def execute(args):
16+
outputBuiltinPath = args.outputBuiltinPath
17+
outputArchivePath = args.outputArchivePath
18+
archiveBundlePath = args.archiveBundlePath
19+
resourcesFile = args.resourcesFile
20+
resourcesNamespace = args.resourcesNamespace
21+
guardSuffix = args.guardSuffix
22+
isSharedLibrary = True if args.isSharedLibrary == "True" else False
1723

1824
NBL_BR_API = "NBL_BR_API" if isSharedLibrary else ""
1925

@@ -134,3 +140,7 @@ class {NBL_BR_API} CArchive final : public nbl::system::CFileArchive
134140
outp = open(outputArchivePath, "w+")
135141
outp.write(archiveHeader)
136142
outp.close()
143+
144+
if __name__ == "__main__":
145+
args: argparse.Namespace = parser.parse_args()
146+
execute(args)

src/nbl/builtin/utils.cmake

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,14 @@ function(ADD_CUSTOM_BUILTIN_RESOURCES _TARGET_NAME_ _BUNDLE_NAME_ _BUNDLE_SEARCH
133133
set(_NBL_BR_RUNTIME_HASH_ 1)
134134
endif()
135135

136+
set(NBL_BUILTIN_RESOURCES_COMMON_ARGS
137+
--resourcesFile "${NBL_RESOURCES_LIST_FILE}"
138+
--resourcesNamespace "${_NAMESPACE_}"
139+
)
140+
136141
add_custom_command(OUTPUT "${NBL_BUILTIN_RESOURCES_H}" "${NBL_BUILTIN_RESOURCE_DATA_CPP}" "${NBL_BUILTIN_DATA_ARCHIVE_H}" "${NBL_BUILTIN_DATA_ARCHIVE_CPP}"
137-
COMMAND "${_Python3_EXECUTABLE}" "${NBL_BUILTIN_HEADER_GEN_PY}" "${NBL_BUILTIN_RESOURCES_H}" "${NBL_BUILTIN_DATA_ARCHIVE_H}" "${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_}" "${NBL_RESOURCES_LIST_FILE}" "${_NAMESPACE_}" "${_GUARD_SUFFIX_}" "${_SHARED_}"
138-
COMMAND "${_Python3_EXECUTABLE}" "${NBL_BUILTIN_DATA_GEN_PY}" "${NBL_BUILTIN_RESOURCE_DATA_CPP}" "${NBL_BUILTIN_DATA_ARCHIVE_CPP}" "${_BUNDLE_SEARCH_DIRECTORY_}/${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_}" "${NBL_RESOURCES_LIST_FILE}" "${_NAMESPACE_}" "${NBL_BS_HEADER_FILENAME}" "$<${_NBL_BR_RUNTIME_HASH_}:$<TARGET_FILE:xxHash256>>"
142+
COMMAND "${_Python3_EXECUTABLE}" "${NBL_BUILTIN_HEADER_GEN_PY}" ${NBL_BUILTIN_RESOURCES_COMMON_ARGS} --outputBuiltinPath "${NBL_BUILTIN_RESOURCES_H}" --outputArchivePath "${NBL_BUILTIN_DATA_ARCHIVE_H}" --archiveBundlePath "${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_}" --guardSuffix "${_GUARD_SUFFIX_}" --isSharedLibrary "${_SHARED_}"
143+
COMMAND "${_Python3_EXECUTABLE}" "${NBL_BUILTIN_DATA_GEN_PY}" ${NBL_BUILTIN_RESOURCES_COMMON_ARGS} --outputBuiltinPath "${NBL_BUILTIN_RESOURCE_DATA_CPP}" --outputArchivePath "${NBL_BUILTIN_DATA_ARCHIVE_CPP}" --bundleAbsoluteEntryPath "${_BUNDLE_SEARCH_DIRECTORY_}/${_BUNDLE_ARCHIVE_ABSOLUTE_PATH_}" --correspondingHeaderFile "${NBL_BS_HEADER_FILENAME}" --xxHash256Exe "$<${_NBL_BR_RUNTIME_HASH_}:$<TARGET_FILE:xxHash256>>"
139144
COMMENT "Generating \"${_TARGET_NAME_}\"'s sources & headers"
140145
DEPENDS ${NBL_DEPENDENCY_FILES}
141146
VERBATIM

0 commit comments

Comments
 (0)