-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
name: CI and CD | ||
on: | ||
push: | ||
paths: | ||
- src/** | ||
- build.sbt | ||
- .scalafix.conf | ||
- .scalafmt.conf | ||
- project/* | ||
- .github/** | ||
pull_request: | ||
paths: | ||
- src/** | ||
- build.sbt | ||
- .scalafix.conf | ||
- .scalafmt.conf | ||
- project/* | ||
- .github/** | ||
|
||
jobs: | ||
ci: | ||
name: Build, Lint and Test | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
- uses: actions/setup-java@v3 | ||
with: | ||
distribution: temurin | ||
java-version: 8 | ||
- name: Prepare build dependencies cache | ||
uses: actions/cache@v3 | ||
env: | ||
cache-name: cache-build-dependencies | ||
cache-version: v-1 | ||
with: | ||
path: | | ||
~/.ivy2/cache | ||
~/.sbt | ||
~/.m2 | ||
~/.cache | ||
key: build-${{ env.cache-name }}-${{ env.cache-version }}-${{ github.ref }}-${{ hashFiles('**/build.sbt') }} | ||
restore-keys: | | ||
build-${{ env.cache-name }}-${{ env.cache-version }}-${{ github.ref }}- | ||
build-${{ env.cache-name }}-${{ env.cache-version }}- | ||
- name: Prepare build cache | ||
if: github.ref != 'refs/heads/main' | ||
uses: actions/cache@v3 | ||
env: | ||
cache-name: cache-build | ||
cache-version: v-1 | ||
with: | ||
path: | | ||
target | ||
project/target | ||
project/project/target | ||
key: build-${{ env.cache-name }}-${{ env.cache-version }}-${{ github.ref }}-${{ github.sha }} | ||
restore-keys: | | ||
build-${{ env.cache-name }}-${{ env.cache-version }}-${{ github.ref }}- | ||
build-${{ env.cache-name }}-${{ env.cache-version }}- | ||
- name: Check format with Scalafmt | ||
run: sbt scalafmtCheckAll | ||
- name: Check lint with Scalafix | ||
run: sbt "scalafix --check" | ||
- name: Build artifact with Test | ||
run: sbt assembly | ||
|
||
- name: Clean build artifact for caching target folder | ||
run: rm -r target/build |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
rules = [ | ||
NoAutoTupling, | ||
RemoveUnused, | ||
DisableSyntax, | ||
LeakingImplicitClassVal, | ||
NoValInForComprehension, | ||
ProcedureSyntax, | ||
RedundantSyntax | ||
] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
version = 3.5.9 | ||
preset=IntelliJ | ||
runner.dialect = scala213 | ||
|
||
maxColumn = 96 | ||
|
||
includeNoParensInSelectChains = true | ||
|
||
optIn { | ||
breakChainOnFirstMethodDot = false | ||
forceBlankLineBeforeDocstring = true | ||
} | ||
|
||
newlines { | ||
beforeCurlyLambdaParams = multilineWithCaseOnly | ||
afterCurlyLambda = squash | ||
implicitParamListModifierPrefer = before | ||
sometimesBeforeColonInMethodReturnType = true | ||
} | ||
|
||
assumeStandardLibraryStripMargin = true | ||
align.stripMargin = true | ||
|
||
docstrings { | ||
style = Asterisk | ||
oneline = unfold | ||
wrap = no | ||
} | ||
|
||
trailingCommas = never |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
import ResourceFilter.filterResources | ||
import sbt.Keys.baseDirectory | ||
|
||
// region Dependencies | ||
|
||
resolvers ++= Seq( | ||
"SpigotMC" at "https://maven.elmakers.com/repository/", | ||
"Sonatype OSS" at "https://s01.oss.sonatype.org/content/groups/public/" | ||
) | ||
|
||
val providedDependencies = Seq( | ||
// 本来は1.16.5を想定しているが、存在しないので仕方なく1.16.4 | ||
"org.spigotmc" % "spigot-api" % "1.16.4-R0.1-SNAPSHOT" | ||
).map(_ % "provided") | ||
|
||
val testDependencies = Seq( | ||
"org.scalatest" %% "scalatest" % "3.2.13" | ||
).map(_ % "test") | ||
|
||
libraryDependencies := providedDependencies ++ testDependencies | ||
|
||
excludeDependencies ++= Seq( | ||
ExclusionRule(organization = "org.bukkit", name = "bukkit"), | ||
) | ||
|
||
// endregion | ||
|
||
// region プラグインJarに埋め込むリソースの処理 | ||
|
||
// This region is | ||
// * licensed under GPL v3 (https://github.com/GiganticMinecraft/SeichiAssist/blob/2e2c33af7138b3f0f6137245ba389c7a98f92f23/LICENSE) | ||
// * written in SeichiAssist (https://github.com/GiganticMinecraft/SeichiAssist/blob/398d224228b933f5523ceebf173f3fad46605cb8/build.sbt#L135-L171) | ||
|
||
val tokenReplacementMap = | ||
settingKey[Map[String, String]]("Map specifying what tokens should be replaced to") | ||
|
||
tokenReplacementMap := Map("name" -> name.value, "version" -> version.value) | ||
|
||
val filesToBeReplacedInResourceFolder = Seq("plugin.yml") | ||
|
||
val filteredResourceGenerator = taskKey[Seq[File]]("Resource generator to filter resources") | ||
|
||
Compile / filteredResourceGenerator := | ||
filterResources( | ||
filesToBeReplacedInResourceFolder, | ||
tokenReplacementMap.value, | ||
(Compile / resourceManaged).value, | ||
(Compile / resourceDirectory).value | ||
) | ||
|
||
Compile / resourceGenerators += (Compile / filteredResourceGenerator) | ||
|
||
Compile / unmanagedResources ++= Seq(baseDirectory.value / "LICENSE") | ||
|
||
// トークン置換を行ったファイルをunmanagedResourcesのコピーから除外する | ||
unmanagedResources / excludeFilter := | ||
filesToBeReplacedInResourceFolder.foldLeft((unmanagedResources / excludeFilter).value)( | ||
_.||(_) | ||
) | ||
|
||
// endregion | ||
|
||
// region Other settings | ||
|
||
lazy val root = (project in file(".")).settings( | ||
name := "TimeToGo", | ||
scalaVersion := "2.13.8", | ||
assembly / assemblyOutputPath := baseDirectory.value / "target" / "build" / s"${name.value}-${version.value}.jar", | ||
// scalafixがsemanticdbを必要とする | ||
semanticdbEnabled := true, | ||
semanticdbVersion := scalafixSemanticdb.revision, | ||
scalacOptions ++= Seq( | ||
"-encoding", | ||
"utf8", | ||
"-unchecked", | ||
"-language:higherKinds", | ||
"-deprecation", | ||
"-Ypatmat-exhaust-depth", | ||
"320", | ||
"-Ymacro-annotations", | ||
"-Ywarn-unused" | ||
), | ||
javacOptions ++= Seq("-encoding", "utf8"), | ||
// build.sbtそのほかビルドの設定が変わったときにsbtを自動リロードさせる | ||
Global / onChangedBuildSource := ReloadOnSourceChanges, | ||
// テストが落ちた時にスタックトレースを表示する | ||
Compile / testOptions += Tests.Argument("-oS") | ||
) | ||
|
||
// endregion |