Compare commits
25 commits
Author | SHA1 | Date | |
---|---|---|---|
7440631325 | |||
65a38facda | |||
3e70a53714 | |||
afe6d3ebc9 | |||
34cedc21e6 | |||
e71f4f60ee | |||
68f42777af | |||
1f7861e314 | |||
765c07a85e | |||
bf51d1d826 | |||
9737f66f64 | |||
d17afba52e | |||
c32a7ebdec | |||
062758a5f0 | |||
860d985059 | |||
c678bb7889 | |||
c16f95a8d3 | |||
6d23cead06 | |||
24b12f131e | |||
e1891c47af | |||
17b5ceaaf6 | |||
ebc5b66fac | |||
7a1ff7ee24 | |||
d45e700b6b | |||
b9c865bc6f |
66 changed files with 804 additions and 578 deletions
|
@ -1,3 +1,4 @@
|
|||
version: 2
|
||||
defaults: &defaults
|
||||
working_directory: ~/repo
|
||||
docker:
|
||||
|
@ -7,8 +8,6 @@ defaults: &defaults
|
|||
TERM: dumb
|
||||
CI: true
|
||||
|
||||
version: 2.0
|
||||
|
||||
jobs:
|
||||
build_gradle:
|
||||
<<: *defaults
|
||||
|
|
19
.github/workflows/gradle.yml
vendored
Normal file
19
.github/workflows/gradle.yml
vendored
Normal file
|
@ -0,0 +1,19 @@
|
|||
name: Java CI with Gradle
|
||||
|
||||
on: [push, pull_request, workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up JDK 1.8
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 1.8
|
||||
- name: Grant execute permission for gradlew
|
||||
run: chmod +x gradlew
|
||||
- name: Test with Gradle
|
||||
run: ./gradlew check
|
52
.gitignore
vendored
52
.gitignore
vendored
|
@ -1,32 +1,14 @@
|
|||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
!.vscode/launch.json
|
||||
!.vscode/settings.json
|
||||
!.vscode/tasks.json
|
||||
!gradle-wrapper.jar
|
||||
|
||||
__pycache__
|
||||
.classpath
|
||||
.DS_Store
|
||||
.gradle
|
||||
.history
|
||||
.idea_modules/
|
||||
.idea/**/contentModel.xml
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dbnavigator.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
.idea/**/mongoSettings.xml
|
||||
.idea/**/shelf
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/workspace.xml
|
||||
.idea/caches/build_file_checksums.ser
|
||||
.idea/httpRequests
|
||||
.idea/replstate.xml
|
||||
.kobalt
|
||||
.mtj.tmp/
|
||||
.mvn/timing.properties
|
||||
|
@ -35,20 +17,39 @@
|
|||
.project
|
||||
.scannerwork
|
||||
.settings
|
||||
.vscode/*
|
||||
*.class
|
||||
*.code-workspace
|
||||
*.ctxt
|
||||
*.ear
|
||||
*.iws
|
||||
*.jar
|
||||
*.log
|
||||
*.nar
|
||||
*.rar
|
||||
*.sublime-*
|
||||
*.tar.gz
|
||||
*.war
|
||||
*.zip
|
||||
/**/.idea_modules/
|
||||
/**/.idea/**/caches/build_file_checksums.ser
|
||||
/**/.idea/**/contentModel.xml
|
||||
/**/.idea/**/dataSources.ids
|
||||
/**/.idea/**/dataSources.local.xml
|
||||
/**/.idea/**/dataSources/
|
||||
/**/.idea/**/dbnavigator.xml
|
||||
/**/.idea/**/dictionaries
|
||||
/**/.idea/**/dynamic.xml
|
||||
/**/.idea/**/gradle.xml
|
||||
/**/.idea/**/httpRequests
|
||||
/**/.idea/**/libraries
|
||||
/**/.idea/**/mongoSettings.xml
|
||||
/**/.idea/**/replstate.xml
|
||||
/**/.idea/**/shelf
|
||||
/**/.idea/**/shelf/
|
||||
/**/.idea/**/sqlDataSources.xml
|
||||
/**/.idea/**/tasks.xml
|
||||
/**/.idea/**/uiDesigner.xml
|
||||
/**/.idea/**/usage.statistics.xml
|
||||
/**/.idea/**/workspace.xml
|
||||
/**/.idea/$CACHE_FILE$
|
||||
/**/.idea/$PRODUCT_WORKSPACE_FILE$
|
||||
atlassian-ide-plugin.xml
|
||||
bin/
|
||||
build/
|
||||
|
@ -80,3 +81,4 @@ release.properties
|
|||
target/
|
||||
test-output
|
||||
Thumbs.db
|
||||
venv
|
||||
|
|
31
.gitlab-ci.yml
Normal file
31
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,31 @@
|
|||
image: gradle:alpine
|
||||
|
||||
variables:
|
||||
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
|
||||
|
||||
before_script:
|
||||
- export GRADLE_USER_HOME=`pwd`/.gradle
|
||||
|
||||
stages:
|
||||
- build
|
||||
- test
|
||||
|
||||
build:
|
||||
stage: build
|
||||
script: ./gradlew --build-cache assemble
|
||||
cache:
|
||||
key: "$CI_COMMIT_REF_NAME"
|
||||
policy: push
|
||||
paths:
|
||||
- build
|
||||
- .gradle
|
||||
|
||||
test:
|
||||
stage: test
|
||||
script: ./gradlew check
|
||||
cache:
|
||||
key: "$CI_COMMIT_REF_NAME"
|
||||
policy: pull
|
||||
paths:
|
||||
- build
|
||||
- .gradle
|
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
|
@ -0,0 +1,5 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Erik's Code Style" />
|
||||
</state>
|
||||
</component>
|
1
.idea/copyright/Erik_s_Copyright_Notice.xml
generated
1
.idea/copyright/Erik_s_Copyright_Notice.xml
generated
|
@ -1,5 +1,6 @@
|
|||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="allowReplaceRegexp" value="Copyright" />
|
||||
<option name="notice" value="&#36;file.fileName Copyright (c) 2018-&#36;today.year, Erik C. Thauvin (erik@thauvin.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of this project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
||||
<option name="myName" value="Erik's Copyright Notice" />
|
||||
</copyright>
|
||||
|
|
30
.idea/jarRepositories.xml
generated
Normal file
30
.idea/jarRepositories.xml
generated
Normal file
|
@ -0,0 +1,30 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="MavenLocal" />
|
||||
<option name="name" value="MavenLocal" />
|
||||
<option name="url" value="file:/$MAVEN_REPOSITORY$/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="BintrayJCenter" />
|
||||
<option name="name" value="BintrayJCenter" />
|
||||
<option name="url" value="https://jcenter.bintray.com/" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="MavenLocal" />
|
||||
<option name="name" value="MavenLocal" />
|
||||
<option name="url" value="file:$MAVEN_REPOSITORY$/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
9
.idea/misc.xml
generated
9
.idea/misc.xml
generated
|
@ -1,6 +1,15 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="FrameworkDetectionExcludesConfiguration">
|
||||
<file type="web" url="file://$PROJECT_DIR$/examples/annotation-processor/java" />
|
||||
<file type="web" url="file://$PROJECT_DIR$/examples/annotation-processor/kotlin" />
|
||||
<file type="web" url="file://$PROJECT_DIR$/examples/java" />
|
||||
<file type="web" url="file://$PROJECT_DIR$/examples/kotlin" />
|
||||
</component>
|
||||
<component name="JavaScriptSettings">
|
||||
<option name="languageLevel" value="ES6" />
|
||||
</component>
|
||||
<component name="NodePackageJsonFileManager">
|
||||
<packageJsonPaths />
|
||||
</component>
|
||||
|
|
8
.idea/modules.xml
generated
Normal file
8
.idea/modules.xml
generated
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/semver-gradle.iml" filepath="$PROJECT_DIR$/.idea/semver-gradle.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
2
.idea/scopes/Copyright.xml
generated
2
.idea/scopes/Copyright.xml
generated
|
@ -1,3 +1,3 @@
|
|||
<component name="DependencyValidationManager">
|
||||
<scope name="Copyright" pattern="file[semver.main]:*.kt/||file[semver.test]:*.kt/" />
|
||||
<scope name="Copyright" pattern="file[semver-gradle]:src/main/kotlin/net/thauvin/erik/gradle/semver//*||file[semver-gradle]:src/test/kotlin/net/thauvin/erik/gradle/semver//*||file[examples-kotlin.main]:*/||file[examples-kotlin.test]:*/||file[examples-java.main]:*/||file[examples-java.test]:*/||file[ap-examples-kotlin.main]:*/||file[ap-examples-java.main]:*/" />
|
||||
</component>
|
11
.travis.yml
11
.travis.yml
|
@ -1,8 +1,5 @@
|
|||
language: java
|
||||
|
||||
env:
|
||||
global:
|
||||
- CI=true
|
||||
dist: trusty
|
||||
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
|
@ -28,6 +25,6 @@ cache:
|
|||
|
||||
after_success:
|
||||
- |
|
||||
if [ "${TRAVIS_TEST_RESULT}" == 0 ]; then
|
||||
./gradlew sonarqube
|
||||
fi
|
||||
if [ "${TRAVIS_TEST_RESULT}" == 0 ]; then
|
||||
./gradlew sonarqube
|
||||
fi
|
||||
|
|
23
CHANGELOG.md
23
CHANGELOG.md
|
@ -1,12 +1,29 @@
|
|||
# Change Log
|
||||
|
||||
## [1.0.1](https://github.com/ethauvin/semver-gradle/tree/1.0.1) (2019-05-24)
|
||||
[Full Changelog](https://github.com/ethauvin/semver-gradle/compare/1.0.0...1.0.1)
|
||||
## [1.0.4](https://github.com/ethauvin/semver-gradle/tree/1.0.4) (2019-07-26)
|
||||
[Full Changelog](https://github.com/ethauvin/semver-gradle/compare/1.0.3-beta...1.0.4)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- Access semver version properties in Gradle build file. [\#8](https://github.com/ethauvin/semver-gradle/issues/8)
|
||||
|
||||
## [1.0.3-beta](https://github.com/ethauvin/semver-gradle/tree/1.0.3-beta) (2019-07-25)
|
||||
[Full Changelog](https://github.com/ethauvin/semver-gradle/compare/1.0.2...1.0.3-beta)
|
||||
|
||||
**Closed issues:**
|
||||
|
||||
- Thanks! [\#7](https://github.com/ethauvin/semver-gradle/issues/7)
|
||||
|
||||
## [1.0.2](https://github.com/ethauvin/semver-gradle/tree/1.0.2) (2019-05-24)
|
||||
[Full Changelog](https://github.com/ethauvin/semver-gradle/compare/1.0.1...1.0.2)
|
||||
|
||||
**Implemented enhancements:**
|
||||
|
||||
- version.properties write issue when using NetBeans on Windows. [\#6](https://github.com/ethauvin/semver-gradle/issues/6)
|
||||
|
||||
## [1.0.1](https://github.com/ethauvin/semver-gradle/tree/1.0.1) (2019-05-24)
|
||||
[Full Changelog](https://github.com/ethauvin/semver-gradle/compare/1.0.0...1.0.1)
|
||||
|
||||
## [1.0.0](https://github.com/ethauvin/semver-gradle/tree/1.0.0) (2019-04-23)
|
||||
[Full Changelog](https://github.com/ethauvin/semver-gradle/compare/0.9.9-beta...1.0.0)
|
||||
|
||||
|
@ -48,4 +65,4 @@
|
|||
## [0.9.2-beta](https://github.com/ethauvin/semver-gradle/tree/0.9.2-beta) (2018-07-01)
|
||||
|
||||
|
||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
||||
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
|
@ -1,4 +1,4 @@
|
|||
Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
|
53
README.md
53
README.md
|
@ -1,4 +1,4 @@
|
|||
[](http://opensource.org/licenses/BSD-3-Clause) [](https://sonarcloud.io/dashboard?id=ethauvin_semver-gradle) [](https://travis-ci.org/ethauvin/semver-gradle) [](https://circleci.com/gh/ethauvin/semver-gradle/tree/master) [](https://plugins.gradle.org/plugin/net.thauvin.erik.gradle.semver)
|
||||
[](http://opensource.org/licenses/BSD-3-Clause) [](https://sonarcloud.io/dashboard?id=ethauvin_semver-gradle) [](https://travis-ci.com/ethauvin/semver-gradle) [](https://circleci.com/gh/ethauvin/semver-gradle/tree/master) [](https://plugins.gradle.org/plugin/net.thauvin.erik.gradle.semver)
|
||||
|
||||
# Semantic Version Plugin for Gradle
|
||||
|
||||
|
@ -244,6 +244,57 @@ test.semver=1.0.0
|
|||
|
||||
- __Examples__: [Java](https://github.com/ethauvin/semver-gradle/tree/master/examples/java), [Kotlin](https://github.com/ethauvin/semver-gradle/tree/master/examples/kotlin)
|
||||
|
||||
### Semver Extension Properties
|
||||
|
||||
The values stored in the version properties file can individually be accessed using the `semver` extension, for example:
|
||||
|
||||
```gradle
|
||||
fooTask {
|
||||
doFirst {
|
||||
println "Build: $semver.buildMeta"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The semver extension properties are:
|
||||
|
||||
Property | Description
|
||||
:-------------------------|:----------------------------
|
||||
`semver.semver` | The full semantic version.
|
||||
`semver.version` | Same as `semver.semver`.
|
||||
`semver.major` | The major version.
|
||||
`semver.minor` | The minor version.
|
||||
`semver.patch` | The patch version.
|
||||
`semver.preRelease` | The pre-release version
|
||||
`semver.preReleasePrefix` | The pre-release prefix
|
||||
`semver.buildMeta` | The build metatdata version
|
||||
`semver.buildMetaPrefix` | The build metadata prefix
|
||||
`semver.separator` | The version separator.
|
||||
|
||||
## Version is "unspecified"
|
||||
|
||||
This is a common problem stemming from the configuration and build phases in Gradle.
|
||||
|
||||
It is always preferable to access to version during the execution stage, in a `doFirst` or `doLast` closure within your tasks:
|
||||
|
||||
```gradle
|
||||
task foo() {
|
||||
doFirst {
|
||||
println project.version
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
or if absolutely necessary, at the end of the configuration stage in a `project.afterEvaluate` block:
|
||||
|
||||
```gradle
|
||||
foo {
|
||||
project.afterEvaluate {
|
||||
println project.version
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Source Code Generation
|
||||
|
||||
If you'd like to incorporate the version number data into your source code, please have a look at the [__Semantic Version Annotation Processor__](https://github.com/ethauvin/semver).
|
||||
|
|
9
bitbucket-pipelines.yml
Normal file
9
bitbucket-pipelines.yml
Normal file
|
@ -0,0 +1,9 @@
|
|||
image: openjdk:8
|
||||
|
||||
pipelines:
|
||||
default:
|
||||
- step:
|
||||
caches:
|
||||
- gradle
|
||||
script:
|
||||
- bash ./gradlew check
|
|
@ -2,24 +2,26 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|||
|
||||
plugins {
|
||||
`java-gradle-plugin`
|
||||
`kotlin-dsl`
|
||||
`maven-publish`
|
||||
jacoco
|
||||
id("com.github.ben-manes.versions") version "0.21.0"
|
||||
id("com.gradle.build-scan") version "2.3"
|
||||
id("com.gradle.plugin-publish") version "0.10.1"
|
||||
id("io.gitlab.arturbosch.detekt") version "1.0.0-RC14"
|
||||
id("org.jmailen.kotlinter") version "1.25.2"
|
||||
id("org.sonarqube") version "2.7.1"
|
||||
kotlin("jvm") version "1.3.72"
|
||||
id("com.github.ben-manes.versions") version "0.36.0"
|
||||
id("com.gradle.plugin-publish") version "0.12.0"
|
||||
id("io.gitlab.arturbosch.detekt") version "1.14.2"
|
||||
id("org.gradle.kotlin.kotlin-dsl") version "1.3.6"
|
||||
id("org.sonarqube") version "3.0"
|
||||
}
|
||||
|
||||
version = "1.0.2"
|
||||
version = "1.0.5-beta"
|
||||
group = "net.thauvin.erik.gradle"
|
||||
|
||||
var github = "https://github.com/ethauvin/semver-gradle"
|
||||
var packageName = "net.thauvin.erik.gradle.semver"
|
||||
object VersionInfo {
|
||||
const val spek = "2.0.13"
|
||||
}
|
||||
val versions: VersionInfo by extra { VersionInfo }
|
||||
|
||||
var spek_version = "2.0.5"
|
||||
val github = "https://github.com/ethauvin/semver-gradle"
|
||||
val packageName = "net.thauvin.erik.gradle.semver"
|
||||
|
||||
repositories {
|
||||
jcenter()
|
||||
|
@ -28,12 +30,15 @@ repositories {
|
|||
dependencies {
|
||||
implementation(gradleApi())
|
||||
|
||||
implementation(platform("org.jetbrains.kotlin:kotlin-bom"))
|
||||
implementation(kotlin("stdlib"))
|
||||
testImplementation(kotlin("reflect"))
|
||||
testImplementation(kotlin("test"))
|
||||
|
||||
testImplementation(gradleTestKit())
|
||||
|
||||
testImplementation("org.spekframework.spek2:spek-dsl-jvm:$spek_version")
|
||||
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:$spek_version")
|
||||
testImplementation("org.spekframework.spek2:spek-dsl-jvm:${versions.spek}")
|
||||
testRuntimeOnly("org.spekframework.spek2:spek-runner-junit5:${versions.spek}")
|
||||
}
|
||||
|
||||
tasks {
|
||||
|
@ -61,28 +66,12 @@ tasks {
|
|||
}
|
||||
}
|
||||
|
||||
buildScan {
|
||||
link("GitHub", "https://github.com/ethauvin/semver-gradle/tree/master")
|
||||
if ("true" == System.getenv("CI")) {
|
||||
publishOnFailure()
|
||||
tag("CI")
|
||||
}
|
||||
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||
termsOfServiceAgree = "yes"
|
||||
}
|
||||
|
||||
detekt {
|
||||
input = files("src/main/kotlin", "src/test/kotlin")
|
||||
filters = ".*/resources/.*,.*/build/.*"
|
||||
// input = files("src/main/kotlin", "src/test/kotlin")
|
||||
// filters = ".*/resources/.*,.*/build/.*"
|
||||
baseline = project.rootDir.resolve("detekt-baseline.xml")
|
||||
}
|
||||
|
||||
kotlinter {
|
||||
ignoreFailures = false
|
||||
reporters = arrayOf("html")
|
||||
experimentalRules = false
|
||||
}
|
||||
|
||||
sonarqube {
|
||||
properties {
|
||||
property("sonar.projectName", "semver-gradle")
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<Blacklist timestamp="1555043579716"></Blacklist>
|
||||
<Whitelist timestamp="1555043579714">
|
||||
<ID>ComplexMethod:Utils.kt$Utils$fun loadProperties(file: File): Properties</ID>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>MagicNumber:Utils.kt$Utils$3</ID>
|
||||
<ID>MagicNumber:Utils.kt$Utils$4</ID>
|
||||
<ID>MaxLineLength:SemverPlugin.kt$net.thauvin.erik.gradle.semver.SemverPlugin.kt</ID>
|
||||
<ID>MagicNumber:Utils.kt$Utils$5</ID>
|
||||
<ID>NestedBlockDepth:Utils.kt$Utils$fun loadProperties(file: File): Properties</ID>
|
||||
<ID>NestedBlockDepth:Utils.kt$Utils$fun parseSemVer(input: String, version: Version): String</ID>
|
||||
<ID>NestedBlockDepth:Utils.kt$Utils$fun saveProperties(config: SemverConfig, version: Version)</ID>
|
||||
</Whitelist>
|
||||
</SmellBaseline>
|
||||
<ID>NestedBlockDepth:Utils.kt$Utils$fun parseSemVer(input: String?, version: Version): Boolean</ID>
|
||||
<ID>NestedBlockDepth:Utils.kt$Utils$fun saveProperties(projectDir: File, config: SemverConfig, version: Version)</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
plugins {
|
||||
id 'java'
|
||||
id 'application'
|
||||
id 'net.thauvin.erik.gradle.semver' version '1.0.2'
|
||||
id 'com.github.ben-manes.versions' version '0.21.0'
|
||||
id 'net.thauvin.erik.gradle.semver' version '1.0.4'
|
||||
id 'com.github.ben-manes.versions' version '0.28.0'
|
||||
}
|
||||
|
||||
// ./gradlew
|
||||
|
@ -14,13 +14,16 @@ mainClassName = 'com.example.Example'
|
|||
|
||||
defaultTasks 'run'
|
||||
|
||||
compileJava.options.annotationProcessorGeneratedSourcesDirectory = file("${projectDir}/src/generated/java")
|
||||
|
||||
def semverProcessor = "net.thauvin.erik:semver:1.2.0"
|
||||
|
||||
dependencies {
|
||||
annotationProcessor semverProcessor
|
||||
compileOnly semverProcessor
|
||||
implementation semverProcessor
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
options.annotationProcessorGeneratedSourcesDirectory = file("${projectDir}/src/generated/java")
|
||||
options.compilerArgs += [ "-Asemver.project.dir=$projectDir" ]
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
35
examples/annotation-processor/java/gradlew
vendored
35
examples/annotation-processor/java/gradlew
vendored
|
@ -7,7 +7,7 @@
|
|||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -125,8 +125,8 @@ if $darwin; then
|
|||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
@ -154,19 +154,19 @@ if $cygwin ; then
|
|||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
@ -175,14 +175,9 @@ save () {
|
|||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
* This file is automatically generated.
|
||||
* Do not modify! -- ALL CHANGES WILL BE ERASED!
|
||||
*/
|
||||
|
||||
package com.example;
|
||||
|
||||
import java.util.Date;
|
||||
|
@ -12,17 +13,17 @@ import java.util.Date;
|
|||
* @author <a href="https://github.com/ethauvin/semver">Semantic Version Annotation Processor</a>
|
||||
*/
|
||||
public final class GeneratedVersion {
|
||||
public final static String PROJECT = "Java Example";
|
||||
public final static Date BUILDDATE = new Date(1556062927242L);
|
||||
public final static int MAJOR = 2;
|
||||
public final static int MINOR = 9;
|
||||
public final static int PATCH = 0;
|
||||
public final static String PRERELEASE = "";
|
||||
public final static String PRERELEASE_PREFIX = "-";
|
||||
public final static String BUILDMETA = "";
|
||||
public final static String BUILDMETA_PREFIX = "+";
|
||||
public final static String SEPARATOR = ".";
|
||||
public final static String VERSION = "2.9.0";
|
||||
public static final String PROJECT = "Java Example";
|
||||
public static final Date BUILDDATE = new Date(1564027571537L);
|
||||
public static final int MAJOR = 2;
|
||||
public static final int MINOR = 10;
|
||||
public static final int PATCH = 0;
|
||||
public static final String PRERELEASE = "";
|
||||
public static final String PRERELEASE_PREFIX = "-";
|
||||
public static final String BUILDMETA = "";
|
||||
public static final String BUILDMETA_PREFIX = "+";
|
||||
public static final String SEPARATOR = ".";
|
||||
public static final String VERSION = "2.10.0";
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Tue Apr 23 16:42:04 PDT 2019
|
||||
#Wed Jul 24 21:06:09 PDT 2019
|
||||
version.buildmeta=
|
||||
version.major=2
|
||||
version.minor=9
|
||||
version.minor=10
|
||||
version.patch=0
|
||||
version.prerelease=
|
||||
version.project=Java Example
|
||||
version.semver=2.9.0
|
||||
version.semver=2.10.0
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
plugins {
|
||||
kotlin("jvm").version("1.3.30")
|
||||
kotlin("jvm").version("1.3.61")
|
||||
application
|
||||
id("org.jetbrains.kotlin.kapt").version("1.3.31")
|
||||
id("net.thauvin.erik.gradle.semver").version("1.0.2")
|
||||
id("com.github.ben-manes.versions").version("0.21.0")
|
||||
id("org.jetbrains.kotlin.kapt").version("1.3.61")
|
||||
id("net.thauvin.erik.gradle.semver").version("1.0.4")
|
||||
id("com.github.ben-manes.versions").version("0.28.0")
|
||||
}
|
||||
|
||||
// ./gradlew
|
||||
|
@ -17,7 +17,7 @@ var semverProcessor = "net.thauvin.erik:semver:1.2.0"
|
|||
|
||||
dependencies {
|
||||
kapt(semverProcessor)
|
||||
compileOnly(semverProcessor)
|
||||
implementation(semverProcessor)
|
||||
|
||||
implementation(kotlin("stdlib"))
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.2.2-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
35
examples/annotation-processor/kotlin/gradlew
vendored
35
examples/annotation-processor/kotlin/gradlew
vendored
|
@ -7,7 +7,7 @@
|
|||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -125,8 +125,8 @@ if $darwin; then
|
|||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
@ -154,19 +154,19 @@ if $cygwin ; then
|
|||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
@ -175,14 +175,9 @@ save () {
|
|||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Tue Apr 23 16:42:52 PDT 2019
|
||||
#Wed Jul 24 21:06:46 PDT 2019
|
||||
version.buildmeta=
|
||||
version.major=14
|
||||
version.minor=2
|
||||
version.minor=3
|
||||
version.patch=0
|
||||
version.prerelease=
|
||||
version.project=Kotlin Example
|
||||
version.semver=14.2.0
|
||||
version.semver=14.3.0
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
plugins {
|
||||
id 'java'
|
||||
id 'application'
|
||||
id 'net.thauvin.erik.gradle.semver' version '1.0.2'
|
||||
id 'com.github.ben-manes.versions' version '0.21.0'
|
||||
id 'net.thauvin.erik.gradle.semver' version '1.0.4'
|
||||
id 'com.github.ben-manes.versions' version '0.36.0'
|
||||
}
|
||||
|
||||
// ./gradlew
|
||||
|
@ -10,14 +10,14 @@ plugins {
|
|||
// ./gradlew incrementMinor run
|
||||
// ./gradlew incrementMajor run
|
||||
// ./gradlew incrementBuildMeta run
|
||||
// ./gradlew echoVersion
|
||||
|
||||
mainClassName = 'App'
|
||||
|
||||
defaultTasks 'run'
|
||||
|
||||
dependencies {
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.0-M1'
|
||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.0-M1'
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
|
||||
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
@ -28,6 +28,13 @@ test {
|
|||
useJUnitPlatform()
|
||||
}
|
||||
|
||||
application {
|
||||
mainClassName = 'App'
|
||||
// project.afterEvaluate {
|
||||
// println "Version: $version"
|
||||
// }
|
||||
}
|
||||
|
||||
semver {
|
||||
// properties = "example.properties"
|
||||
// keysPrefix = "example."
|
||||
|
@ -44,9 +51,14 @@ incrementBuildMeta {
|
|||
|
||||
run {
|
||||
doFirst {
|
||||
// println "Version: ${-> version}"
|
||||
println "Version: $version"
|
||||
}
|
||||
|
||||
// args = ['example.properties']
|
||||
args = ['version.properties']
|
||||
}
|
||||
|
||||
task echoVersion(type:Exec) {
|
||||
commandLine 'echo', "${-> project.version}"
|
||||
}
|
||||
|
|
BIN
examples/java/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
examples/java/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
37
examples/java/gradlew
vendored
37
examples/java/gradlew
vendored
|
@ -7,7 +7,7 @@
|
|||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -82,6 +82,7 @@ esac
|
|||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
|
@ -125,10 +126,11 @@ if $darwin; then
|
|||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
|
@ -154,19 +156,19 @@ if $cygwin ; then
|
|||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
@ -175,14 +177,9 @@ save () {
|
|||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
|
27
examples/java/gradlew.bat
vendored
27
examples/java/gradlew.bat
vendored
|
@ -5,7 +5,7 @@
|
|||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
|
@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
|||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
@ -51,7 +54,7 @@ goto fail
|
|||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
|
@ -61,28 +64,14 @@ echo location of your Java installation.
|
|||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
|
|
@ -17,4 +17,4 @@ public class App {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,4 +9,4 @@ class AppTest {
|
|||
assertAll("app should have a main method.",
|
||||
() -> classUnderTest.getClass().getMethod("main", String[].class));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Fri May 24 07:51:21 PDT 2019
|
||||
version.buildmeta=
|
||||
#Fri Sep 25 17:38:33 PDT 2020
|
||||
version.buildmeta=20200925173833
|
||||
version.major=1
|
||||
version.minor=0
|
||||
version.patch=0
|
||||
version.prerelease=
|
||||
version.semver=1.0.0
|
||||
version.semver=1.0.0+20200925173833
|
||||
|
|
|
@ -4,10 +4,10 @@ import java.time.LocalDateTime
|
|||
import java.time.format.DateTimeFormatter
|
||||
|
||||
plugins {
|
||||
kotlin("jvm").version("1.3.31")
|
||||
kotlin("jvm").version("1.4.10")
|
||||
application
|
||||
id("net.thauvin.erik.gradle.semver").version("1.0.2")
|
||||
id("com.github.ben-manes.versions").version("0.21.0")
|
||||
id("net.thauvin.erik.gradle.semver").version("1.0.4")
|
||||
id("com.github.ben-manes.versions").version("0.36.0")
|
||||
}
|
||||
|
||||
// ./gradlew
|
||||
|
@ -20,7 +20,7 @@ defaultTasks(ApplicationPlugin.TASK_RUN_NAME)
|
|||
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib"))
|
||||
testImplementation("org.testng:testng:6.14.3")
|
||||
testImplementation("org.testng:testng:7.3.0")
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
@ -29,6 +29,9 @@ repositories {
|
|||
|
||||
application {
|
||||
mainClassName = "com.example.MainKt"
|
||||
// project.afterEvaluate {
|
||||
// println("Version: $version")
|
||||
// }
|
||||
}
|
||||
|
||||
semver {
|
||||
|
|
BIN
examples/kotlin/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
examples/kotlin/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
37
examples/kotlin/gradlew
vendored
37
examples/kotlin/gradlew
vendored
|
@ -7,7 +7,7 @@
|
|||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -82,6 +82,7 @@ esac
|
|||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
|
@ -125,10 +126,11 @@ if $darwin; then
|
|||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
|
@ -154,19 +156,19 @@ if $cygwin ; then
|
|||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
@ -175,14 +177,9 @@ save () {
|
|||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
|
27
examples/kotlin/gradlew.bat
vendored
27
examples/kotlin/gradlew.bat
vendored
|
@ -5,7 +5,7 @@
|
|||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
|
@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
|||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
@ -51,7 +54,7 @@ goto fail
|
|||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
|
@ -61,28 +64,14 @@ echo location of your Java installation.
|
|||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
|
|
@ -13,4 +13,4 @@ fun main(args: Array<String>) {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,4 +5,4 @@ import org.testng.annotations.Test
|
|||
class ExampleTest {
|
||||
@Test
|
||||
fun f() = println("Running test")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#Generated by the Semver Plugin for Gradle
|
||||
#Fri May 24 01:12:52 PDT 2019
|
||||
version.buildmeta=20190524011252
|
||||
#Mon Nov 09 21:24:16 PST 2020
|
||||
version.buildmeta=20201109212416
|
||||
version.major=1
|
||||
version.minor=2
|
||||
version.patch=4
|
||||
version.prerelease=beta
|
||||
version.semver=1.2.4-beta+20190524011252
|
||||
version.semver=1.2.4-beta+20201109212416
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
buildscript {
|
||||
repositories {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath "net.thauvin.erik.gradle:semver:1.0.2"
|
||||
classpath "net.thauvin.erik.gradle:semver:1.0.5-beta"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -13,7 +14,7 @@ apply plugin: 'net.thauvin.erik.gradle.semver'
|
|||
|
||||
mainClassName = 'App'
|
||||
|
||||
version = 1.0
|
||||
//version = 1.0
|
||||
|
||||
def f = new File("version.properties")
|
||||
|
||||
|
@ -29,6 +30,13 @@ repositories {
|
|||
jcenter()
|
||||
}
|
||||
|
||||
application {
|
||||
println(project.version)
|
||||
project.afterEvaluate {
|
||||
println(project.version)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
incrementBuildMeta {
|
||||
doFirst {
|
||||
|
@ -39,11 +47,15 @@ incrementBuildMeta {
|
|||
|
||||
run {
|
||||
doFirst {
|
||||
println("Version: $version")
|
||||
println("Version: $semver.major$semver.separator$semver.minor$semver.separator$semver.patch$semver.preReleasePrefix$semver.preRelease$semver.buildMetaPrefix$semver.buildMeta")
|
||||
args = [f.name]
|
||||
}
|
||||
}
|
||||
|
||||
task echoVersion(type:Exec) {
|
||||
commandLine "echo", "${-> version}"
|
||||
}
|
||||
|
||||
semver {
|
||||
properties = "${f.name}"
|
||||
keysPrefix = f.name.substring(0, f.name.indexOf(".") + 1)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5.1-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
2
examples/test/gradlew
vendored
2
examples/test/gradlew
vendored
|
@ -7,7 +7,7 @@
|
|||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
|
2
examples/test/gradlew.bat
vendored
2
examples/test/gradlew.bat
vendored
|
@ -5,7 +5,7 @@
|
|||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
/*
|
||||
* This Java source file was generated by the Gradle 'init' task.
|
||||
*/
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class AppTest {
|
||||
@Test
|
||||
public void testAppHasAGreeting() {
|
||||
App classUnderTest = new App();
|
||||
assertNotNull("app should have a greeting", classUnderTest.getGreeting());
|
||||
}
|
||||
}
|
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
BIN
gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
37
gradlew
vendored
37
gradlew
vendored
|
@ -7,7 +7,7 @@
|
|||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
# https://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -82,6 +82,7 @@ esac
|
|||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
|
@ -125,10 +126,11 @@ if $darwin; then
|
|||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
|
@ -154,19 +156,19 @@ if $cygwin ; then
|
|||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
|
@ -175,14 +177,9 @@ save () {
|
|||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=$(save "$@")
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
|
||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
||||
cd "$(dirname "$0")"
|
||||
fi
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
|
27
gradlew.bat
vendored
27
gradlew.bat
vendored
|
@ -5,7 +5,7 @@
|
|||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem http://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
|
@ -29,6 +29,9 @@ if "%DIRNAME%" == "" set DIRNAME=.
|
|||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
|
@ -37,7 +40,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
|
|||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if "%ERRORLEVEL%" == "0" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
@ -51,7 +54,7 @@ goto fail
|
|||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
|
@ -61,28 +64,14 @@ echo location of your Java installation.
|
|||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
|
|
|
@ -1 +1,17 @@
|
|||
plugins {
|
||||
id("com.gradle.enterprise").version("3.3.4")
|
||||
}
|
||||
|
||||
gradleEnterprise {
|
||||
buildScan {
|
||||
link("GitHub", "https://github.com/ethauvin/semver-gradle/tree/master")
|
||||
if ("true" == System.getenv("CI")) {
|
||||
publishOnFailure()
|
||||
tag("CI")
|
||||
}
|
||||
termsOfServiceUrl = "https://gradle.com/terms-of-service"
|
||||
termsOfServiceAgree = "yes"
|
||||
}
|
||||
}
|
||||
|
||||
rootProject.name = "semver"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SemverConfig.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -32,7 +32,11 @@
|
|||
|
||||
package net.thauvin.erik.gradle.semver
|
||||
|
||||
open class SemverConfig {
|
||||
import javax.inject.Inject
|
||||
|
||||
open class SemverConfig @Inject constructor(
|
||||
private val semVersion: Version
|
||||
) {
|
||||
companion object {
|
||||
const val DEFAULT_KEYS_PREFIX = "version."
|
||||
const val DEFAULT_PROPERTIES = "${DEFAULT_KEYS_PREFIX}properties"
|
||||
|
@ -48,6 +52,8 @@ open class SemverConfig {
|
|||
}
|
||||
|
||||
var properties = DEFAULT_PROPERTIES
|
||||
|
||||
// Keys
|
||||
var semverKey = DEFAULT_SEMVER_KEY
|
||||
get() = "$keysPrefix$field"
|
||||
var majorKey = DEFAULT_MAJOR_KEY
|
||||
|
@ -68,10 +74,32 @@ open class SemverConfig {
|
|||
get() = "$keysPrefix$field"
|
||||
var keysPrefix = DEFAULT_KEYS_PREFIX
|
||||
|
||||
// Extension Properties
|
||||
val semver: String
|
||||
get() = semVersion.semver
|
||||
val version: String
|
||||
get() = semVersion.semver
|
||||
val major: Int
|
||||
get() = semVersion.major
|
||||
val minor: Int
|
||||
get() = semVersion.minor
|
||||
val patch: Int
|
||||
get() = semVersion.patch
|
||||
val preRelease: String
|
||||
get() = semVersion.preRelease
|
||||
val buildMeta: String
|
||||
get() = semVersion.buildMeta
|
||||
val preReleasePrefix: String
|
||||
get() = semVersion.preReleasePrefix
|
||||
val buildMetaPrefix: String
|
||||
get() = semVersion.buildMetaPrefix
|
||||
val separator: String
|
||||
get() = semVersion.separator
|
||||
|
||||
override fun toString(): String {
|
||||
return "SemverConfig(" +
|
||||
"properties='$properties', " +
|
||||
"semver='$semverKey', " +
|
||||
"semverKey='$semverKey', " +
|
||||
"majorKey='$majorKey', " +
|
||||
"minorKey='$minorKey', " +
|
||||
"patchKey='$patchKey', " +
|
||||
|
@ -80,7 +108,16 @@ open class SemverConfig {
|
|||
"buildMetaKey='$buildMetaKey', " +
|
||||
"buildMetaPrefixKey='$buildMetaPrefixKey', " +
|
||||
"separator='$separatorKey', " +
|
||||
"keysPrefix='$keysPrefix')" +
|
||||
"keysPrefix='$keysPrefix', " +
|
||||
"semver='$semver', " +
|
||||
"major='$major', " +
|
||||
"minor='$minor', " +
|
||||
"patch='$patch', " +
|
||||
"preRelease='$preRelease', " +
|
||||
"buildMeta='$buildMeta', " +
|
||||
"preReleasePrefix='$preReleasePrefix', " +
|
||||
"buildMetaPrefix='$buildMetaPrefix', " +
|
||||
"separator='$separator'" +
|
||||
')'
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SemverIncrementBuildMetaTask.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SemverIncrementTask.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -54,7 +54,8 @@ open class SemverIncrementTask @Inject constructor(
|
|||
version.increment(
|
||||
isMajor = type == SemverConfig.DEFAULT_MAJOR_KEY,
|
||||
isMinor = type == SemverConfig.DEFAULT_MINOR_KEY,
|
||||
isPatch = type == SemverConfig.DEFAULT_PATCH_KEY)
|
||||
isPatch = type == SemverConfig.DEFAULT_PATCH_KEY
|
||||
)
|
||||
project.version = version.semver
|
||||
logger.lifecycle("Version: ${project.version}")
|
||||
Utils.saveProperties(project.projectDir, config, version)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SemverPlugin.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -46,7 +46,7 @@ class SemverPlugin : Plugin<Project> {
|
|||
if (GradleVersion.current() < GradleVersion.version("4.8.1")) {
|
||||
throw GradleException("The $simpleName plugin requires Gradle version 4.8.1 or greater.")
|
||||
}
|
||||
config = project.extensions.create("semver", SemverConfig::class.java)
|
||||
config = project.extensions.create("semver", SemverConfig::class.java, version)
|
||||
project.afterEvaluate(this::afterEvaluate)
|
||||
|
||||
project.tasks.apply {
|
||||
|
@ -62,18 +62,23 @@ class SemverPlugin : Plugin<Project> {
|
|||
|
||||
if (project.version != "unspecified") {
|
||||
project.logger.warn(
|
||||
"Please specify the version in ${propsFile.name} and remove it from ${project.buildFile.name}")
|
||||
"Please specify the version in ${propsFile.name} and remove it from ${project.buildFile.name}"
|
||||
)
|
||||
}
|
||||
|
||||
propsFile.apply {
|
||||
val isNew = !exists()
|
||||
|
||||
project.logger.info(
|
||||
"[$simpleName] Attempting to read properties from: `$absoluteFile`. [exists: $isNew, isFile: $isFile, canRead: ${propsFile.canRead()}]")
|
||||
"[$simpleName] Attempting to read properties from: `$absoluteFile`. " +
|
||||
"[exists: $isNew, isFile: $isFile, canRead: ${canRead()}]"
|
||||
)
|
||||
|
||||
val props = Utils.loadProperties(this)
|
||||
val requiredProps = setOf(config.semverKey, config.majorKey, config.minorKey, config.patchKey,
|
||||
config.preReleaseKey, config.buildMetaKey)
|
||||
val requiredProps = setOf(
|
||||
config.semverKey, config.majorKey, config.minorKey, config.patchKey,
|
||||
config.preReleaseKey, config.buildMetaKey
|
||||
)
|
||||
val hasReqProps = !isNew && props.stringPropertyNames().containsAll(requiredProps) &&
|
||||
Utils.isNotSystemProperty(requiredProps)
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SortedProperties.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Utils.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -36,6 +36,7 @@ import org.gradle.api.GradleException
|
|||
import java.io.File
|
||||
import java.io.FileInputStream
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
import java.util.Properties
|
||||
|
||||
/**
|
||||
|
@ -50,11 +51,6 @@ object Utils {
|
|||
return canRead() && isFile
|
||||
}
|
||||
|
||||
private fun Int.length() = when (this) {
|
||||
0 -> 1
|
||||
else -> Math.log10(Math.abs(toDouble())).toInt() + 1
|
||||
}
|
||||
|
||||
private fun Properties.put(key: String, value: String, isValidCondition: Boolean) {
|
||||
if (isValidCondition) put(key, value)
|
||||
}
|
||||
|
@ -82,7 +78,7 @@ object Utils {
|
|||
if (!exists() && createNewFile()) {
|
||||
isNew = true
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
} catch (e: IOException) {
|
||||
throw GradleException("Unable to create: `$absoluteFile`", e)
|
||||
}
|
||||
if (canReadFile()) {
|
||||
|
@ -135,73 +131,44 @@ object Utils {
|
|||
fun parseSemVer(input: String?, version: Version): Boolean {
|
||||
if (input.isNullOrBlank()) return false
|
||||
|
||||
var semver = StringBuilder(input)
|
||||
var start = semver.indexOf(version.separator)
|
||||
var minor = -1
|
||||
var major = -1
|
||||
var patch = -1
|
||||
var preRelease = ""
|
||||
var buildMeta = ""
|
||||
|
||||
try {
|
||||
// major
|
||||
if (start != -1) {
|
||||
major = Math.abs(semver.substring(0, start).toInt())
|
||||
semver.delete(0, start + major.length())
|
||||
start = semver.indexOf(version.separator)
|
||||
// minor
|
||||
if (start != -1) {
|
||||
minor = Math.abs(semver.substring(0, start).toInt())
|
||||
semver = semver.delete(0, start + minor.length())
|
||||
start = semver.indexOf(version.preReleasePrefix)
|
||||
// patch
|
||||
if (start != -1) {
|
||||
patch = Math.abs(semver.substring(0, start).toInt())
|
||||
semver.delete(0, start + minor.length())
|
||||
start = semver.lastIndexOf(version.buildMetaPrefix)
|
||||
// pre-release
|
||||
if (start != -1) {
|
||||
preRelease = semver.substring(0, start)
|
||||
semver.delete(0, preRelease.length)
|
||||
start = semver.indexOf(version.buildMetaPrefix)
|
||||
// build meta
|
||||
if (start != -1) {
|
||||
buildMeta = semver.substring(version.preReleasePrefix.length)
|
||||
semver.clear()
|
||||
val max = 5
|
||||
val min = 3
|
||||
|
||||
val parts = input.split(
|
||||
Regex("[\\Q${version.separator}${version.preReleasePrefix}${version.buildMetaPrefix}\\E]"),
|
||||
max
|
||||
)
|
||||
|
||||
if (parts.size >= min) {
|
||||
version.major = parts[0].toInt()
|
||||
version.minor = parts[1].toInt()
|
||||
version.patch = parts[2].toInt()
|
||||
version.preRelease = ""
|
||||
version.buildMeta = ""
|
||||
|
||||
if (parts.size > min) {
|
||||
when {
|
||||
parts.size == max -> {
|
||||
version.preRelease = parts[3]
|
||||
version.buildMeta = parts[4]
|
||||
}
|
||||
parts.size == 4 -> {
|
||||
if (input.endsWith(version.buildMetaPrefix + parts[3])) {
|
||||
version.buildMeta = parts[3]
|
||||
} else {
|
||||
version.preRelease = parts[3]
|
||||
}
|
||||
} else {
|
||||
// no build meta
|
||||
preRelease = semver.toString()
|
||||
semver.clear()
|
||||
}
|
||||
} else if (semver.isNotEmpty()) {
|
||||
// no pre-release
|
||||
start = semver.lastIndexOf(version.buildMetaPrefix)
|
||||
// patch & build meta
|
||||
if (start != -1) {
|
||||
patch = semver.substring(0, start).toInt()
|
||||
semver.delete(0, start + minor.length())
|
||||
buildMeta = semver.toString()
|
||||
} else {
|
||||
// patch
|
||||
patch = semver.toString().toInt()
|
||||
}
|
||||
semver.clear()
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw NumberFormatException("Not enough parts.")
|
||||
}
|
||||
} catch (e: NumberFormatException) {
|
||||
throw GradleException("Unable to parse version: \"$input\" (${e.message})", e)
|
||||
}
|
||||
|
||||
if (semver.isNotEmpty()) throw GradleException("Unable to parse version: \"$input\".")
|
||||
|
||||
version.major = major
|
||||
version.minor = minor
|
||||
version.patch = patch
|
||||
version.preRelease = preRelease
|
||||
version.buildMeta = buildMeta
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -224,26 +191,32 @@ object Utils {
|
|||
put(config.buildMetaKey, version.buildMeta)
|
||||
put(config.semverKey, version.semver)
|
||||
|
||||
put(config.buildMetaPrefixKey, version.buildMetaPrefix,
|
||||
put(
|
||||
config.buildMetaPrefixKey, version.buildMetaPrefix,
|
||||
version.buildMetaPrefix != Version.DEFAULT_BUILDMETA_PREFIX ||
|
||||
containsKey(config.buildMetaPrefixKey))
|
||||
put(config.preReleasePrefixKey, version.preReleasePrefix,
|
||||
containsKey(config.buildMetaPrefixKey)
|
||||
)
|
||||
put(
|
||||
config.preReleasePrefixKey, version.preReleasePrefix,
|
||||
version.preReleasePrefix != Version.DEFAULT_PRERELEASE_PREFIX ||
|
||||
containsKey(config.preReleasePrefixKey))
|
||||
put(config.separatorKey, version.separator,
|
||||
containsKey(config.preReleasePrefixKey)
|
||||
)
|
||||
put(
|
||||
config.separatorKey, version.separator,
|
||||
version.separator != Version.DEFAULT_SEPARATOR ||
|
||||
containsKey(config.separatorKey))
|
||||
containsKey(config.separatorKey)
|
||||
)
|
||||
|
||||
if (canWrite()) {
|
||||
FileOutputStream(this).writer().use {
|
||||
store(it, "Generated by the Semver Plugin for Gradle")
|
||||
}
|
||||
} else {
|
||||
throw GradleException()
|
||||
throw IOException("Can't write.")
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
throw GradleException("Unable to write version to: `${propsFile.absoluteFile}`")
|
||||
} catch (e: IOException) {
|
||||
throw GradleException("Unable to write version to: `${propsFile.absoluteFile}`", e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* Version.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SemverConfigSpec.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -40,8 +40,8 @@ import kotlin.test.assertTrue
|
|||
@Suppress("unused")
|
||||
object SemverConfigSpec : Spek({
|
||||
Feature("SemverConfig") {
|
||||
val config = SemverConfig(Version())
|
||||
Scenario("Testing configs") {
|
||||
val config by memoized { SemverConfig() }
|
||||
val vars = listOf(
|
||||
config.semverKey,
|
||||
config.majorKey,
|
||||
|
@ -90,7 +90,8 @@ object SemverConfigSpec : Spek({
|
|||
config.preReleasePrefixKey,
|
||||
config.buildMetaKey,
|
||||
config.buildMetaPrefixKey,
|
||||
config.separatorKey)
|
||||
config.separatorKey
|
||||
)
|
||||
}
|
||||
|
||||
Then("all config keys should start with test.xxxx") {
|
||||
|
@ -98,6 +99,26 @@ object SemverConfigSpec : Spek({
|
|||
assertTrue(k.startsWith("test."), k)
|
||||
}
|
||||
}
|
||||
|
||||
When("checking extension properties") {}
|
||||
|
||||
Then("semver should be defaults") {
|
||||
val defaultSemver =
|
||||
"${Version.DEFAULT_MAJOR}${Version.DEFAULT_SEPARATOR}${Version.DEFAULT_MINOR}${Version.DEFAULT_SEPARATOR}${Version.DEFAULT_PATCH}"
|
||||
assertEquals(config.semver, defaultSemver)
|
||||
assertEquals(
|
||||
"${config.major}${config.separator}${config.minor}${config.separator}${config.patch}",
|
||||
defaultSemver
|
||||
)
|
||||
assertEquals(config.preRelease, Version.DEFAULT_EMPTY)
|
||||
assertEquals(config.buildMeta, Version.DEFAULT_EMPTY)
|
||||
assertEquals(config.preReleasePrefix, Version.DEFAULT_PRERELEASE_PREFIX)
|
||||
assertEquals(config.buildMetaPrefix, Version.DEFAULT_BUILDMETA_PREFIX)
|
||||
}
|
||||
|
||||
Then("semver = version") {
|
||||
assertEquals(config.semver, config.version)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* SemverVersionSpec.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* UtilsSpec.kt
|
||||
*
|
||||
* Copyright (c) 2018-2019, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2018-2020, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -36,197 +36,234 @@ import org.gradle.api.GradleException
|
|||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.gherkin.Feature
|
||||
import java.io.File
|
||||
import java.util.Properties
|
||||
import java.util.*
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertFailsWith
|
||||
import kotlin.test.assertNull
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
@Suppress("unused")
|
||||
object UtilsSpec : Spek({
|
||||
Feature("Utils") {
|
||||
val version = Version()
|
||||
val config = SemverConfig()
|
||||
val propsFile = File("test.properties")
|
||||
val projectDir = File("./")
|
||||
lateinit var props: Properties
|
||||
object UtilsSpec : Spek(
|
||||
{
|
||||
Feature("Utils") {
|
||||
val version = Version()
|
||||
val config = SemverConfig(version)
|
||||
val propsFile = File("test.properties")
|
||||
val projectDir = File("./")
|
||||
lateinit var props: Properties
|
||||
|
||||
Scenario("Save/Load Properties") {
|
||||
When("saving the property") {
|
||||
config.properties = propsFile.name
|
||||
Utils.saveProperties(projectDir, config, version)
|
||||
}
|
||||
|
||||
Then("properties file should exists and be readable") {
|
||||
assertEquals(propsFile.canReadFile(), propsFile.canRead() && propsFile.isFile)
|
||||
}
|
||||
|
||||
When("loading the properties file") {
|
||||
props = Utils.loadProperties(propsFile)
|
||||
propsFile.delete()
|
||||
}
|
||||
|
||||
Then("version and properties should be the same.") {
|
||||
assertEquals(props.getProperty(config.majorKey), version.major.toString(), "Major")
|
||||
assertEquals(props.getProperty(config.minorKey), version.minor.toString(), "Minor")
|
||||
assertEquals(props.getProperty(config.patchKey), version.patch.toString(), "Patch")
|
||||
assertEquals(props.getProperty(config.preReleaseKey), version.preRelease, "PreRelease")
|
||||
assertNull(props.getProperty(config.preReleasePrefixKey), "PreRelease Prefix")
|
||||
assertEquals(props.getProperty(config.buildMetaKey), version.buildMeta, "Build Meta")
|
||||
assertNull(props.getProperty(config.buildMetaPrefixKey), "Build Meta Prefix")
|
||||
assertNull(props.getProperty(config.separatorKey), "Separator")
|
||||
assertEquals(props.getProperty(config.semverKey), version.semver, "semver")
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("System Properties") {
|
||||
lateinit var sysProps: Array<Pair<String, String>>
|
||||
|
||||
Given("new system properties") {
|
||||
sysProps = arrayOf(
|
||||
Pair(config.majorKey, "2"),
|
||||
Pair(config.minorKey, "1"),
|
||||
Pair(config.patchKey, "1"),
|
||||
Pair(config.preReleaseKey, "beta"),
|
||||
Pair(config.buildMetaKey, "007"))
|
||||
}
|
||||
|
||||
Then("none should already exists") {
|
||||
assertTrue(Utils.isNotSystemProperty(setOf(config.majorKey, config.minorKey, config.patchKey, config.preReleaseKey,
|
||||
config.buildMetaKey)))
|
||||
}
|
||||
|
||||
Then("version should match system properties") {
|
||||
sysProps.forEach {
|
||||
System.getProperties().setProperty(it.first, it.second)
|
||||
if (it.first == config.majorKey || it.first == config.minorKey || it.first == config.patchKey) {
|
||||
assertEquals(Utils.loadIntProperty(props, it.first, -1), it.second.toInt())
|
||||
} else {
|
||||
assertEquals(Utils.loadProperty(props, it.first, ""), it.second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
When("loading version") {
|
||||
Utils.loadVersion(config, version, props)
|
||||
}
|
||||
|
||||
Then("version should be identical") {
|
||||
assertEquals(version.semver, "2.1.1-beta+007")
|
||||
}
|
||||
|
||||
When("saving properties") {
|
||||
Utils.saveProperties(projectDir, config, version)
|
||||
}
|
||||
|
||||
lateinit var newProps: Properties
|
||||
|
||||
And("loading properties file") {
|
||||
newProps = Utils.loadProperties(propsFile)
|
||||
}
|
||||
|
||||
Then("new properties should validate") {
|
||||
sysProps.forEach {
|
||||
assertEquals(newProps.getProperty(it.first), it.second, it.second)
|
||||
}
|
||||
propsFile.delete()
|
||||
}
|
||||
|
||||
When("setting the version as system property") {
|
||||
System.getProperties().setProperty(config.semverKey, "3.2.2")
|
||||
}
|
||||
|
||||
And("loading the properties") {
|
||||
Utils.loadVersion(config, version, props)
|
||||
}
|
||||
|
||||
Then("versions should match") {
|
||||
assertEquals(version.semver, System.getProperty(config.semverKey))
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("Testing Version Parsing") {
|
||||
When("validating version parsing") {
|
||||
listOf("1.0.0", "2.1.0-beta", "3.2.1-beta+007", "4.3.2+007").forEach {
|
||||
assertTrue(Utils.parseSemVer(it, version), "parsing semver: $it")
|
||||
assertEquals(it, version.semver, it)
|
||||
}
|
||||
}
|
||||
|
||||
Given("new prefixes") {
|
||||
version.preReleasePrefix = "."
|
||||
version.buildMetaPrefix = "."
|
||||
}
|
||||
|
||||
Then("validating prefixes parsing") {
|
||||
listOf("2.1.0.beta.1", "2.1.1.1", "3.2.1.beta.1.007").forEach {
|
||||
assertTrue(Utils.parseSemVer(it, version), "parsing semver: $it")
|
||||
assertEquals(it, version.semver, it)
|
||||
}
|
||||
}
|
||||
|
||||
Then("verifying pre-release and meta") {
|
||||
assertEquals(version.preRelease, "beta.1")
|
||||
assertEquals(version.buildMeta, "007")
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("Load locked properties") {
|
||||
lateinit var locked: File
|
||||
|
||||
Given("the locked location") {
|
||||
locked = File("locked")
|
||||
}
|
||||
|
||||
Then("loading locked properties") {
|
||||
assertFailsWith<GradleException> {
|
||||
Utils.loadProperties(File(locked, propsFile.name))
|
||||
}
|
||||
locked.delete()
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("Save to locked properties") {
|
||||
lateinit var propsLocked: File
|
||||
Given("the locked properties") {
|
||||
propsLocked = File("locked.properties")
|
||||
propsLocked.createNewFile()
|
||||
propsLocked.setReadOnly()
|
||||
config.properties = propsLocked.name
|
||||
}
|
||||
|
||||
Then("saving the locked properties file") {
|
||||
assertFailsWith<GradleException> {
|
||||
Scenario("Save/Load Properties") {
|
||||
When("saving the property") {
|
||||
config.properties = propsFile.name
|
||||
Utils.saveProperties(projectDir, config, version)
|
||||
}
|
||||
propsLocked.delete()
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("Save/Load Properties in foo") {
|
||||
lateinit var fooDir: File
|
||||
lateinit var fooProps: File
|
||||
When("saving the foo property") {
|
||||
fooDir = File("foo")
|
||||
fooDir.mkdir()
|
||||
fooProps = File(fooDir, propsFile.name)
|
||||
config.properties = fooProps.absolutePath
|
||||
Utils.saveProperties(projectDir, config, version)
|
||||
Then("properties file should exists and be readable") {
|
||||
assertEquals(propsFile.canReadFile(), propsFile.canRead() && propsFile.isFile)
|
||||
}
|
||||
|
||||
When("loading the properties file") {
|
||||
props = Utils.loadProperties(propsFile)
|
||||
propsFile.delete()
|
||||
}
|
||||
|
||||
Then("version and properties should be the same.") {
|
||||
assertEquals(props.getProperty(config.majorKey), version.major.toString(), "Major")
|
||||
assertEquals(props.getProperty(config.minorKey), version.minor.toString(), "Minor")
|
||||
assertEquals(props.getProperty(config.patchKey), version.patch.toString(), "Patch")
|
||||
assertEquals(props.getProperty(config.preReleaseKey), version.preRelease, "PreRelease")
|
||||
assertNull(props.getProperty(config.preReleasePrefixKey), "PreRelease Prefix")
|
||||
assertEquals(props.getProperty(config.buildMetaKey), version.buildMeta, "Build Meta")
|
||||
assertNull(props.getProperty(config.buildMetaPrefixKey), "Build Meta Prefix")
|
||||
assertNull(props.getProperty(config.separatorKey), "Separator")
|
||||
assertEquals(props.getProperty(config.semverKey), version.semver, "semver")
|
||||
}
|
||||
}
|
||||
|
||||
Then("foo properties file should exists and be readable") {
|
||||
assertEquals(fooProps.canReadFile(), fooProps.canRead() && fooProps.isFile)
|
||||
Scenario("System Properties") {
|
||||
lateinit var sysProps: Array<Pair<String, String>>
|
||||
|
||||
Given("new system properties") {
|
||||
sysProps = arrayOf(
|
||||
Pair(config.majorKey, "2"),
|
||||
Pair(config.minorKey, "1"),
|
||||
Pair(config.patchKey, "1"),
|
||||
Pair(config.preReleaseKey, "beta"),
|
||||
Pair(config.buildMetaKey, "007")
|
||||
)
|
||||
}
|
||||
|
||||
Then("none should already exists") {
|
||||
assertTrue(
|
||||
Utils.isNotSystemProperty(
|
||||
setOf(
|
||||
config.majorKey,
|
||||
config.minorKey,
|
||||
config.patchKey,
|
||||
config.preReleaseKey,
|
||||
config.buildMetaKey
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
Then("version should match system properties") {
|
||||
sysProps.forEach {
|
||||
System.getProperties().setProperty(it.first, it.second)
|
||||
if (it.first == config.majorKey || it.first == config.minorKey || it.first == config.patchKey) {
|
||||
assertEquals(Utils.loadIntProperty(props, it.first, -1), it.second.toInt())
|
||||
} else {
|
||||
assertEquals(Utils.loadProperty(props, it.first, ""), it.second)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
When("loading version") {
|
||||
Utils.loadVersion(config, version, props)
|
||||
}
|
||||
|
||||
Then("version should be identical") {
|
||||
assertEquals(version.semver, "2.1.1-beta+007")
|
||||
}
|
||||
|
||||
When("saving properties") {
|
||||
Utils.saveProperties(projectDir, config, version)
|
||||
}
|
||||
|
||||
lateinit var newProps: Properties
|
||||
|
||||
And("loading properties file") {
|
||||
newProps = Utils.loadProperties(propsFile)
|
||||
}
|
||||
|
||||
Then("new properties should validate") {
|
||||
sysProps.forEach {
|
||||
assertEquals(newProps.getProperty(it.first), it.second, it.second)
|
||||
}
|
||||
propsFile.delete()
|
||||
}
|
||||
|
||||
When("setting the version as system property") {
|
||||
System.getProperties().setProperty(config.semverKey, "3.2.2")
|
||||
}
|
||||
|
||||
And("loading the properties") {
|
||||
Utils.loadVersion(config, version, props)
|
||||
}
|
||||
|
||||
Then("versions should match") {
|
||||
assertEquals(version.semver, System.getProperty(config.semverKey))
|
||||
}
|
||||
}
|
||||
|
||||
When("loading the foo properties file") {
|
||||
props = Utils.loadProperties(fooProps)
|
||||
fooProps.delete()
|
||||
fooDir.delete()
|
||||
Scenario("Version Parsing") {
|
||||
When("validating version parsing") {}
|
||||
|
||||
Then("versions should parse") {
|
||||
listOf(
|
||||
"1.0.0",
|
||||
"2.1.0-beta",
|
||||
"3.2.1-beta+007",
|
||||
"4.3.2+007",
|
||||
"11.11.1",
|
||||
"111.11.11-beta",
|
||||
"1111.111.11-beta+001.12"
|
||||
).forEach {
|
||||
assertTrue(Utils.parseSemVer(it, version), "parsing semver: $it")
|
||||
assertEquals(it, version.semver, it)
|
||||
}
|
||||
}
|
||||
|
||||
Then("should throw exceptions") {
|
||||
assertFailsWith<GradleException>("2.1.1a") {
|
||||
Utils.parseSemVer("2.1.1a", version)
|
||||
}
|
||||
assertFailsWith<GradleException>("2a.1.1") {
|
||||
Utils.parseSemVer("2a.1.1", version)
|
||||
}
|
||||
assertFailsWith<GradleException>("2.1a.1") {
|
||||
Utils.parseSemVer("2.1a.1", version)
|
||||
}
|
||||
assertFailsWith<GradleException>("2.1") {
|
||||
Utils.parseSemVer("2.1", version)
|
||||
}
|
||||
}
|
||||
|
||||
Given("new prefixes") {
|
||||
version.preReleasePrefix = "."
|
||||
version.buildMetaPrefix = "."
|
||||
}
|
||||
|
||||
Then("prefixes should parse") {
|
||||
listOf("2.1.0.beta.1", "2.1.1.1", "3.2.1.beta.1.007").forEach {
|
||||
assertTrue(Utils.parseSemVer(it, version), "parsing semver: $it")
|
||||
assertEquals(it, version.semver, it)
|
||||
}
|
||||
}
|
||||
|
||||
Then("last pre-release and meta should match") {
|
||||
assertEquals(version.preRelease, "beta")
|
||||
assertEquals(version.buildMeta, "1.007")
|
||||
}
|
||||
}
|
||||
|
||||
Then("version in foo properties should be the same") {
|
||||
assertEquals(props.getProperty(config.semverKey), version.semver)
|
||||
Scenario("Load locked properties") {
|
||||
lateinit var locked: File
|
||||
|
||||
Given("the locked location") {
|
||||
locked = File("locked")
|
||||
}
|
||||
|
||||
Then("loading locked properties") {
|
||||
assertFailsWith<GradleException> {
|
||||
Utils.loadProperties(File(locked, propsFile.name))
|
||||
}
|
||||
locked.delete()
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("Save to locked properties") {
|
||||
lateinit var propsLocked: File
|
||||
Given("the locked properties") {
|
||||
propsLocked = File(System.getProperty("user.home") + File.separator + "locked.properties")
|
||||
propsLocked.createNewFile()
|
||||
propsLocked.setReadOnly()
|
||||
config.properties = propsLocked.name
|
||||
}
|
||||
|
||||
Then("saving the locked properties file") {
|
||||
assertFailsWith<GradleException> {
|
||||
Utils.saveProperties(propsLocked.parentFile, config, version)
|
||||
}
|
||||
propsLocked.delete()
|
||||
}
|
||||
}
|
||||
|
||||
Scenario("Save/Load Properties in foo") {
|
||||
lateinit var fooDir: File
|
||||
lateinit var fooProps: File
|
||||
When("saving the foo property") {
|
||||
fooDir = File("foo")
|
||||
fooDir.mkdir()
|
||||
fooProps = File(fooDir, propsFile.name)
|
||||
config.properties = fooProps.absolutePath
|
||||
Utils.saveProperties(projectDir, config, version)
|
||||
}
|
||||
|
||||
Then("foo properties file should exists and be readable") {
|
||||
assertEquals(fooProps.canReadFile(), fooProps.canRead() && fooProps.isFile)
|
||||
}
|
||||
|
||||
When("loading the foo properties file") {
|
||||
props = Utils.loadProperties(fooProps)
|
||||
fooProps.delete()
|
||||
fooDir.delete()
|
||||
}
|
||||
|
||||
Then("version in foo properties should be the same") {
|
||||
assertEquals(props.getProperty(config.semverKey), version.semver)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue