From e4a1106495bbd9e3950e4275be40ed7e3e1fb13f Mon Sep 17 00:00:00 2001 From: Jakub Chrzanowski Date: Wed, 17 Jun 2020 21:06:57 +0200 Subject: [PATCH] GitHub Actions - template cleanup workflow --- .../getting-started_use-this-template.png | Bin 0 -> 75669 bytes .github/template-cleanup/CHANGELOG.md | 7 ++ .github/template-cleanup/README.md | 28 ++++++++ .github/workflows/build.yml | 14 ++-- .github/workflows/release.yml | 3 + .github/workflows/template-cleanup.yml | 67 ++++++++++++++++++ README.md | 38 ++++++++-- build.gradle.kts | 12 +++- settings.gradle.kts | 6 ++ .../{TemplateBundle.kt => MyBundle.kt} | 4 +- .../template/services/MyApplicationService.kt | 4 +- .../template/services/MyProjectService.kt | 4 +- src/main/resources/META-INF/plugin.xml | 1 - ...eBundle.properties => MyBundle.properties} | 2 +- 14 files changed, 168 insertions(+), 22 deletions(-) create mode 100644 .github/readme/getting-started_use-this-template.png create mode 100644 .github/template-cleanup/CHANGELOG.md create mode 100644 .github/template-cleanup/README.md create mode 100644 .github/workflows/template-cleanup.yml create mode 100644 settings.gradle.kts rename src/main/kotlin/org/jetbrains/plugins/template/{TemplateBundle.kt => MyBundle.kt} (83%) rename src/main/resources/messages/{TemplateBundle.properties => MyBundle.properties} (78%) diff --git a/.github/readme/getting-started_use-this-template.png b/.github/readme/getting-started_use-this-template.png new file mode 100644 index 0000000000000000000000000000000000000000..0a293ae1f93ff7343847df3c553f0f2286f6b840 GIT binary patch literal 75669 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 z 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%0AHM%Ss5e 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 literal 0 HcmV?d00001 diff --git a/.github/template-cleanup/CHANGELOG.md b/.github/template-cleanup/CHANGELOG.md new file mode 100644 index 0000000..7b8435d --- /dev/null +++ b/.github/template-cleanup/CHANGELOG.md @@ -0,0 +1,7 @@ + + +# %NAME% Changelog + +## [Unreleased] +### Added +- Initial scaffold created from [IntelliJ Plugin Template](https://github.com/JetBrains/intellij-plugin-template) diff --git a/.github/template-cleanup/README.md b/.github/template-cleanup/README.md new file mode 100644 index 0000000..873819b --- /dev/null +++ b/.github/template-cleanup/README.md @@ -0,0 +1,28 @@ +# %NAME% + +![Build](https://github.com/hsz/intellij-plugin-template/workflows/Build/badge.svg) + + +This Fancy IntelliJ Plugin is going to be your implementation of the brilliant ideas that you have. + +This specific section is a source for the [plugin.xml](./src/main/resources/META-INF/plugin.xml) file which will be +extracted by the [Gradle](./build.gradle.kts) during the build process. + +To keep everything working, do not remove `` sections. + + +## Installation + +- Using IDE built-in plugin system: + + Preferences > Plugins > Marketplace > Search for "%NAME%" > + Install Plugin + +- Manually: + + Download the [latest release](https://github.com/%REPOSITORY%/releases/latest) and install it manually using + Preferences > Plugins > ⚙️ > Install plugin from disk... + + +--- +Plugin based on the [IntelliJ Plugin Template](https://github.com/JetBrains/intellij-plugin-template). diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8b33f86..6a255a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,9 +1,11 @@ -# GitHub Actions Workflow created for testing the plugin in three steps: -# - test using Gradle tasks, such as tes and verifyPlugin, -# - test building process by preparing the artifact using buildPlugin Gradle task, -# - run IntelliJ Plugin Verifier. +# GitHub Actions Workflow created for testing and preparing the plugin release in following steps: +# - validate Gradle Wrapper, +# - run test and verifyPlugin tasks, +# - run buildPlugin task and prepare artifact for the further tests, +# - run IntelliJ Plugin Verifier, +# - create a draft release. # -# Workflow is triggered on push or pull request event. +# Workflow is triggered on push and pull_request events. # # Docs: # - GitHub Actions: https://help.github.com/en/actions @@ -156,7 +158,7 @@ jobs: # If accepted and published, release workflow would be triggered. releaseDraft: name: Release Draft -# if: github.ref == 'refs/heads/master' + if: github.ref == 'refs/heads/master' needs: [build, verify] runs-on: ubuntu-latest steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b6f8148..4f48bb3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,3 +1,6 @@ +# GitHub Actions Workflow created for handling the release process based on the draft release prepared +# with the Build workflow. Running the publishPlugin task requires the PUBLISH_TOKEN secret provided. + name: Release on: release: diff --git a/.github/workflows/template-cleanup.yml b/.github/workflows/template-cleanup.yml new file mode 100644 index 0000000..f157921 --- /dev/null +++ b/.github/workflows/template-cleanup.yml @@ -0,0 +1,67 @@ +# GitHub Actions Workflow responsible for cleaning up the IntelliJ Plugin Template repository from +# the template-specific files and configurations. This workflow is supposed to be triggered automatically +# when a new template-based repository has been created. + +name: Tempalte Cleanup +on: + push: + branches: + - master + +jobs: + + # Run cleaning process only if workflow is triggered by the non-JetBrains/intellij-plugin-template repository. + template-cleanup: + name: Template Cleanup + runs-on: ubuntu-latest + if: github.repository != 'JetBrains/intellij-plugin-template' + steps: + + # Check out current repository + - name: Fetch Sources + uses: actions/checkout@v2 + + # Cleanup project + - name: Cleanup + run: | + export LC_CTYPE=C + export LANG=C + + # Prepare variables + NAME="${GITHUB_REPOSITORY##*/}" + SAFE_NAME=$(echo $NAME | sed 's/[^a-zA-Z0-9]//g' | tr '[:upper:]' '[:lower:]') + ACTOR=$(echo $GITHUB_ACTOR | tr '[:upper:]' '[:lower:]') + GROUP="com.github.$ACTOR.$SAFE_NAME" + + # Replace placeholders in the template-cleanup files + sed -i '' "s/%NAME%/$NAME/g" .github/template-cleanup/* + sed -i '' "s/%REPOSITORY%/${GITHUB_REPOSITORY/\//\\/}/g" .github/template-cleanup/* + sed -i '' "s/%GROUP%/$GROUP/g" .github/template-cleanup/* + + # Replace template package name in project files with $GROUP + sed -i '' "s/org.jetbrains.plugins.template/$GROUP/g" gradle.properties + find . -type f -exec sed -i '' "s/org.jetbrains.plugins.template/$GROUP/g" {} + + + # Move content + mkdir -p src/main/kotlin/${GROUP//.//} + cp -R .github/template-cleanup/* . + cp -R src/main/kotlin/org/jetbrains/plugins/template/* src/main/kotlin/${GROUP//.//}/ + + # Cleanup + rm -rf .github/readme + rm -rf .github/template-cleanup + rm -rf src/main/kotlin/org + rm .github/workflows/template-cleanup.yml + + # Commit modified files + - name: Commit files + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git commit -m "Template cleanup" -a + + # Push changes + - name: Push changes + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 1ace8f1..d2bbb4d 100644 --- a/README.md +++ b/README.md @@ -3,13 +3,15 @@ [![official JetBrains project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) ![Build](https://github.com/hsz/intellij-plugin-template/workflows/Build/badge.svg) -IntelliJ Plugin Template is a repository that provides a pure boilerplate for creating a plugin project with ease -designed as a GitHub template repository (check the [Creating a repository from a template][gh-template] article). + +**IntelliJ Plugin Template** is a repository that provides a pure boilerplate for creating a plugin project with ease +designed as a **GitHub Template Repository** (check the [Creating a repository from a template][gh-template] article). The main goal for this Template is to speed up the setup phase of the plugin development for the new as well as existing -developers by preconfiguring the project scaffold, CI and linking to the proper documentation pages as well as keeping +developers by preconfiguring the project scaffold, CI and linking to the proper documentation pages and keeping everything in the most straightforward manner. + -We can detail here the following parts: +We can highlight here the following parts: - Gradle configuration - Sample code: @@ -21,9 +23,21 @@ We can detail here the following parts: - CI based on GitHub actions - Release and changelog maintenance flow -## Getting started +## Getting Started -TODO +Before diving into the plugin development and everything that happens around, it is worth mentioning the fundamental +idea behind the GitHub Templates: by creating a new project using the current template, you start with no history +and no reference to this repository - it is the cut corner for creating a new repository with copy-pasting the content +or cloning repositories and clearing the history by your own. + +The only thing that you have to do is clicking the **Use this template** button. + +![Use this template][file:getting-started_use-this-template.png] + +After creating your blank project from the template, there will be the [Template Cleanup][file:template_cleanup.yml] +workflow triggered to override or remove template-specific configuration, like plugin name, current changelog, etc. + +As a last step, it is required to manually specify the `pluginName` and `pluginGroup` in the `gradle.properties` file. ## Gradle @@ -39,7 +53,10 @@ TODO ## Continuous Integration -TODO +Unit tests +Detekt +verifyPlugin +intellij-plugin-verifier ## Release Flow @@ -55,6 +72,10 @@ and inside of the Plugin Manager's item details. There are many different methods of handling the project's changelog. One of them, used in the current template project, is the [Keep a Changelog][keep-a-changelog] approach. +# Publishing Plugin + +Cannot find org.jetbrains.plugins.template. Note that you need to upload the plugin to the repository at least once manually (to specify options like the license, repository URL etc.). Follow the instructions: https://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/publishing_plugin.html + ## Useful Links - [IntelliJ Platform SDK DevGuide][sdk-docs] @@ -73,3 +94,6 @@ is the [Keep a Changelog][keep-a-changelog] approach. [slack]: https://plugins.jetbrains.com/slack [forum]: https://intellij-support.jetbrains.com/hc/en-us/community/topics/200366979-IntelliJ-IDEA-Open-API-and-Plugin-Development [keep-a-changelog]: https://keepachangelog.com + +[file:getting-started_use-this-template.png]: ./.github/readme/getting-started_use-this-template.png +[file:template_cleanup.yml]: ./.github/workflows/template-cleanup.yml diff --git a/build.gradle.kts b/build.gradle.kts index db453bd..dc4ee03 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,6 @@ import io.gitlab.arturbosch.detekt.Detekt import org.jetbrains.changelog.closure +import org.jetbrains.changelog.markdownToHTML import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { @@ -10,7 +11,7 @@ plugins { // gradle-intellij-plugin - read more: https://github.com/JetBrains/gradle-intellij-plugin id("org.jetbrains.intellij") version "0.4.21" // gradle-changelog-plugin - read more: https://github.com/JetBrains/gradle-changelog-plugin - id("org.jetbrains.changelog") version "0.3.1" + id("org.jetbrains.changelog") version "0.3.2" // detekt linter - read more: https://detekt.github.io/detekt/kotlindsl.html id("io.gitlab.arturbosch.detekt") version "1.10.0-RC1" } @@ -82,6 +83,15 @@ tasks { version(pluginVersion) sinceBuild(pluginSinceBuild) untilBuild(pluginUntilBuild) + + // Extract the section from README.md and provide for the plugin's manifest + pluginDescription(closure { + File("./README.md").readText().lines().run { + subList(indexOf("") + 1, indexOf("")) + }.joinToString("\n").run { markdownToHTML(this) } + }) + + // Get the latest available change notes from the changelog file changeNotes(closure { changelog.getLatest().toHTML() }) diff --git a/settings.gradle.kts b/settings.gradle.kts new file mode 100644 index 0000000..3b58236 --- /dev/null +++ b/settings.gradle.kts @@ -0,0 +1,6 @@ +pluginManagement { + repositories { + mavenLocal() + gradlePluginPortal() + } +} diff --git a/src/main/kotlin/org/jetbrains/plugins/template/TemplateBundle.kt b/src/main/kotlin/org/jetbrains/plugins/template/MyBundle.kt similarity index 83% rename from src/main/kotlin/org/jetbrains/plugins/template/TemplateBundle.kt rename to src/main/kotlin/org/jetbrains/plugins/template/MyBundle.kt index 6bc8a04..be0c472 100644 --- a/src/main/kotlin/org/jetbrains/plugins/template/TemplateBundle.kt +++ b/src/main/kotlin/org/jetbrains/plugins/template/MyBundle.kt @@ -5,9 +5,9 @@ import org.jetbrains.annotations.NonNls import org.jetbrains.annotations.PropertyKey @NonNls -private const val BUNDLE = "messages.TemplateBundle" +private const val BUNDLE = "messages.MyBundle" -object TemplateBundle : DynamicBundle(BUNDLE) { +object MyBundle : DynamicBundle(BUNDLE) { @Suppress("SpreadOperator") @JvmStatic diff --git a/src/main/kotlin/org/jetbrains/plugins/template/services/MyApplicationService.kt b/src/main/kotlin/org/jetbrains/plugins/template/services/MyApplicationService.kt index 8be1e09..2997c27 100644 --- a/src/main/kotlin/org/jetbrains/plugins/template/services/MyApplicationService.kt +++ b/src/main/kotlin/org/jetbrains/plugins/template/services/MyApplicationService.kt @@ -1,10 +1,10 @@ package org.jetbrains.plugins.template.services -import org.jetbrains.plugins.template.TemplateBundle +import org.jetbrains.plugins.template.MyBundle class MyApplicationService { init { - println(TemplateBundle.message("applicationService")) + println(MyBundle.message("applicationService")) } } diff --git a/src/main/kotlin/org/jetbrains/plugins/template/services/MyProjectService.kt b/src/main/kotlin/org/jetbrains/plugins/template/services/MyProjectService.kt index 51bdf3c..df4b01f 100644 --- a/src/main/kotlin/org/jetbrains/plugins/template/services/MyProjectService.kt +++ b/src/main/kotlin/org/jetbrains/plugins/template/services/MyProjectService.kt @@ -1,11 +1,11 @@ package org.jetbrains.plugins.template.services import com.intellij.openapi.project.Project -import org.jetbrains.plugins.template.TemplateBundle +import org.jetbrains.plugins.template.MyBundle class MyProjectService(project: Project) { init { - println(TemplateBundle.message("projectService", project.name)) + println(MyBundle.message("projectService", project.name)) } } diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 67ca842..f9d230d 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -2,7 +2,6 @@ org.jetbrains.plugins.template Template JetBrains - Demonstrates various aspects of interacting with project model diff --git a/src/main/resources/messages/TemplateBundle.properties b/src/main/resources/messages/MyBundle.properties similarity index 78% rename from src/main/resources/messages/TemplateBundle.properties rename to src/main/resources/messages/MyBundle.properties index 45b5d87..78dbb24 100644 --- a/src/main/resources/messages/TemplateBundle.properties +++ b/src/main/resources/messages/MyBundle.properties @@ -1,3 +1,3 @@ -name=Template Plugin +name=My Plugin applicationService=Application service projectService=Project service: {0}