47 lines
1.5 KiB
Scala
47 lines
1.5 KiB
Scala
package ch.epfl.lamp
|
|
|
|
import sbt._
|
|
import sbt.Keys._
|
|
|
|
/**
|
|
* Coursera uses two versions of each assignment. They both have the same assignment key and part id but have
|
|
* different item ids.
|
|
*
|
|
* @param key Assignment key
|
|
* @param partId Assignment partId
|
|
* @param itemId Item id of the non premium version
|
|
* @param premiumItemId Item id of the premium version (`None` if the assignment is optional)
|
|
*/
|
|
case class CourseraId(key: String, partId: String, itemId: String, premiumItemId: Option[String])
|
|
|
|
/**
|
|
* Settings shared by all assignments, reused in various tasks.
|
|
*/
|
|
object MOOCSettings extends AutoPlugin {
|
|
|
|
object autoImport {
|
|
val course = SettingKey[String]("course")
|
|
val assignment = SettingKey[String]("assignment")
|
|
val options = SettingKey[Map[String, Map[String, String]]]("options")
|
|
val courseraId = settingKey[CourseraId]("Coursera-specific information identifying the assignment")
|
|
val testSuite = settingKey[String]("Fully qualified name of the test suite of this assignment")
|
|
// Convenient alias
|
|
type CourseraId = ch.epfl.lamp.CourseraId
|
|
val CourseraId = ch.epfl.lamp.CourseraId
|
|
}
|
|
|
|
import autoImport._
|
|
|
|
override val globalSettings: Seq[Def.Setting[_]] = Seq(
|
|
// supershell is verbose, buggy and useless.
|
|
useSuperShell := false
|
|
)
|
|
|
|
override val projectSettings: Seq[Def.Setting[_]] = Seq(
|
|
parallelExecution in Test := false,
|
|
// Report test result after each test instead of waiting for every test to finish
|
|
logBuffered in Test := false,
|
|
name := s"${course.value}-${assignment.value}"
|
|
)
|
|
}
|