OSDN Git Service

Release v0.14.1
[dictzip-java/dictzip-java.git] / build.gradle
index 360c19a..ee3932c 100644 (file)
-import org.apache.tools.ant.filters.ReplaceTokens
-import groovy.swing.SwingBuilder
-
 plugins {
-    // github
-    id "co.riiid.gradle" version "0.4.2"
-    // bintray
-    id "com.jfrog.bintray" version "1.6"
+    alias(libs.plugins.nexus.publish)
+    alias(libs.plugins.git.version)
 }
 
-// common settings
-subprojects {
-  apply plugin: 'java'
-  apply plugin: 'jacoco'
-  apply plugin: 'checkstyle'
-  apply plugin: 'findbugs'
-  apply plugin: 'co.riiid.gradle'
-  apply plugin: 'com.jfrog.bintray'
-  apply plugin: 'maven'
-  apply plugin: 'signing'
-
-  sourceCompatibility = jdkVersion
-  targetCompatibility = jdkVersion
-  [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
-  [compileJava, compileTestJava]*.options*.bootClasspath = "$JDK_HOME/jre/lib/rt.jar"
-  checkstyle {
-    config = resources.text.fromFile("${rootProject.projectDir}/config/checkstyle/checkstyle.xml")
-    ignoreFailures = true
-    toolVersion = '6.16.1'
-  }
-
-  // Force prevent checkstyle/findbugs on Test.
-  task checkstyleTest(overwrite: true) << {}
-  task findbugsTest(overwrite: true) << {}
-  tasks.withType(FindBugs) {
-    reports {
-      xml.enabled = false
-      html.enabled = true
-    }
-  }
-
-  repositories {
-    jcenter()
-    mavenCentral()
-  }
-
-  dependencies {
-    testCompile 'org.testng:testng:6.9.10'
-  }
-
-  test {
-    useTestNG()
-  }
-
-  javadoc {
-    options.locale = 'en_US'
-  }
+group = projectGroup
 
-  task sourceJar(type: Jar) {
-      from sourceSets.main.allSource
-      classifier = 'sources'
-  }
-
-  task javadocJar(type: Jar, dependsOn: javadoc) {
-      classifier = 'javadoc'
-      from javadoc.destinationDir
-  }
-
-  artifacts {
-      archives jar
-      archives sourceJar
-      archives javadocJar
-  }
-    
-    signing {
-      sign configurations.archives
-    }
+// calculate version string from git tag, hash and commit distance
+// It treat as release tag when current HEAD has a tag,
+// and repository is clean, no modification,and no untracked files,
+if (versionDetails().isCleanTag) {
+    // drop first 'v' from version tag
+    version = gitVersion().substring(1)
+} else {
+    version = versionDetails().lastTag.substring(1) + '-' + versionDetails().commitDistance + '-' + versionDetails().gitHash + '-SNAPSHOT'
 }
 
-project(':dictzip-lib') {
-  dependencies {
-    testCompile 'tokyo.northside:northside-io:0.2.0'
-  }
-  version = projectVersion
-  group = projectGroup
-  bintray {
-      user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
-      key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
-      configurations = ['archives']
-      pkg {
-          repo = 'maven'
-          name = 'dictzip-lib'
-          userOrg = 'dictzip'
-          licenses = ['GPL-2.0+CE']
-          vcsUrl = projectUrl
-          labels = ['java','dictzip']
-          publicDownloadNumbers = true
-      }
-  }
-  task mandoc << {}
-  task githubRelease(overwrite: true) << {}
-}
-
-project(':dictzip-cli') {
-  apply plugin: 'application'
-  mainClassName = 'org.dict.zip.cli.Main'
-  applicationName = 'dictzip'
-
-  dependencies {
-    compile project(':dictzip-lib'),
-       'gnu.getopt:java-getopt:1.0.13'
-    testCompile 'tokyo.northside:northside-io:0.2.0'
-  }
-  version = projectVersion
-  group = projectGroup
-  bintray {
-      user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
-      key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
-      configurations = ['archives']
-      pkg {
-          repo = 'maven'
-          name = 'dictzip-cli'
-          userOrg = 'dictzip'
-          licenses = ['GPL-3.0']
-          vcsUrl = projectUrl
-          labels = ['java','dictzip']
-          publicDownloadNumbers = true
-      }
-  }
-
-  task mandoc(type: Copy, overwrite: true) {
-    from "doc/dictzip.1.in"
-    into 'build/docs'
-    rename { String fileName ->
-        fileName.replace('dictzip.1.in', 'dictzip.1')
+nexusPublishing.repositories {
+    sonatype {
+        username = project.hasProperty('sonatypeUsername') ? project.property('sonatypeUsername') : System.getenv('SONATYPE_USER')
+        password = project.hasProperty('sonatypePassword') ? project.property('sonatypePassword') : System.getenv('SONATYPE_PASS')
     }
-    filter(ReplaceTokens, tokens: [copyright: projectYears, version: projectVersion])
-  }
-
-  distTar {
-    compression = Compression.GZIP
-  }
-  distTar.dependsOn mandoc
-
-  distributions {
-      main {
-          baseName = 'dictzip'
-          contents {
-              from('build/docs/dictzip.1') {
-                  into 'docs/man/man1'
-              }
-              from(javadocJar) {
-                  into 'docs'
-              }
-              from(sourceJar) {
-                  into 'source'
-              }
-          }
-      }
-  }
-  task githubRelease(overwrite: true) << {}
-}
-
-task mandoc << {}
-task bintrayUpload(overwrite: true) << {}
-
-boolean validProperty(propertyName) {
-  try { project.property(propertyName) != null }
-  catch (MissingPropertyException) { false }
-}
-
-String askPassword(prompt) {
-    def keyPass = ''
-    if(System.console() == null) {
-        new SwingBuilder().edt {
-            dialog(modal: true, title: 'Enter password', alwaysOnTop: true, resizable: false, locationRelativeTo: null, pack: true, show: true) {
-                vbox {
-                    label(text: prompt)
-                    def input1 = passwordField()
-                    button(defaultButton: true, text: 'OK', actionPerformed: {
-                        keyPass = input1.password;
-                        dispose();
-                    })
-                }
-            }
-        }
-    } else {
-        keyPass = System.console().readPassword(prompt)
-    }
-    if (keyPass.size() <= 0) {
-        throw new InvalidUserDataException("You must enter the passwords to proceed.")
-    }
-    new String(keyPass)
-}
-
-github {
-    owner = projectOwner
-    repo = 'dictzip-java'
-    token = githubToken
-    tagName = projectTag
-    targetCommitish = 'master'
-    name = projectTag
-    draft = true
-    body = projectReleaseBody
-    assets = [
-            'dictzip-cli/build/distributions/dictzip-' + projectVersion + '.tgz',
-            'dictzip-cli/build/distributions/dictzip-' + projectVersion + '.zip',
-            'dictzip-lib/build/libs/dictzip-lib-' + projectVersion + '.jar',
-            'dictzip-lib/build/libs/dictzip-lib-' + projectVersion + '-sources.jar',
-            'dictzip-lib/build/libs/dictzip-lib-' + projectVersion + '-javadoc.jar'
-    ]
-}
-
-if (gradle.startParameter.taskNames.contains('bintrayUpload')  ||
-    gradle.startParameter.taskNames.contains('githubRelease')) {
-    assert validProperty('signing.keyId'),             'properties for signing must be provided'
-    assert validProperty('signing.secretKeyRingFile'), 'properties for signing must be provided'
-    ext.'signing.password' = askPassword("Enter password for PGP key ${property('signing.keyId')}: ")
-
 }