in tools/src/main/kotlin/jetbrains/exodus/env/Reflect.kt [38:123]
fun main(args: Array<String>) {
if (args.isEmpty()) {
printUsage()
}
var envPath: String? = null
var envPath2: String? = null
var dumpUtilizationToFile: String? = null
var hasOptions = false
var collectLogStats = false
var validateRoots = false
var traverse = false
var copy = false
var forcePrefixing = false
var utilizationInfo = false
var persistentEntityStoreInfo = false
val files2Clean = LinkedHashSet<String>()
for (arg in args) {
if (arg.startsWith('-')) {
hasOptions = true
when (arg.lowercase().substring(1)) {
"ls" -> collectLogStats = true
"r" -> validateRoots = true
"t" -> traverse = true
"c" -> copy = true
"cp" -> {
copy = true; forcePrefixing = true
}
"u" -> utilizationInfo = true
"p" -> persistentEntityStoreInfo = true
else -> when {
arg.startsWith("-cl") -> files2Clean.add(arg.substring(3))
arg.startsWith("-d") -> dumpUtilizationToFile = arg.substring(2)
else -> printUsage()
}
}
} else {
if (envPath == null) {
envPath = arg
} else {
envPath2 = arg
break
}
}
}
if (envPath == null || copy && envPath2 == null) {
printUsage()
}
println("Investigating $envPath")
try {
val reflect = Reflect(File(envPath))
if (files2Clean.size > 0) {
for (file in files2Clean) {
reflect.cleanFile(file)
}
}
if (!hasOptions) {
reflect.collectLogStats()
exitProcess(reflect.traverse(dumpUtilizationToFile, persistentEntityStoreInfo))
} else {
if (validateRoots) {
reflect.roots()
}
if (collectLogStats) {
reflect.collectLogStats()
}
if (traverse) {
exitProcess(reflect.traverse(dumpUtilizationToFile, persistentEntityStoreInfo))
}
if (copy) {
reflect.env.copyTo(File(envPath2), forcePrefixing) {
println(it)
}
}
if (utilizationInfo) {
reflect.spaceInfoFromUtilization()
}
}
} catch (t: Throwable) {
println(t)
exitProcess(-1)
}
exitProcess(0)
}