Skip to content

Commit ed96238

Browse files
committed
Add Android metadata generator
1 parent 631c531 commit ed96238

File tree

4 files changed

+55
-6
lines changed

4 files changed

+55
-6
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,4 @@ cython_debug/
160160
.idea/
161161

162162
# Metadata
163-
metadata.json
163+
*_metadata.json
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import os
2+
3+
os.environ[
4+
"JAVA_HOME"
5+
] = "/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home"
6+
7+
from jnius import autoclass
8+
import json
9+
10+
# Load the necessary Java classes using pyjnius
11+
ContextClass = autoclass("android.widget.Button")
12+
ModifierClass = autoclass("java.lang.reflect.Modifier")
13+
14+
15+
def extract(java_class):
16+
# Get all the methods of the Android class
17+
methods = java_class.getMethods()
18+
# Extract metadata for each method
19+
data = []
20+
for method in methods:
21+
method_name = method.getName()
22+
method_return_type = method.getReturnType().getSimpleName()
23+
method_parameters = method.getParameterTypes()
24+
method_parameter_types = [param.getSimpleName() for param in method_parameters]
25+
method_modifiers = ModifierClass.toString(method.getModifiers())
26+
method_metadata = {
27+
"Name": method_name,
28+
"ReturnType": method_return_type,
29+
"ParameterTypes": method_parameter_types,
30+
"Modifiers": method_modifiers,
31+
"Type": "Method", # since we're only dealing with methods here
32+
}
33+
data.append(method_metadata)
34+
return data
35+
36+
37+
def main():
38+
metadata = extract(ContextClass)
39+
# Save the extracted metadata
40+
with open("android_metadata.json", "w") as f:
41+
json.dump(metadata, f, indent=2)
42+
43+
44+
if __name__ == "__main__":
45+
main()

libs/metadata_generators/ios_metadata_generator.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ def extract(cursor):
3232

3333
def main():
3434
args = [
35-
"-x", "objective-c",
36-
"-arch", "arm64",
35+
"-x",
36+
"objective-c",
37+
"-arch",
38+
"arm64",
3739
"-fno-objc-arc",
3840
# "-fmodules",
3941
# "-fmodule-maps",
@@ -45,19 +47,19 @@ def main():
4547
"-I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/14.0.3/include",
4648
"-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include",
4749
"-I/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
48-
"-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks"
50+
"-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks",
4951
]
5052
tu = index.parse(
5153
"/Applications/Xcode.app/Contents/Developer/Platforms/"
5254
"iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/"
5355
"Library/Frameworks/UIKit.framework/Headers/UIKit.h",
54-
args
56+
args,
5557
)
5658
print(f"Translation unit: {tu.spelling}")
5759
for diag in tu.diagnostics:
5860
print(diag)
5961
metadata = extract(tu.cursor)
60-
with open("metadata.json", "w") as f:
62+
with open("ios_metadata.json", "w") as f:
6163
json.dump(metadata, f, indent=2)
6264

6365

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ click==8.1.3
1212
contourpy==1.0.7
1313
cookiecutter==2.1.1
1414
cycler==0.11.0
15+
Cython==0.29.35
1516
Django==4.2.1
1617
dmgbuild==1.6.1
1718
ds-store==1.3.1
@@ -22,6 +23,7 @@ idna==3.4
2223
iniconfig==2.0.0
2324
Jinja2==3.1.2
2425
jinja2-time==0.2.0
26+
jnius==1.1.0
2527
kiwisolver==1.4.4
2628
mac-alias==2.2.2
2729
markdown-it-py==2.2.0

0 commit comments

Comments
 (0)