Skip to content

Commit 3348498

Browse files
fixed some bugs
1 parent 84b6c9e commit 3348498

File tree

1 file changed

+42
-128
lines changed
  • generator/src/main/kotlin/io/github/hosseinkarami_dev/near/rpc/generator

1 file changed

+42
-128
lines changed
Lines changed: 42 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,162 +1,76 @@
11
package io.github.hosseinkarami_dev.near.rpc.generator
22

33
import ModelGenerator
4-
import java.nio.file.Files
5-
import java.nio.file.Path
6-
import java.nio.file.Paths
74
import kotlinx.cli.ArgParser
85
import kotlinx.cli.ArgType
96
import kotlinx.cli.default
107
import java.io.File
11-
import kotlin.system.exitProcess
128

139
fun main(args: Array<String>) {
1410
val parser = ArgParser("generator")
1511

16-
val gw = System.getenv("GITHUB_WORKSPACE")
17-
val rootDirStr = gw ?: File(System.getProperty("user.dir"), "..").canonicalPath
18-
println(">>> rootDir = $rootDirStr")
12+
val rootDir = System.getenv("GITHUB_WORKSPACE") ?: File(System.getProperty("user.dir"), "..").canonicalPath
1913

2014
val openApiUrl by parser.option(
2115
ArgType.String,
2216
fullName = "openapi-url",
2317
description = "URL to the OpenAPI specification"
24-
).default("https://raw.githubusercontent.com/near/nearcore/refs/heads/master/chain/jsonrpc/openapi/openapi.json")
18+
)
19+
//.default("https://raw.githubusercontent.com/near/nearcore/refs/heads/2.7.0/chain/jsonrpc/openapi/openapi.json")
20+
//.default("https://raw.githubusercontent.com/near/nearcore/refs/heads/2.8.0/chain/jsonrpc/openapi/openapi.json")
21+
.default("https://raw.githubusercontent.com/near/nearcore/refs/heads/master/chain/jsonrpc/openapi/openapi.json")
2522

2623
val modelsOut by parser.option(
2724
ArgType.String,
2825
fullName = "models-out",
2926
description = "Output directory for generated models"
30-
).default("$rootDirStr/models/src/main/kotlin")
27+
).default("$rootDir/models/src/main/kotlin/")
3128

3229
val clientOut by parser.option(
3330
ArgType.String,
3431
fullName = "client-out",
3532
description = "Output directory for generated client"
36-
).default("$rootDirStr/client/src/main/kotlin")
33+
).default("$rootDir/client/src/main/kotlin/")
3734

3835
parser.parse(args)
3936

40-
println(">>> modelsOut = $modelsOut")
41-
println(">>> clientOut = $clientOut")
42-
println(">>> cwd = ${File(".").absolutePath}")
43-
44-
// ensure base output directories exist
45-
try {
46-
val modelsOutPath: Path = Paths.get(modelsOut)
47-
val clientOutPath: Path = Paths.get(clientOut)
48-
49-
println("Creating base output directories (if missing)...")
50-
Files.createDirectories(modelsOutPath)
51-
Files.createDirectories(clientOutPath)
52-
println("Base dirs exist: ${Files.exists(modelsOutPath)} , ${Files.exists(clientOutPath)}")
53-
println("ModelsOut writable: ${Files.isWritable(modelsOutPath)}")
54-
} catch (ex: Exception) {
55-
System.err.println("Failed to create base output dirs: ${ex.message}")
56-
ex.printStackTrace()
57-
exitProcess(2)
58-
}
37+
val spec = fetchOpenApiSpec(openApiUrl)
5938

6039
val modelPackage = "io.github.hosseinkarami_dev.near.rpc.models"
6140
val clientPackage = "io.github.hosseinkarami_dev.near.rpc.client"
6241
val serializerPackage = modelPackage.replace(".models", ".serializers")
6342

