38 lines
1.3 KiB
Kotlin
38 lines
1.3 KiB
Kotlin
package co.electriccoin.zcash.crash
|
|
|
|
import co.electriccoin.zcash.spackle.io.canWriteSuspend
|
|
import co.electriccoin.zcash.spackle.io.existsSuspend
|
|
import co.electriccoin.zcash.spackle.io.isDirectorySuspend
|
|
import co.electriccoin.zcash.spackle.io.mkdirsSuspend
|
|
import java.io.File
|
|
import java.util.UUID
|
|
|
|
object ExceptionPath {
|
|
const val LOG_DIRECTORY_NAME = "log" // $NON-NLS-1$
|
|
const val EXCEPTION_DIRECTORY_NAME = "exception" // $NON-NLS-1$
|
|
const val SEPARATOR = "|"
|
|
const val TYPE = "txt"
|
|
|
|
@Suppress("MaxLineLength")
|
|
fun newExceptionFileName(exception: ReportableException, uuid: UUID = UUID.randomUUID()) =
|
|
"${exception.time.epochSeconds}$SEPARATOR$uuid$SEPARATOR${exception.exceptionClass}$SEPARATOR${exception.isUncaught}.$TYPE"
|
|
|
|
// The exceptions are really just for debugging
|
|
@Suppress("ThrowsCount")
|
|
suspend fun validateDir(path: File) {
|
|
if (!path.existsSuspend()) {
|
|
if (!path.mkdirsSuspend()) {
|
|
throw IllegalArgumentException("Directories couldn't be created")
|
|
}
|
|
} else {
|
|
if (!path.isDirectorySuspend()) {
|
|
throw IllegalArgumentException("Path is a file when a directory was expected")
|
|
}
|
|
}
|
|
|
|
if (!path.canWriteSuspend()) {
|
|
throw IllegalArgumentException("Path is not writeable")
|
|
}
|
|
}
|
|
}
|