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
69
70
71
72
73
74
75
76
77
78
|
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
import os, json, sys
def create_directory_structure(base_path, project_name):
# Define the directory structure
structure = {
project_name: {
"dist": {
".keep": None
},
"src": {
".keep": None,
"CommandLine.cc": None,
},
"vendor": {
".keep": None
},
".keep": None,
f"{project_name}.json": {}
}
}
def create_structure(path, structure):
for name, content in structure.items():
current_path = os.path.join(path, name)
# Create directories or files based on the content type
if isinstance(content, dict) and current_path.endswith(".json") == False:
os.makedirs(current_path, exist_ok=True)
create_structure(current_path, content)
elif content is None:
# Create an empty file
with open(current_path, 'w') as f:
pass
# Create the base directory
os.makedirs(base_path, exist_ok=True)
create_structure(base_path, structure)
# Create the JSON file
proj_json_path = os.path.join(base_path, project_name, f"{project_name}.json")
manifest = {
"compiler_path": "clang++",
"compiler_std": "c++20",
"headers_path": ["./", "../../../src/kernel", "../../../public/frameworks/", "../../../src/", "./"],
"sources_path": [
],
"output_name": f"./dist/{project_name}",
"cpp_macros": [
"kSampleFWVersion=0x0100",
"kSampleFWVersionHighest=0x0100",
"kSampleFWVersionLowest=0x0100",
"__NE_SDK__"
]
}
with open(proj_json_path, 'w') as json_file:
json.dump(manifest, json_file, indent=4)
proj_cpp_path = os.path.join(base_path, project_name, f"src/CommandLine.cc")
cpp_file = "#include <libSystem/SystemKit/System.h>\n\nSInt32 _NeMain(SInt32 argc, Char* argv[]) {\n\treturn EXIT_FAILURE;\n}"
with open(proj_cpp_path, 'w') as cpp_file_io:
cpp_file_io.write(cpp_file)
if __name__ == "__main__":
if len(sys.argv) != 2:
print("HELP: mkapp.py <project_name>")
sys.exit(os.EX_CONFIG)
base_path = os.getcwd() # Use the current working directory as the base path
create_directory_structure(base_path, sys.argv[1])
print("INFO: Application created successfully.")
|