64-
// package directories (inside the base output dirs)
65-
val serializerDir = Paths.get(modelsOut, *serializerPackage.split(".").toTypedArray())
66-
val modelDir = Paths.get(modelsOut, *modelPackage.split(".").toTypedArray())
67-
val nearClientDir = Paths.get(clientOut, *clientPackage.split(".").toTypedArray())
68-
69-
try {
70-
println("Creating package directories...")
71-
Files.createDirectories(serializerDir)
72-
Files.createDirectories(modelDir)
73-
Files.createDirectories(nearClientDir)
74-
println("serializerDir exists: ${Files.exists(serializerDir)}")
75-
println("modelDir exists: ${Files.exists(modelDir)}")
76-
println("nearClientDir exists: ${Files.exists(nearClientDir)}")
77-
} catch (ex: Exception) {
78-
System.err.println("Failed to create package directories: ${ex.message}")
79-
ex.printStackTrace()
80-
exitProcess(3)
81-
}
82-
83-
// debug: list a bit of tree
84-
println("Listing models tree (first 200 lines):")
85-
File(modelsOut).walkTopDown().take(200).forEach { println(it.absolutePath) }
86-
87-
// fetch spec (wrap to log errors)
88-
val spec = try {
89-
fetchOpenApiSpec(openApiUrl)
90-
} catch (ex: Exception) {
91-
System.err.println("Failed to fetch openapi spec: ${ex.message}")
92-
ex.printStackTrace()
93-
exitProcess(4)
94-
}
95-
96-
// cleanup previous generated files if any (only inside package dirs)
97-
try {
98-
serializerDir.toFile().listFiles()?.forEach {
99-
println("Deleting old file: ${it.absolutePath}")
100-
it.delete()
101-
}
102-
modelDir.toFile().listFiles()?.forEach {
103-
println("Deleting old file: ${it.absolutePath}")
104-
it.delete()
105-
}
106-
// remove nearClient single file if existed
107-
nearClientDir.toFile().listFiles()?.forEach {
108-
println("Deleting old client file: ${it.absolutePath}")
109-
it.delete()
110-
}
111-
} catch (ex: Exception) {
112-
println("Cleanup warning: ${ex.message}")
113-
}
114-
115-
// call generators (wrap to catch exceptions)
116-
try {
117-
ModelGenerator.generateAll(
118-
spec = spec,
119-
output = File(modelsOut),
120-
serializerPackage = serializerPackage,
121-
packageName = modelPackage
122-
) { sealedClasses ->
123-
SerializerGenerator.generateFromSealedInfos(
124-
sealedInfos = sealedClasses,
125-
serializerPackage = serializerPackage,
126-
output = File(modelsOut)
127-
)
128-
}
129-
} catch (ex: Exception) {
130-
System.err.println("Model generation failed: ${ex.message}")
131-
ex.printStackTrace()
132-
exitProcess(5)
133-
}
134-
135-
try {
136-
ClientGenerator.generateNearClientFile(
137-
spec = spec,
138-
output = File(clientOut),
139-
clientPackage = clientPackage,
140-
modelsPackage = modelPackage
141-
)
142-
} catch (ex: Exception) {
143-
System.err.println("Client generation failed: ${ex.message}")
144-
ex.printStackTrace()
145-
exitProcess(6)
146-
}
147-
148-
// create a marker file to prove writing succeeded
149-
try {
150-
val marker = Paths.get(modelsOut, "__GEN_OK__")
151-
Files.writeString(marker, "generated at ${java.time.Instant.now()}\n")
152-
println("Wrote marker: ${marker.toAbsolutePath()}")
153-
} catch (ex: Exception) {
154-
System.err.println("Failed to write marker file: ${ex.message}")
155-
ex.printStackTrace()
156-
}
157-
158-
println("Generation finished. final listing (first 200 items):")
159-
File(modelsOut).walkTopDown().take(200).forEach { println(it.absolutePath) }
160-
161-
println("✅ Done")
162-
}
43+
val serializerFiles = File(modelsOut + serializerPackage.replace(".", "/"))
44+
val modelFiles = File(modelsOut + modelPackage.replace(".", "/"))
45+
val nearClientFile = File(clientOut + clientPackage.replace(".", "/"))
46+
47+
48+
serializerFiles.mkdirs()
49+
modelFiles.mkdirs()
50+
nearClientFile.mkdirs()
51+
52+
serializerFiles.takeIf { it.exists() }?.listFiles()?.forEach { it.delete() }
53+
modelFiles.takeIf { it.exists() }?.listFiles()?.forEach { it.delete() }
54+
55+
nearClientFile.delete()
56+
57+
// ModelGenerator.generateAll(
58+
// spec = spec,
59+
// output = File(modelsOut),
60+
// serializerPackage = serializerPackage,
61+
// packageName = modelPackage
62+
// ) { sealedClasses ->
63+
// SerializerGenerator.generateFromSealedInfos(
64+
// sealedInfos = sealedClasses,
65+
// serializerPackage = serializerPackage,
66+
// output = File(modelsOut)
67+
// )
68+
// }
69+
//
70+
// ClientGenerator.generateNearClientFile(
71+
// spec = spec,
72+
// output = File(clientOut),
73+
// clientPackage = clientPackage,
74+
// modelsPackage = modelPackage
75+
// )
76+
}

0 commit comments

Comments
 (0)