Skip to content

Commit b41be17

Browse files
committed
Improve export implementations
1 parent 7aef37a commit b41be17

2 files changed

Lines changed: 29 additions & 79 deletions

File tree

src/main/kotlin/net/theevilreaper/stelaris/cli/exporter/GitProjectExporter.kt

Lines changed: 29 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,67 +4,28 @@ import net.theevilreaper.stelaris.cli.generator.Generator
44
import org.eclipse.jgit.api.Git
55
import org.eclipse.jgit.lib.PersonIdent
66
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider
7-
import java.nio.file.Files
87
import java.nio.file.Path
9-
import java.nio.file.StandardCopyOption
10-
import java.util.zip.ZipInputStream
118

129
class GitProjectExporter(
1310
private val generationFolder: Path,
1411
private val versionString: String,
1512
private val generators: Set<Generator>
1613
) : BaseExporter() {
1714

18-
private val userName: String
19-
private val password: String
20-
private val cloneUrl: String
15+
private val userName: String = System.getenv("stelaris.cli.username")
16+
private val password: String = System.getenv("stelaris.cli.password")
17+
private val cloneUrl: String = System.getenv("stelaris.cli.cloneUrl")
2118

2219
init {
23-
require((versionString.isNotEmpty())) { "The version string can't be empty" }
24-
25-
userName = System.getenv("stelaris.cli.username")
26-
password = System.getenv("stelaris.cli.password")
27-
cloneUrl = System.getenv("stelaris.cli.cloneUrl")
28-
2920
require((userName.isNotEmpty())) { "The username can't be empty" }
3021
require((password.isNotEmpty())) { "The password can't be empty" }
3122
require((cloneUrl.isNotEmpty())) { "The clone url can't be empty" }
3223
}
3324

3425
override fun export() {
35-
val zipStream = javaClass.getClassLoader().getResourceAsStream("flutter_template.zip")
36-
ZipInputStream(zipStream).use { zis ->
37-
var entry = zis.nextEntry
38-
while (entry != null) {
39-
val newPath = generationFolder.resolve(entry.name)
40-
41-
if (entry.isDirectory) {
42-
Files.createDirectories(newPath)
43-
} else {
44-
Files.createDirectories(newPath.parent)
45-
Files.copy(zis, newPath, StandardCopyOption.REPLACE_EXISTING)
46-
}
47-
48-
zis.closeEntry()
49-
entry = zis.nextEntry
50-
}
51-
}
52-
53-
val gitRepo = Git.init().setDirectory(generationFolder.toFile()).call()
54-
gitRepo.remoteAdd()
55-
.setName("origin")
56-
.setUri(org.eclipse.jgit.transport.URIish(cloneUrl))
57-
.call()
58-
gitRepo.lsRemote().setRemote(cloneUrl).setCredentialsProvider(
59-
UsernamePasswordCredentialsProvider(
60-
userName,
61-
password
62-
)
63-
).call()
64-
65-
val libPath: Path = generationFolder.resolve("lib")
66-
if (!Files.exists(libPath)) Files.createDirectory(libPath)
67-
modifyPubSpecFile(generationFolder, versionString)
26+
val gitRepo = cloneBaseRepo(
27+
generationFolder
28+
)
6829

6930
generators.forEach { generator -> generator.generate(generationFolder) }
7031

@@ -84,7 +45,29 @@ class GitProjectExporter(
8445
)
8546
)
8647

48+
generators.forEach { generator -> generator.generate(generationFolder) }
49+
8750
gitPush.isForce = true
8851
gitPush.call()
8952
}
90-
}
53+
54+
/**
55+
* Clones the base repository to the given path.
56+
* @param username the username for the repository
57+
* @param token the token for the repository
58+
* @param cloneUrl the clone URL for the repository
59+
* @param temp the temporary path to store the repository
60+
* @return the cloned repository
61+
*/
62+
private fun cloneBaseRepo(temp: Path): Git {
63+
require(cloneUrl.trim().isNotEmpty()) { "Clone URL must not be empty" }
64+
val rawGit =
65+
Git.cloneRepository().setCredentialsProvider(
66+
UsernamePasswordCredentialsProvider(
67+
userName,
68+
password
69+
)
70+
).setURI(cloneUrl).setDirectory(temp.toFile()).setCloneAllBranches(true)
71+
return rawGit.call()
72+
}
73+
}
Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,20 @@
11
package net.theevilreaper.stelaris.cli.exporter
22

33
import net.theevilreaper.stelaris.cli.generator.Generator
4-
import java.io.IOException
54
import java.nio.file.Files
65
import java.nio.file.Path
7-
import java.nio.file.StandardCopyOption
8-
import java.util.zip.ZipInputStream
96

107
class LocalProjectExporter(
118
private val exportPath: Path,
12-
private val versionString: String,
139
private val generators: Set<Generator>
1410
) : BaseExporter() {
1511

16-
init {
17-
require((versionString.isNotEmpty())) { "The version string can't be empty" }
18-
}
19-
2012
override fun export() {
21-
println("Exporting to local path: $exportPath")
22-
2313
if (!Files.exists(exportPath)) {
2414
Files.createDirectory(exportPath)
25-
println("Created directory: $exportPath")
2615
}
27-
28-
println("Exporting to: $exportPath")
29-
30-
val zipStream = javaClass.getClassLoader().getResourceAsStream("flutter_template.zip")
31-
ZipInputStream(zipStream).use { zis ->
32-
var entry = zis.nextEntry
33-
while (entry != null) {
34-
val newPath = exportPath.resolve(entry.name)
35-
36-
if (entry.isDirectory) {
37-
Files.createDirectories(newPath)
38-
} else {
39-
Files.createDirectories(newPath.parent)
40-
Files.copy(zis, newPath, StandardCopyOption.REPLACE_EXISTING)
41-
}
42-
43-
zis.closeEntry()
44-
entry = zis.nextEntry
45-
}
46-
}
47-
4816
val libPath: Path = exportPath.resolve("lib")
4917
if (!Files.exists(libPath)) Files.createDirectory(libPath)
50-
modifyPubSpecFile(exportPath, versionString)
5118
generators.forEach { generator -> generator.generate(libPath) }
5219
}
5320
}

0 commit comments

Comments
 (0)