Skip to content

Commit

Permalink
feat: Initial Commit (WIP)
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucky3028 committed Sep 2, 2022
1 parent a6f657a commit 28432b7
Show file tree
Hide file tree
Showing 21 changed files with 593 additions and 0 deletions.
71 changes: 71 additions & 0 deletions .github/workflows/ci.yml
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
14 changes: 14 additions & 0 deletions .idea/codeStyles/Project.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 11 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

150 changes: 150 additions & 0 deletions .idea/modules/TimeToGo-build.iml

Large diffs are not rendered by default.

58 changes: 58 additions & 0 deletions .idea/modules/TimeToGo.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 18 additions & 0 deletions .idea/sbt.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

23 changes: 23 additions & 0 deletions .idea/scala_compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 9 additions & 0 deletions .scalafix.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
rules = [
NoAutoTupling,
RemoveUnused,
DisableSyntax,
LeakingImplicitClassVal,
NoValInForComprehension,
ProcedureSyntax,
RedundantSyntax
]
30 changes: 30 additions & 0 deletions .scalafmt.conf
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
90 changes: 90 additions & 0 deletions build.sbt
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
Loading

0 comments on commit 28432b7

Please sign in to comment.