@@ -18,77 +18,106 @@ import java.io.FileOutputStream
18
18
fun generateEntryUsingClassGraph (
19
19
settings : Settings ,
20
20
logger : Logger ,
21
- files : Set <File >
21
+ runtimeClassPathFiles : Set <File >
22
22
) {
23
23
val scanResult = ClassGraph ()
24
- .overrideClasspath(files )
24
+ .overrideClasspath(runtimeClassPathFiles )
25
25
.enableAllInfo()
26
26
.enableSystemJarsAndModules()
27
27
.scan()
28
28
Context .scanResult = scanResult
29
29
scanResult
30
30
.use {
31
- with (it) {
32
- RegisteredClassMetadataContainerDatabase .populateDependencies(it)
31
+ RegisteredClassMetadataContainerDatabase .populateDependencies(it)
33
32
34
- val classes = it.allClasses
35
- .filter { clazz ->
36
- clazz.extendsSuperclass(KtObject ::class .java)
37
- && ! clazz.hasAnnotation(GodotBaseType ::class .java)
38
- }
39
- .filter { classInfo -> ! RegisteredClassMetadataContainerDatabase .dependenciesContainsFqdn(classInfo.name) }
40
- .map { classInfo ->
41
- classInfo.mapToClazz(settings)
42
- }
33
+ val classes = it.allClasses
34
+ .filter { clazz ->
35
+ clazz.extendsSuperclass(KtObject ::class .java)
36
+ && ! clazz.hasAnnotation(GodotBaseType ::class .java)
37
+ }
38
+ .filter { classInfo -> ! RegisteredClassMetadataContainerDatabase .dependenciesContainsFqdn(classInfo.name) }
39
+ .map { classInfo ->
40
+ classInfo.mapToClazz(settings)
41
+ }
43
42
44
- val registeredClasses = classes.filterIsInstance<RegisteredClass >().distinctBy { clazz -> clazz.fqName }
45
-
46
- RegisteredClassMetadataContainerDatabase .populateCurrentProject(registeredClasses, settings)
47
-
48
- val existingRegistrationFiles = settings.projectBaseDir.provideExistingRegistrationFiles()
49
-
50
- EntryGenerator .generateEntryFilesUsingRegisteredClasses(
51
- projectName = settings.projectName,
52
- projectDir = settings.projectBaseDir.absolutePath,
53
- registeredClasses = registeredClasses,
54
- logger = LoggerWrapper (logger),
55
- jvmTypeFqNamesProvider = DefaultJvmTypeProvider (),
56
- compilationTimeRelativeRegistrationFilePathProvider = {registeredClass ->
57
- val registrationFile = existingRegistrationFiles[" ${registeredClass.registeredName} .${FileExtensions .GodotKotlinJvm .registrationFile} " ]
58
- ?.relativeTo(settings.projectBaseDir)
59
- ? : File (
60
- registeredClass.provideRegistrationFilePathForInitialGeneration(
61
- isRegistrationFileHierarchyEnabled = settings.isRegistrationFileHierarchyEnabled,
62
- compilationProjectName = settings.projectName,
63
- classProjectName = settings.projectName, // same as project name as no registration file exists for this class, hence it is new / renamed
64
- registrationFileOutDir = settings.registrationBaseDirPathRelativeToProjectDir
65
- )
43
+ val registeredClasses = classes.filterIsInstance<RegisteredClass >().distinctBy { clazz -> clazz.fqName }
44
+
45
+ RegisteredClassMetadataContainerDatabase .populateCurrentProject(registeredClasses, settings)
46
+
47
+ val existingRegistrationFiles = settings.projectBaseDir.provideExistingRegistrationFiles()
48
+
49
+ EntryGenerator .generateEntryFilesUsingRegisteredClasses(
50
+ projectName = settings.projectName,
51
+ projectDir = settings.projectBaseDir.absolutePath,
52
+ registeredClasses = registeredClasses,
53
+ logger = LoggerWrapper (logger),
54
+ jvmTypeFqNamesProvider = DefaultJvmTypeProvider (),
55
+ compilationTimeRelativeRegistrationFilePathProvider = {registeredClass ->
56
+ val registrationFile = existingRegistrationFiles[" ${registeredClass.registeredName} .${FileExtensions .GodotKotlinJvm .registrationFile} " ]
57
+ ?.relativeTo(settings.projectBaseDir)
58
+ ? : File (
59
+ registeredClass.provideRegistrationFilePathForInitialGeneration(
60
+ isRegistrationFileHierarchyEnabled = settings.isRegistrationFileHierarchyEnabled,
61
+ compilationProjectName = settings.projectName,
62
+ classProjectName = settings.projectName, // same as project name as no registration file exists for this class, hence it is new / renamed
63
+ registrationFileOutDir = settings.registrationBaseDirPathRelativeToProjectDir
66
64
)
65
+ )
66
+
67
+ registrationFile.invariantSeparatorsPath
68
+ },
69
+ classRegistrarAppendableProvider = { registeredClass ->
70
+ val file = settings.generatedSourceRootDir
71
+ .resolve(" main" )
72
+ .resolve(" kotlin" )
73
+ .resolve(" godot" )
74
+ .resolve(" entry" )
75
+ .resolve(" ${registeredClass.registeredName} Registrar.kt" )
76
+
77
+ file.parentFile.mkdirs()
78
+
79
+ if (! file.exists()) {
80
+ file.createNewFile()
81
+ }
67
82
68
- registrationFile.invariantSeparatorsPath
69
- },
70
- classRegistrarAppendableProvider = { registeredClass ->
71
- val file = settings.generatedSourceRootDir
72
- .resolve(" main" )
73
- .resolve(" kotlin" )
74
- .resolve(" godot" )
75
- .resolve(" entry" )
76
- .resolve(" ${registeredClass.registeredName} Registrar.kt" )
83
+ FileOutputStream (file).bufferedWriter()
84
+ },
85
+ mainBufferedWriterProvider = {
86
+ val file = settings.generatedSourceRootDir
87
+ .resolve(" main" )
88
+ .resolve(" kotlin" )
89
+ .resolve(" godot" )
90
+ .resolve(" Entry.kt" )
77
91
78
- file.parentFile.mkdirs()
92
+ file.parentFile.mkdirs()
79
93
80
- if (! file.exists()) {
81
- file.createNewFile()
82
- }
94
+ if (! file.exists()) {
95
+ file.createNewFile()
96
+ }
97
+
98
+ FileOutputStream (file).bufferedWriter()
99
+ },
100
+ classRegistrarFromDependencyCount = RegisteredClassMetadataContainerDatabase .dependenciesSize
101
+ )
102
+
103
+ if (settings.isRegistrationFileGenerationEnabled) {
104
+ EntryGenerator .generateRegistrationFiles(
105
+ registeredClassMetadataContainers = RegisteredClassMetadataContainerDatabase .list(),
106
+ registrationFileAppendableProvider = { metadata ->
107
+ val registrationFile = provideRegistrationFilePathForInitialGeneration(
108
+ isRegistrationFileHierarchyEnabled = settings.isRegistrationFileHierarchyEnabled,
109
+ fqName = metadata.fqName,
110
+ registeredName = metadata.registeredName,
111
+ compilationProjectName = settings.projectName,
112
+ classProjectName = metadata.projectName,
113
+ registrationFileOutDir = settings.registrationBaseDirPathRelativeToProjectDir
114
+ )
83
115
84
- FileOutputStream (file).bufferedWriter()
85
- },
86
- mainBufferedWriterProvider = {
87
116
val file = settings.generatedSourceRootDir
88
117
.resolve(" main" )
89
- .resolve(" kotlin " )
90
- .resolve(" godot " )
91
- .resolve(" Entry.kt " )
118
+ .resolve(" resources " )
119
+ .resolve(" entryFiles " )
120
+ .resolve(registrationFile )
92
121
93
122
file.parentFile.mkdirs()
94
123
@@ -97,52 +126,21 @@ fun generateEntryUsingClassGraph(
97
126
}
98
127
99
128
FileOutputStream (file).bufferedWriter()
100
- },
101
- classRegistrarFromDependencyCount = RegisteredClassMetadataContainerDatabase .dependenciesSize
129
+ }
102
130
)
103
-
104
- if (settings.isRegistrationFileGenerationEnabled) {
105
- EntryGenerator .generateRegistrationFiles(
106
- registeredClassMetadataContainers = RegisteredClassMetadataContainerDatabase .list(),
107
- registrationFileAppendableProvider = { metadata ->
108
- val registrationFile = provideRegistrationFilePathForInitialGeneration(
109
- isRegistrationFileHierarchyEnabled = settings.isRegistrationFileHierarchyEnabled,
110
- fqName = metadata.fqName,
111
- registeredName = metadata.registeredName,
112
- compilationProjectName = settings.projectName,
113
- classProjectName = metadata.projectName,
114
- registrationFileOutDir = settings.registrationBaseDirPathRelativeToProjectDir
115
- )
116
-
117
- val file = settings.generatedSourceRootDir
118
- .resolve(" main" )
119
- .resolve(" resources" )
120
- .resolve(" entryFiles" )
121
- .resolve(registrationFile)
122
-
123
- file.parentFile.mkdirs()
124
-
125
- if (! file.exists()) {
126
- file.createNewFile()
127
- }
128
131
129
- FileOutputStream (file).bufferedWriter()
130
- }
131
- )
132
-
133
- val classgraphRegistrationFilesBaseDir = settings.projectBaseDir
134
- .resolve(" build/generated/classgraph/main/resources/entryFiles" )
135
- .resolve(settings.registrationBaseDirPathRelativeToProjectDir)
132
+ val classgraphRegistrationFilesBaseDir = settings.projectBaseDir
133
+ .resolve(" build/generated/classgraph/main/resources/entryFiles" )
134
+ .resolve(settings.registrationBaseDirPathRelativeToProjectDir)
136
135
137
- val initialRegistrationFilesOutDir = settings.projectBaseDir
138
- .resolve(settings.registrationBaseDirPathRelativeToProjectDir)
136
+ val initialRegistrationFilesOutDir = settings.projectBaseDir
137
+ .resolve(settings.registrationBaseDirPathRelativeToProjectDir)
139
138
140
- EntryGenerator .updateRegistrationFiles(
141
- generatedRegistrationFilesBaseDir = classgraphRegistrationFilesBaseDir,
142
- initialRegistrationFilesOutDir = initialRegistrationFilesOutDir,
143
- existingRegistrationFilesMap = existingRegistrationFiles,
144
- )
145
- }
139
+ EntryGenerator .updateRegistrationFiles(
140
+ generatedRegistrationFilesBaseDir = classgraphRegistrationFilesBaseDir,
141
+ initialRegistrationFilesOutDir = initialRegistrationFilesOutDir,
142
+ existingRegistrationFilesMap = existingRegistrationFiles,
143
+ )
146
144
}
147
145
}
148
146
}
0 commit comments