diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..476a2c5 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,11 @@ +root = true + +[*] +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 2 +end_of_line = lf + +[*.md] +trim_trailing_whitespace = false diff --git a/.github/workflows/scala.yml b/.github/workflows/scala.yml new file mode 100644 index 0000000..5bac6ec --- /dev/null +++ b/.github/workflows/scala.yml @@ -0,0 +1,23 @@ +name: Scala CI + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-18.04 + strategy: + matrix: + java: [8, 11, 15] + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: ${{ matrix.java }} + + - name: Run Docker containers + run: docker-compose up -d + + - name: Build + run: sbt scalafmtSbtCheck scalafmtCheck diff --git a/.gitignore b/.gitignore index a283220..cc6e8e9 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,7 @@ *.log *~ -# sbt specific +# sbt dist/* target/ lib_managed/ @@ -10,17 +10,24 @@ src_managed/ project/boot/ project/plugins/project/ -# Scala-IDE specific +# Scala-IDE .scala_dependencies .classpath .project .cache .settings -# IntelliJ specific +# IntelliJ .idea/ .idea_modules/ -# Ensime -.ensime -.ensime_cache/ \ No newline at end of file +# Metals +.metals +.bloop +**/metals.sbt + +# Visual Studio Code +.vscode + +# Docker +docker diff --git a/.scalafmt.conf b/.scalafmt.conf index fcf0f6c..70cc842 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,11 +1,11 @@ -project.git = true -version = 2.0.0 -maxColumn = 120 -docstrings = JavaDoc - -align.tokens = ["%", "%%", {code = "=>", owner = "Case"}] -align.openParenCallSite = false -align.openParenDefnSite = false -continuationIndent.callSite = 2 -continuationIndent.defnSite = 2 -danglingParentheses = true \ No newline at end of file +project.git = true +version = 2.4.2 +maxColumn = 120 +docstrings = JavaDoc + +align.tokens = ["%", "%%", {code = "=>", owner = "Case"}] +align.openParenCallSite = false +align.openParenDefnSite = false +continuationIndent.callSite = 2 +continuationIndent.defnSite = 2 +danglingParentheses = true diff --git a/LICENSE b/LICENSE index ab60297..b442934 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2018 +Copyright (c) 2018 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 0b950ea..2b39e49 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,30 @@ -# gitbucket-navlink-plugin -GitBucket plugin which adds a link to navigation bar - -![NavLink settings](images/navlink.gif) - -## Compatibility - -Plugin version | GitBucket version -:--------------|:-------------------- -1.1.X | 4.32.0 - -1.0.1         | 4.23.1 - 4.31.2 - -## Build from source - -Run `sbt assembly` and copy generated `/target/scala-2.13/gitbucket-navlink-plugin-X.X.X.jar` to `~/.gitbucket/plugins/` (If the directory does not exist, create it by hand before copying the jar), or just run `sbt install`. \ No newline at end of file +# gitbucket-navlink-plugin ![Scala CI](https://github.com/SIkebe/gitbucket-navlink-plugin/workflows/Scala%20CI/badge.svg) +GitBucket plugin which adds a link to navigation bar + +![NavLink settings](images/navlink.gif) + +## Compatibility + +Plugin version | GitBucket version +:--------------|:-------------------- +1.2.X | 4.35.0 - +1.1.X | 4.32.0 - 4.34.0 +1.0.1         | 4.23.1 - 4.31.2 + +## Development + +```bash +# Initialize GitBucket and PostgreSQL containers +docker-compose up -d + +# Setup GITBUCKET_HOME +# export GITBUCKET_HOME=/home/sikebe/git/github/gitbucket-navlink-plugin/docker +export GITBUCKET_HOME=/docker + +# Build and copy assembly to GITBUCKET_HOME/plugins/ +sbt install +``` + +## Build and deploy + +Run `sbt assembly` and copy generated `/target/scala-2.13/gitbucket-navlink-plugin-X.X.X.jar` to `GITBUCKET_HOME/plugins/`. diff --git a/build.sbt b/build.sbt index 96ee294..93f4436 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,6 @@ -name := "gitbucket-navlink-plugin" -organization := "com.github.sikebe" -version := "1.1.0" -scalaVersion := "2.13.0" -gitbucketVersion := "4.32.0" -scalacOptions := Seq("-deprecation") \ No newline at end of file +name := "gitbucket-navlink-plugin" +organization := "com.github.sikebe" +version := "1.2.0" +scalaVersion := "2.13.3" +gitbucketVersion := "4.35.0" +scalacOptions := Seq("-deprecation") diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..db8950f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,30 @@ +version: '3.8' + +services: + gitbucket: + image: gitbucket/gitbucket:4 + restart: always + ports: + - 8080:8080 + volumes: + - ./docker:/gitbucket + depends_on: + - db + environment: + - GITBUCKET_DB_URL=jdbc:postgresql://db/gitbucket + - GITBUCKET_DB_USER=gitbucket + - GITBUCKET_DB_PASSWORD=gitbucket + - GITBUCKET_BASE_URL=http://localhost:8080 + - GITBUCKET_HOME=./gitbucket + command: bash -c 'while ! new NavLinkSettingsController() ) - override val globalMenus = Seq( - (_: Context) => Some(Link("navlink", navLinkSettings.globalMenuName, navLinkSettings.globalMenuPath)) - ) + override val globalMenus = + Seq((_: Context) => Some(Link("navlink", navLinkSettings.globalMenuName, navLinkSettings.globalMenuPath))) - override val systemSettingMenus = Seq( - (_: Context) => Some(Link("navlink", "NavLink", "navlink/settings")) - ) + override val systemSettingMenus = Seq((_: Context) => Some(Link("navlink", "NavLink", "navlink/settings"))) val navLinkSettings = loadNavLinkSettings() } diff --git a/src/main/scala/com/github/sikebe/navlink/controller/NavLinkSettingsController.scala b/src/main/scala/com/github/sikebe/navlink/controller/NavLinkSettingsController.scala index 8f8fe10..2f11d25 100644 --- a/src/main/scala/com/github/sikebe/navlink/controller/NavLinkSettingsController.scala +++ b/src/main/scala/com/github/sikebe/navlink/controller/NavLinkSettingsController.scala @@ -35,7 +35,7 @@ trait NavLinkSettingsControllerBase extends ControllerBase { saveNavLinkSettings(form) reload(request.getServletContext(), loadSystemSettings(), request2Session(request).conn) - flash += "info" -> "Successfully updated NavLink." + flash.update("info", "Successfully updated NavLink.") redirect("/navlink/settings") }) } diff --git a/src/main/scala/com/github/sikebe/navlink/service/NavLinkSettingsService.scala b/src/main/scala/com/github/sikebe/navlink/service/NavLinkSettingsService.scala index 459328b..496d76b 100644 --- a/src/main/scala/com/github/sikebe/navlink/service/NavLinkSettingsService.scala +++ b/src/main/scala/com/github/sikebe/navlink/service/NavLinkSettingsService.scala @@ -5,6 +5,7 @@ import java.io.File import gitbucket.core.util.Directory._ import gitbucket.core.util.SyntaxSugars._ import NavLinkSettingsService._ +import scala.util.Using trait NavLinkSettingsService { @@ -14,17 +15,13 @@ trait NavLinkSettingsService { defining(new java.util.Properties()) { props => props.setProperty(GlobalMenuName, settings.globalMenuName) props.setProperty(GlobalMenuPath, settings.globalMenuPath) - using(new java.io.FileOutputStream(NavLinkConf)) { out => - props.store(out, null) - } + Using.resource(new java.io.FileOutputStream(NavLinkConf)) { out => props.store(out, null) } } def loadNavLinkSettings(): NavLinkSettings = defining(new java.util.Properties()) { props => if (NavLinkConf.exists) { - using(new java.io.FileInputStream(NavLinkConf)) { in => - props.load(in) - } + Using.resource(new java.io.FileInputStream(NavLinkConf)) { in => props.load(in) } } NavLinkSettings( getValue[String](props, GlobalMenuName, ""), diff --git a/src/main/twirl/sikebe/gitbucket/navlink/settings.scala.html b/src/main/twirl/sikebe/gitbucket/navlink/settings.scala.html index 06649fd..a9ffe5e 100644 --- a/src/main/twirl/sikebe/gitbucket/navlink/settings.scala.html +++ b/src/main/twirl/sikebe/gitbucket/navlink/settings.scala.html @@ -24,4 +24,4 @@ -}} \ No newline at end of file +}} diff --git a/src/main/twirl/sikebe/gitbucket/navlink/sidebar.scala.html b/src/main/twirl/sikebe/gitbucket/navlink/sidebar.scala.html index ffefecc..aa3f23e 100644 --- a/src/main/twirl/sikebe/gitbucket/navlink/sidebar.scala.html +++ b/src/main/twirl/sikebe/gitbucket/navlink/sidebar.scala.html @@ -13,4 +13,4 @@ -@body \ No newline at end of file +@body