mirror of
https://github.com/TheAnachronism/docspell.git
synced 2025-06-06 07:05:59 +00:00
Autoformat build.sbt
This commit is contained in:
parent
9bc6c60dfe
commit
9af02cd90b
199
build.sbt
199
build.sbt
@ -20,7 +20,8 @@ val sharedSettings = Seq(
|
|||||||
scalaVersion := "2.13.2",
|
scalaVersion := "2.13.2",
|
||||||
scalacOptions ++= Seq(
|
scalacOptions ++= Seq(
|
||||||
"-deprecation",
|
"-deprecation",
|
||||||
"-encoding", "UTF-8",
|
"-encoding",
|
||||||
|
"UTF-8",
|
||||||
"-language:higherKinds",
|
"-language:higherKinds",
|
||||||
"-feature",
|
"-feature",
|
||||||
"-Werror", // fail when there are warnings
|
"-Werror", // fail when there are warnings
|
||||||
@ -57,106 +58,143 @@ lazy val noPublish = Seq(
|
|||||||
val elmSettings = Seq(
|
val elmSettings = Seq(
|
||||||
elmCompileMode := ElmCompileMode.Debug,
|
elmCompileMode := ElmCompileMode.Debug,
|
||||||
Compile / resourceGenerators += Def.task {
|
Compile / resourceGenerators += Def.task {
|
||||||
compileElm(streams.value.log
|
compileElm(
|
||||||
, (Compile/baseDirectory).value
|
streams.value.log,
|
||||||
, (Compile/resourceManaged).value
|
(Compile / baseDirectory).value,
|
||||||
, name.value
|
(Compile / resourceManaged).value,
|
||||||
, version.value
|
name.value,
|
||||||
, elmCompileMode.value)
|
version.value,
|
||||||
|
elmCompileMode.value
|
||||||
|
)
|
||||||
}.taskValue,
|
}.taskValue,
|
||||||
watchSources += Watched.WatchSource(
|
watchSources += Watched.WatchSource(
|
||||||
(Compile/sourceDirectory).value/"elm"
|
(Compile / sourceDirectory).value / "elm",
|
||||||
, FileFilter.globFilter("*.elm")
|
FileFilter.globFilter("*.elm"),
|
||||||
, HiddenFileFilter
|
HiddenFileFilter
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
val webjarSettings = Seq(
|
val webjarSettings = Seq(
|
||||||
Compile / resourceGenerators += Def.task {
|
Compile / resourceGenerators += Def.task {
|
||||||
copyWebjarResources(Seq((sourceDirectory in Compile).value/"webjar")
|
copyWebjarResources(
|
||||||
, (Compile/resourceManaged).value
|
Seq((sourceDirectory in Compile).value / "webjar"),
|
||||||
, name.value
|
(Compile / resourceManaged).value,
|
||||||
, version.value
|
name.value,
|
||||||
, streams.value.log
|
version.value,
|
||||||
|
streams.value.log
|
||||||
)
|
)
|
||||||
}.taskValue,
|
}.taskValue,
|
||||||
watchSources += Watched.WatchSource(
|
watchSources += Watched.WatchSource(
|
||||||
(Compile / sourceDirectory).value/"webjar"
|
(Compile / sourceDirectory).value / "webjar",
|
||||||
, FileFilter.globFilter("*.js") || FileFilter.globFilter("*.css")
|
FileFilter.globFilter("*.js") || FileFilter.globFilter("*.css"),
|
||||||
, HiddenFileFilter
|
HiddenFileFilter
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
def debianSettings(cfgFile: String) = Seq(
|
def debianSettings(cfgFile: String) =
|
||||||
|
Seq(
|
||||||
maintainer := "Eike Kettner <eike.kettner@posteo.de>",
|
maintainer := "Eike Kettner <eike.kettner@posteo.de>",
|
||||||
packageSummary := description.value,
|
packageSummary := description.value,
|
||||||
packageDescription := description.value,
|
packageDescription := description.value,
|
||||||
mappings in Universal += {
|
mappings in Universal += {
|
||||||
val conf = (Compile / resourceDirectory).value / "reference.conf"
|
val conf = (Compile / resourceDirectory).value / "reference.conf"
|
||||||
if (!conf.exists) {
|
if (!conf.exists)
|
||||||
sys.error(s"File $conf not found")
|
sys.error(s"File $conf not found")
|
||||||
}
|
|
||||||
conf -> s"conf/$cfgFile.conf"
|
conf -> s"conf/$cfgFile.conf"
|
||||||
},
|
},
|
||||||
bashScriptExtraDefines += s"""addJava "-Dconfig.file=$${app_home}/../conf/$cfgFile.conf""""
|
bashScriptExtraDefines += s"""addJava "-Dconfig.file=$${app_home}/../conf/$cfgFile.conf""""
|
||||||
)
|
)
|
||||||
|
|
||||||
val buildInfoSettings = Seq(
|
val buildInfoSettings = Seq(
|
||||||
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion, gitHeadCommit, gitHeadCommitDate, gitUncommittedChanges, gitDescribedVersion),
|
buildInfoKeys := Seq[BuildInfoKey](
|
||||||
|
name,
|
||||||
|
version,
|
||||||
|
scalaVersion,
|
||||||
|
sbtVersion,
|
||||||
|
gitHeadCommit,
|
||||||
|
gitHeadCommitDate,
|
||||||
|
gitUncommittedChanges,
|
||||||
|
gitDescribedVersion
|
||||||
|
),
|
||||||
buildInfoOptions += BuildInfoOption.ToJson,
|
buildInfoOptions += BuildInfoOption.ToJson,
|
||||||
buildInfoOptions += BuildInfoOption.BuildTime
|
buildInfoOptions += BuildInfoOption.BuildTime
|
||||||
)
|
)
|
||||||
|
|
||||||
val openapiScalaSettings = Seq(
|
val openapiScalaSettings = Seq(
|
||||||
openapiScalaConfig := ScalaConfig().withJson(ScalaJson.circeSemiauto).
|
openapiScalaConfig := ScalaConfig()
|
||||||
addMapping(CustomMapping.forType({
|
.withJson(ScalaJson.circeSemiauto)
|
||||||
|
.addMapping(CustomMapping.forType({
|
||||||
case TypeDef("LocalDateTime", _) =>
|
case TypeDef("LocalDateTime", _) =>
|
||||||
TypeDef("Timestamp", Imports("docspell.common.Timestamp"))
|
TypeDef("Timestamp", Imports("docspell.common.Timestamp"))
|
||||||
})).
|
}))
|
||||||
addMapping(CustomMapping.forFormatType({
|
.addMapping(CustomMapping.forFormatType({
|
||||||
case "ident" => field =>
|
case "ident" =>
|
||||||
field.copy(typeDef = TypeDef("Ident", Imports("docspell.common.Ident")))
|
field => field.copy(typeDef = TypeDef("Ident", Imports("docspell.common.Ident")))
|
||||||
case "collectivestate" => field =>
|
case "collectivestate" =>
|
||||||
field.copy(typeDef = TypeDef("CollectiveState", Imports("docspell.common.CollectiveState")))
|
field =>
|
||||||
case "userstate" => field =>
|
field.copy(typeDef =
|
||||||
|
TypeDef("CollectiveState", Imports("docspell.common.CollectiveState"))
|
||||||
|
)
|
||||||
|
case "userstate" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("UserState", Imports("docspell.common.UserState")))
|
field.copy(typeDef = TypeDef("UserState", Imports("docspell.common.UserState")))
|
||||||
case "password" => field =>
|
case "password" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("Password", Imports("docspell.common.Password")))
|
field.copy(typeDef = TypeDef("Password", Imports("docspell.common.Password")))
|
||||||
case "contactkind" => field =>
|
case "contactkind" =>
|
||||||
field.copy(typeDef = TypeDef("ContactKind", Imports("docspell.common.ContactKind")))
|
field =>
|
||||||
case "direction" => field =>
|
field.copy(typeDef =
|
||||||
|
TypeDef("ContactKind", Imports("docspell.common.ContactKind"))
|
||||||
|
)
|
||||||
|
case "direction" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("Direction", Imports("docspell.common.Direction")))
|
field.copy(typeDef = TypeDef("Direction", Imports("docspell.common.Direction")))
|
||||||
case "priority" => field =>
|
case "priority" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("Priority", Imports("docspell.common.Priority")))
|
field.copy(typeDef = TypeDef("Priority", Imports("docspell.common.Priority")))
|
||||||
case "jobstate" => field =>
|
case "jobstate" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("JobState", Imports("docspell.common.JobState")))
|
field.copy(typeDef = TypeDef("JobState", Imports("docspell.common.JobState")))
|
||||||
case "loglevel" => field =>
|
case "loglevel" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("LogLevel", Imports("docspell.common.LogLevel")))
|
field.copy(typeDef = TypeDef("LogLevel", Imports("docspell.common.LogLevel")))
|
||||||
case "mimetype" => field =>
|
case "mimetype" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("MimeType", Imports("docspell.common.MimeType")))
|
field.copy(typeDef = TypeDef("MimeType", Imports("docspell.common.MimeType")))
|
||||||
case "itemstate" => field =>
|
case "itemstate" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("ItemState", Imports("docspell.common.ItemState")))
|
field.copy(typeDef = TypeDef("ItemState", Imports("docspell.common.ItemState")))
|
||||||
case "nertag" => field =>
|
case "nertag" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("NerTag", Imports("docspell.common.NerTag")))
|
field.copy(typeDef = TypeDef("NerTag", Imports("docspell.common.NerTag")))
|
||||||
case "language" => field =>
|
case "language" =>
|
||||||
|
field =>
|
||||||
field.copy(typeDef = TypeDef("Language", Imports("docspell.common.Language")))
|
field.copy(typeDef = TypeDef("Language", Imports("docspell.common.Language")))
|
||||||
case "calevent" => field =>
|
case "calevent" =>
|
||||||
field.copy(typeDef = TypeDef("CalEvent", Imports("com.github.eikek.calev.CalEvent",
|
field =>
|
||||||
"com.github.eikek.calev.circe.CalevCirceCodec._")))
|
field.copy(typeDef =
|
||||||
|
TypeDef(
|
||||||
|
"CalEvent",
|
||||||
|
Imports(
|
||||||
|
"com.github.eikek.calev.CalEvent",
|
||||||
|
"com.github.eikek.calev.circe.CalevCirceCodec._"
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
}))
|
}))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
// --- Modules
|
// --- Modules
|
||||||
|
|
||||||
// Base module, everything depends on this – including restapi and
|
// Base module, everything depends on this – including restapi and
|
||||||
// joexapi modules. This should aim to have least possible
|
// joexapi modules. This should aim to have least possible
|
||||||
// dependencies
|
// dependencies
|
||||||
val common = project.in(file("modules/common")).
|
val common = project
|
||||||
disablePlugins(RevolverPlugin).
|
.in(file("modules/common"))
|
||||||
settings(sharedSettings).
|
.disablePlugins(RevolverPlugin)
|
||||||
settings(testSettings).
|
.settings(sharedSettings)
|
||||||
settings(
|
.settings(testSettings)
|
||||||
|
.settings(
|
||||||
name := "docspell-common",
|
name := "docspell-common",
|
||||||
libraryDependencies ++=
|
libraryDependencies ++=
|
||||||
Dependencies.fs2 ++
|
Dependencies.fs2 ++
|
||||||
@ -169,22 +207,23 @@ val common = project.in(file("modules/common")).
|
|||||||
|
|
||||||
// Some example files for testing
|
// Some example files for testing
|
||||||
// https://file-examples.com/index.php/sample-documents-download/sample-doc-download/
|
// https://file-examples.com/index.php/sample-documents-download/sample-doc-download/
|
||||||
val files = project.in(file("modules/files")).
|
val files = project
|
||||||
disablePlugins(RevolverPlugin).
|
.in(file("modules/files"))
|
||||||
settings(sharedSettings).
|
.disablePlugins(RevolverPlugin)
|
||||||
settings(testSettings).
|
.settings(sharedSettings)
|
||||||
settings(
|
.settings(testSettings)
|
||||||
|
.settings(
|
||||||
name := "docspell-files",
|
name := "docspell-files",
|
||||||
libraryDependencies ++=
|
libraryDependencies ++=
|
||||||
Dependencies.tika ++
|
Dependencies.tika ++
|
||||||
Dependencies.icu4j,
|
Dependencies.icu4j,
|
||||||
Test / sourceGenerators += Def.task {
|
Test / sourceGenerators += Def.task {
|
||||||
val base = (Test / resourceDirectory).value
|
val base = (Test / resourceDirectory).value
|
||||||
val files = (base ** (_.isFile)) pair sbt.io.Path.relativeTo(base)
|
val files = (base ** (_.isFile)).pair(sbt.io.Path.relativeTo(base))
|
||||||
val lines = files.toList.map(_._2).map(s => {
|
val lines = files.toList.map(_._2).map { s =>
|
||||||
val ident = s.replaceAll("[^a-zA-Z0-9_]+", "_")
|
val ident = s.replaceAll("[^a-zA-Z0-9_]+", "_")
|
||||||
ident -> s"""val $ident = createUrl("${s}")"""
|
ident -> s"""val $ident = createUrl("${s}")"""
|
||||||
})
|
}
|
||||||
val content = s"""package docspell.files
|
val content = s"""package docspell.files
|
||||||
|
|
||||||
object ExampleFiles extends ExampleFilesSupport {
|
object ExampleFiles extends ExampleFilesSupport {
|
||||||
@ -553,11 +592,22 @@ def copyWebjarResources(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
def compileElm(logger: Logger, wd: File, outBase: File, artifact: String, version: String, mode: ElmCompileMode): Seq[File] = {
|
def compileElm(
|
||||||
|
logger: Logger,
|
||||||
|
wd: File,
|
||||||
|
outBase: File,
|
||||||
|
artifact: String,
|
||||||
|
version: String,
|
||||||
|
mode: ElmCompileMode
|
||||||
|
): Seq[File] = {
|
||||||
logger.info("Compile elm files ...")
|
logger.info("Compile elm files ...")
|
||||||
val target = outBase/"META-INF"/"resources"/"webjars"/artifact/version/"docspell-app.js"
|
val target =
|
||||||
|
outBase / "META-INF" / "resources" / "webjars" / artifact / version / "docspell-app.js"
|
||||||
val cmd = Seq("elm", "make") ++ mode.flags ++ Seq("--output", target.toString)
|
val cmd = Seq("elm", "make") ++ mode.flags ++ Seq("--output", target.toString)
|
||||||
val proc = Process(cmd ++ Seq(wd/"src"/"main"/"elm"/"Main.elm").map(_.toString), Some(wd))
|
val proc = Process(
|
||||||
|
cmd ++ Seq(wd / "src" / "main" / "elm" / "Main.elm").map(_.toString),
|
||||||
|
Some(wd)
|
||||||
|
)
|
||||||
val out = proc.!!
|
val out = proc.!!
|
||||||
logger.info(out)
|
logger.info(out)
|
||||||
Seq(target)
|
Seq(target)
|
||||||
@ -565,7 +615,11 @@ def compileElm(logger: Logger, wd: File, outBase: File, artifact: String, versio
|
|||||||
|
|
||||||
def createWebjarSource(wj: Seq[ModuleID], out: File): Seq[File] = {
|
def createWebjarSource(wj: Seq[ModuleID], out: File): Seq[File] = {
|
||||||
val target = out / "Webjars.scala"
|
val target = out / "Webjars.scala"
|
||||||
val fields = wj.map(m => s"""val ${m.name.toLowerCase.filter(_ != '-')} = "/${m.name}/${m.revision}" """).mkString("\n\n")
|
val fields = wj
|
||||||
|
.map(m =>
|
||||||
|
s"""val ${m.name.toLowerCase.filter(_ != '-')} = "/${m.name}/${m.revision}" """
|
||||||
|
)
|
||||||
|
.mkString("\n\n")
|
||||||
val content = s"""package docspell.restserver.webapp
|
val content = s"""package docspell.restserver.webapp
|
||||||
|object Webjars {
|
|object Webjars {
|
||||||
|$fields
|
|$fields
|
||||||
@ -584,29 +638,38 @@ def packageTools(logger: Logger, dir: File, version: String): Seq[File] = {
|
|||||||
logger.info(s"Packaging tools to $archive ...")
|
logger.info(s"Packaging tools to $archive ...")
|
||||||
val webext = target / "docspell-firefox-extension.xpi"
|
val webext = target / "docspell-firefox-extension.xpi"
|
||||||
val wx = dir / "webextension"
|
val wx = dir / "webextension"
|
||||||
IO.zip(Seq(
|
IO.zip(
|
||||||
|
Seq(
|
||||||
wx / "_locales/de/messages.json" -> "_locales/de/messages.json",
|
wx / "_locales/de/messages.json" -> "_locales/de/messages.json",
|
||||||
wx / "_locales/en/messages.json" -> "_locales/en/messages.json",
|
wx / "_locales/en/messages.json" -> "_locales/en/messages.json",
|
||||||
wx / "docspell.js" -> "docspell.js",
|
wx / "docspell.js" -> "docspell.js",
|
||||||
wx / "icons" / "logo-48.png" -> "icons/logo-48.png",
|
wx / "icons" / "logo-48.png" -> "icons/logo-48.png",
|
||||||
wx / "icons" / "logo-96.png" -> "icons/logo-96.png",
|
wx / "icons" / "logo-96.png" -> "icons/logo-96.png",
|
||||||
wx / "manifest.json" -> "manifest.json"
|
wx / "manifest.json" -> "manifest.json"
|
||||||
), webext)
|
),
|
||||||
|
webext
|
||||||
|
)
|
||||||
|
|
||||||
IO.zip(Seq(
|
IO.zip(
|
||||||
|
Seq(
|
||||||
webext -> s"docspell-tools-${version}/firefox/docspell-extension.xpi",
|
webext -> s"docspell-tools-${version}/firefox/docspell-extension.xpi",
|
||||||
wx / "native/app_manifest.json" -> s"docspell-tools-${version}/firefox/native/app_manifest.json",
|
wx / "native/app_manifest.json" -> s"docspell-tools-${version}/firefox/native/app_manifest.json",
|
||||||
wx / "native/native.py" -> s"docspell-tools-${version}/firefox/native/native.py",
|
wx / "native/native.py" -> s"docspell-tools-${version}/firefox/native/native.py",
|
||||||
dir / "ds.sh" -> s"docspell-tools-${version}/ds.sh",
|
dir / "ds.sh" -> s"docspell-tools-${version}/ds.sh",
|
||||||
dir / "consumedir.sh" -> s"docspell-tools-${version}/consumedir.sh"
|
dir / "consumedir.sh" -> s"docspell-tools-${version}/consumedir.sh"
|
||||||
), archive)
|
),
|
||||||
|
archive
|
||||||
|
)
|
||||||
|
|
||||||
Seq(archive)
|
Seq(archive)
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- aliases
|
// --- aliases
|
||||||
|
|
||||||
addCommandAlias("make", ";set webapp/elmCompileMode := ElmCompileMode.Production ;root/openapiCodegen ;root/test:compile")
|
addCommandAlias(
|
||||||
|
"make",
|
||||||
|
";set webapp/elmCompileMode := ElmCompileMode.Production ;root/openapiCodegen ;root/test:compile"
|
||||||
|
)
|
||||||
addCommandAlias("make-zip", ";restserver/universal:packageBin ;joex/universal:packageBin")
|
addCommandAlias("make-zip", ";restserver/universal:packageBin ;joex/universal:packageBin")
|
||||||
addCommandAlias("make-deb", ";restserver/debian:packageBin ;joex/debian:packageBin")
|
addCommandAlias("make-deb", ";restserver/debian:packageBin ;joex/debian:packageBin")
|
||||||
addCommandAlias("make-tools", ";root/toolsPackage")
|
addCommandAlias("make-tools", ";root/toolsPackage")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user