@@ -4,67 +4,28 @@ import net.theevilreaper.stelaris.cli.generator.Generator
44import org.eclipse.jgit.api.Git
55import org.eclipse.jgit.lib.PersonIdent
66import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider
7- import java.nio.file.Files
87import java.nio.file.Path
9- import java.nio.file.StandardCopyOption
10- import java.util.zip.ZipInputStream
118
129class 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+ }
0 commit comments