mirror of
https://github.com/ethauvin/kobalt.git
synced 2025-04-27 00:38:11 -07:00
--gc.
This commit is contained in:
parent
2c0f930764
commit
d0977b17e7
4 changed files with 116 additions and 1 deletions
|
@ -26,6 +26,9 @@ class Args {
|
||||||
"actually running them")
|
"actually running them")
|
||||||
var dryRun: Boolean = false
|
var dryRun: Boolean = false
|
||||||
|
|
||||||
|
@Parameter(names = arrayOf("--gc"), description = "Delete old files")
|
||||||
|
var gc: Boolean = false
|
||||||
|
|
||||||
@Parameter(names = arrayOf("--help", "--usage"), description = "Display the help")
|
@Parameter(names = arrayOf("--help", "--usage"), description = "Display the help")
|
||||||
var usage: Boolean = false
|
var usage: Boolean = false
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
package com.beust.kobalt.misc
|
||||||
|
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
import java.nio.file.Paths
|
||||||
|
import java.nio.file.StandardCopyOption
|
||||||
|
|
||||||
|
class Io(val dryRun: Boolean = false) {
|
||||||
|
fun mkdirs(dir: String) {
|
||||||
|
log("mkdirs $dir")
|
||||||
|
if (! dryRun) {
|
||||||
|
File(dir).mkdirs()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun rm(path: String) {
|
||||||
|
log("rm $path")
|
||||||
|
|
||||||
|
if (! dryRun) {
|
||||||
|
File(path).deleteRecursively()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun moveFile(from: File, toDir: File) {
|
||||||
|
log("mv $from $toDir")
|
||||||
|
if (! dryRun) {
|
||||||
|
require(from.exists(), { -> "$from should exist" })
|
||||||
|
require(from.isFile, { -> "$from should be a file" })
|
||||||
|
require(toDir.isDirectory, { -> "$toDir should be a file"})
|
||||||
|
|
||||||
|
val toFile = File(toDir, from.name)
|
||||||
|
Files.move(Paths.get(from.absolutePath), Paths.get(toFile.absolutePath), StandardCopyOption.ATOMIC_MOVE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun copyDirectory(from: File, toDir: File) {
|
||||||
|
log("cp -r $from $toDir")
|
||||||
|
|
||||||
|
if (! dryRun) {
|
||||||
|
KFiles.copyRecursively(from, toDir)
|
||||||
|
require(from.exists(), { -> "$from should exist" })
|
||||||
|
require(from.isDirectory, { -> println("$from should be a directory")})
|
||||||
|
require(toDir.isDirectory, { -> println("$toDir should be a file")})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun rmDir(dir: File) {
|
||||||
|
log("rm -rf $dir")
|
||||||
|
|
||||||
|
if (! dryRun) {
|
||||||
|
require(dir.isDirectory, { -> println("$dir should be a directory")})
|
||||||
|
dir.deleteRecursively()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun mkdir(dir: File) {
|
||||||
|
log("rm -rf $dir")
|
||||||
|
if (! dryRun) {
|
||||||
|
dir.mkdirs()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun log(s: String) {
|
||||||
|
log(1, "[Io] $s")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import com.beust.kobalt.app.*
|
||||||
import com.beust.kobalt.app.remote.DependencyData
|
import com.beust.kobalt.app.remote.DependencyData
|
||||||
import com.beust.kobalt.app.remote.KobaltClient
|
import com.beust.kobalt.app.remote.KobaltClient
|
||||||
import com.beust.kobalt.app.remote.KobaltServer
|
import com.beust.kobalt.app.remote.KobaltServer
|
||||||
|
import com.beust.kobalt.internal.Gc
|
||||||
import com.beust.kobalt.internal.KobaltSettings
|
import com.beust.kobalt.internal.KobaltSettings
|
||||||
import com.beust.kobalt.internal.PluginInfo
|
import com.beust.kobalt.internal.PluginInfo
|
||||||
import com.beust.kobalt.internal.TaskManager
|
import com.beust.kobalt.internal.TaskManager
|
||||||
|
@ -169,7 +170,9 @@ private class Main @Inject constructor(
|
||||||
server.run()
|
server.run()
|
||||||
} else {
|
} else {
|
||||||
// Options that don't need Build.kt to be parsed first
|
// Options that don't need Build.kt to be parsed first
|
||||||
if (args.update) {
|
if (args.gc) {
|
||||||
|
Gc().run()
|
||||||
|
} else if (args.update) {
|
||||||
// --update
|
// --update
|
||||||
updateKobalt.updateKobalt()
|
updateKobalt.updateKobalt()
|
||||||
} else {
|
} else {
|
||||||
|
|
41
src/main/kotlin/com/beust/kobalt/internal/Gc.kt
Normal file
41
src/main/kotlin/com/beust/kobalt/internal/Gc.kt
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
package com.beust.kobalt.internal
|
||||||
|
|
||||||
|
import com.beust.kobalt.api.Kobalt
|
||||||
|
import com.beust.kobalt.misc.Io
|
||||||
|
import com.beust.kobalt.misc.KFiles
|
||||||
|
import java.io.File
|
||||||
|
import java.nio.file.Files
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean up old Kobalt files.
|
||||||
|
*/
|
||||||
|
class Gc {
|
||||||
|
fun run() {
|
||||||
|
// Delete all the distributions except the current one
|
||||||
|
val dist = KFiles.distributionsDir
|
||||||
|
val version = Kobalt.version
|
||||||
|
val tmpDir = Files.createTempDirectory("kobalt")
|
||||||
|
|
||||||
|
// Zipfile
|
||||||
|
val io = Io(dryRun = true)
|
||||||
|
val zipFileName = "kobalt-$version.zip"
|
||||||
|
io.moveFile(File(KFiles.joinDir(dist, zipFileName)), tmpDir.toFile())
|
||||||
|
|
||||||
|
// Distribution directory
|
||||||
|
val zipDirectoryName = "kobalt-$version"
|
||||||
|
val zipDirectory = File(KFiles.joinDir(dist, zipDirectoryName))
|
||||||
|
io.copyDirectory(zipDirectory, tmpDir.toFile())
|
||||||
|
|
||||||
|
// Delete the whole dist directory and recreate it
|
||||||
|
File(dist).let { distFile ->
|
||||||
|
io.rmDir(distFile)
|
||||||
|
io.mkdir(distFile)
|
||||||
|
|
||||||
|
// Copy the files back
|
||||||
|
tmpDir.toFile().absolutePath.let { fromPath ->
|
||||||
|
io.moveFile(File(KFiles.joinDir(fromPath, zipFileName)), distFile)
|
||||||
|
io.copyDirectory(File(KFiles.joinDir(fromPath, zipDirectoryName)), distFile)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue