mirror of https://github.com/sbt/sbt.git
81 lines
1.5 KiB
Scala
81 lines
1.5 KiB
Scala
package coursier
|
|
|
|
import java.io.File
|
|
|
|
sealed abstract class FileError(
|
|
val `type`: String,
|
|
val message: String
|
|
) extends Product with Serializable {
|
|
def describe: String = s"${`type`}: $message"
|
|
|
|
final def notFound: Boolean = this match {
|
|
case _: FileError.NotFound => true
|
|
case _ => false
|
|
}
|
|
}
|
|
|
|
object FileError {
|
|
|
|
final case class DownloadError(reason: String) extends FileError(
|
|
"download error",
|
|
reason
|
|
)
|
|
|
|
final case class NotFound(
|
|
file: String,
|
|
permanent: Option[Boolean] = None
|
|
) extends FileError(
|
|
"not found",
|
|
file
|
|
)
|
|
|
|
final case class Unauthorized(
|
|
file: String,
|
|
realm: Option[String]
|
|
) extends FileError(
|
|
"unauthorized",
|
|
file + realm.fold("")(" (" + _ + ")")
|
|
)
|
|
|
|
final case class ChecksumNotFound(
|
|
sumType: String,
|
|
file: String
|
|
) extends FileError(
|
|
"checksum not found",
|
|
file
|
|
)
|
|
|
|
final case class ChecksumFormatError(
|
|
sumType: String,
|
|
file: String
|
|
) extends FileError(
|
|
"checksum format error",
|
|
file
|
|
)
|
|
|
|
final case class WrongChecksum(
|
|
sumType: String,
|
|
got: String,
|
|
expected: String,
|
|
file: String,
|
|
sumFile: String
|
|
) extends FileError(
|
|
"wrong checksum",
|
|
file
|
|
)
|
|
|
|
sealed abstract class Recoverable(
|
|
`type`: String,
|
|
message: String
|
|
) extends FileError(`type`, message)
|
|
final case class Locked(file: File) extends Recoverable(
|
|
"locked",
|
|
file.toString
|
|
)
|
|
final case class ConcurrentDownload(url: String) extends Recoverable(
|
|
"concurrent download",
|
|
url
|
|
)
|
|
|
|
}
|