diff --git a/build.gradle b/build.gradle index 7a844a8..6fa89e4 100644 --- a/build.gradle +++ b/build.gradle @@ -9,6 +9,7 @@ buildscript { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version" + classpath "com.github.breadmoirai:github-release:$gradle_github_release_plugin_version" } } @@ -21,6 +22,7 @@ project.version = "0.6.1" project.group = "com.insanusmokrassar" apply from: "publish.gradle" +apply from: "github_release.gradle" repositories { mavenLocal() diff --git a/changelog_parser.sh b/changelog_parser.sh new file mode 100755 index 0000000..8980f88 --- /dev/null +++ b/changelog_parser.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +function parse() { + version=$1 + + while IFS= read -r line && [ -z "`echo $line | grep -e "^#\+ $version"`" ] + do + : # do nothing + done + + while IFS= read -r line && [ -z "`echo $line | grep -e "^#\+"`" ] + do + echo "$line" + done +} + +version=$1 +file=$2 + +if [ -n "$file" ]; then + parse $version < "$file" +else + parse $version +fi diff --git a/github_release.gradle b/github_release.gradle new file mode 100644 index 0000000..94284ee --- /dev/null +++ b/github_release.gradle @@ -0,0 +1,27 @@ +private String getCurrentVersionChangelog() { + OutputStream changelogDataOS = new ByteArrayOutputStream() + exec { + standardOutput = changelogDataOS + commandLine './changelog_info_retriever', "$library_version", 'CHANGELOG.md' + } + + return changelogDataOS.toString().trim() +} + +if (new File(projectDir, "secret.gradle").exists()) { + apply from: './secret.gradle' + apply plugin: "com.github.breadmoirai.github-release" + + githubRelease { + token "${project.property('GITHUB_RELEASE_TOKEN')}" + + owner "InsanusMokrassar" + repo "${rootProject.name}" + + tagName "$library_version" + releaseName "$library_version" + targetCommitish "$library_version" + + body getCurrentVersionChangelog() + } +} diff --git a/gradle.properties b/gradle.properties index 3147f93..705ff8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,4 +5,5 @@ kotlin_serialisation_runtime_version=1.0.0-RC2 klock_version=1.12.1 ktor_version=1.4.1 +gradle_github_release_plugin_version=2.2.12 gradle_bintray_plugin_version=1.8.5 diff --git a/settings.gradle b/settings.gradle index ea3e32b..640a3b2 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,18 +1 @@ -/* - * This settings file was generated by the Gradle 'init' task. - * - * The settings file is used to specify which projects to include in your build. - * In a single project build this file can be empty or even removed. - * - * Detailed information about configuring a multi-project build in Gradle can be found - * in the user guide at https://docs.gradle.org/3.4.1/userguide/multi_project_builds.html - */ - -/* -// To declare projects as part of a multi-project build use the 'include' method -include 'shared' -include 'api' -include 'services:webservice' -*/ - rootProject.name = 'SauceNaoAPI'