Code format, tabs to spaces, etc.
This commit is contained in:
parent
3973b144bc
commit
240c928e77
16 changed files with 826 additions and 667 deletions
24
.idea/modules/example.iml
generated
Normal file
24
.idea/modules/example.iml
generated
Normal file
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="example" external.linked.project.path="$MODULE_DIR$/../../example" external.root.project.path="$MODULE_DIR$/../../example" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="3.1.45-beta" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="false">
|
||||
<output url="file://$MODULE_DIR$/../../example/build/classes/main" />
|
||||
<output-test url="file://$MODULE_DIR$/../../example/build/classes/test" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../../example">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../example/src/generated/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../example/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../example/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../example/src/annotationProcessor/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../example/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../example/src/test/resources" type="java-test-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/../../example/.gradle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/../../example/build" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: net.thauvin.erik:semver:0.9.6-beta" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: commons-lang:commons-lang:2.4" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: commons-collections:commons-collections:3.2.1" level="project" />
|
||||
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.apache.velocity:velocity:1.7" level="project" />
|
||||
</component>
|
||||
</module>
|
12
.idea/modules/semver.iml
generated
12
.idea/modules/semver.iml
generated
|
@ -15,12 +15,12 @@
|
|||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="Gradle: org.apache.velocity:velocity:1.7" level="project" />
|
||||
<orderEntry type="library" name="Gradle: commons-collections:commons-collections:3.2.1" level="project" />
|
||||
<orderEntry type="library" name="Gradle: commons-lang:commons-lang:2.4" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.testng:testng:6.9.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.beanshell:bsh:2.0b4" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.beust:jcommander:1.48" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.apache.ant:ant:1.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.apache.ant:ant-launcher:1.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.apache.ant:ant:1.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: com.beust:jcommander:1.48" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.beanshell:bsh:2.0b4" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.testng:testng:6.9.12" level="project" />
|
||||
<orderEntry type="library" name="Gradle: commons-lang:commons-lang:2.4" level="project" />
|
||||
<orderEntry type="library" name="Gradle: commons-collections:commons-collections:3.2.1" level="project" />
|
||||
</component>
|
||||
</module>
|
17
build.gradle
17
build.gradle
|
@ -10,16 +10,14 @@ import org.apache.tools.ant.taskdefs.condition.Os
|
|||
|
||||
defaultTasks 'deploy'
|
||||
|
||||
def getVersion(isIncrement = false)
|
||||
{
|
||||
def getVersion(isIncrement = false) {
|
||||
def propsFile = 'version.properties'
|
||||
def majorKey = 'version.major'
|
||||
def minorKey = 'version.minor'
|
||||
def patchKey = 'version.patch'
|
||||
def metaKey = 'version.buildmeta'
|
||||
def preKey = 'version.prerelease'
|
||||
if (isIncrement)
|
||||
{
|
||||
if (isIncrement) {
|
||||
ant.propertyfile(file: propsFile) {
|
||||
entry(key: patchKey,
|
||||
type: 'int',
|
||||
|
@ -91,7 +89,6 @@ bintray {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
def pomConfig = {
|
||||
licenses {
|
||||
license {
|
||||
|
@ -160,8 +157,7 @@ javadoc {
|
|||
options.author = true
|
||||
options.addStringOption('link', 'http://docs.oracle.com/javase/8/docs/api/')
|
||||
options.addStringOption('sourcepath', project.hasProperty('jdkSrc') ? jdkSrc : "$System.env.JAVA_HOME/src.zip")
|
||||
if (JavaVersion.current().isJava8Compatible())
|
||||
{
|
||||
if (JavaVersion.current().isJava8Compatible()) {
|
||||
options.addStringOption('Xdoclint:none', '-quiet')
|
||||
}
|
||||
}
|
||||
|
@ -206,12 +202,9 @@ task release(dependsOn: ['wrapper', 'clean', 'deploy']) << {
|
|||
task pandoc(type: Exec) {
|
||||
group = 'Documentation'
|
||||
def pandoc_args = ['--from', 'markdown_github', '--to', 'html5', '-s', '-c', 'github-pandoc.css', '-o', 'README.html', 'README.md']
|
||||
if (Os.isFamily(Os.FAMILY_WINDOWS))
|
||||
{
|
||||
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
|
||||
commandLine(['cmd', '/c', 'pandoc'] + pandoc_args)
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
executable 'pandoc'
|
||||
args pandoc_args
|
||||
}
|
||||
|
|
|
@ -11,16 +11,14 @@ def isRelease = 'release' in gradle.startParameter.taskNames
|
|||
def deployDir = 'deploy'
|
||||
|
||||
// Get version from properties file. Increment patch if specified.
|
||||
def getVersion(isIncrement = false)
|
||||
{
|
||||
def getVersion(isIncrement = false) {
|
||||
def propsFile = 'version.properties'
|
||||
def majorKey = 'version.major'
|
||||
def minorKey = 'version.minor'
|
||||
def patchKey = 'version.patch'
|
||||
def metaKey = 'version.buildmeta'
|
||||
def preKey = 'version.prerelease'
|
||||
if (isIncrement)
|
||||
{
|
||||
if (isIncrement) {
|
||||
ant.propertyfile(file: propsFile) {
|
||||
entry(key: patchKey,
|
||||
type: 'int',
|
||||
|
@ -70,7 +68,6 @@ clean {
|
|||
delete deployDir
|
||||
}
|
||||
|
||||
|
||||
task copyToDeploy(type: Copy) {
|
||||
from jar
|
||||
into deployDir
|
||||
|
@ -93,4 +90,3 @@ task release(dependsOn: ['wrapper', 'clean', 'deploy']) << {
|
|||
task wrapper(type: Wrapper) {
|
||||
gradleVersion = gradle.gradleVersion
|
||||
}
|
||||
|
||||
|
|
BIN
example/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
example/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
|
@ -1,6 +1,6 @@
|
|||
#Sat Jan 23 18:16:10 PST 2016
|
||||
#Mon Jul 18 17:32:58 PDT 2016
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-bin.zip
|
||||
|
|
46
example/gradlew
vendored
46
example/gradlew
vendored
|
@ -6,12 +6,30 @@
|
|||
##
|
||||
##############################################################################
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
|
||||
|
@ -30,6 +48,7 @@ die ( ) {
|
|||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
|
@ -40,26 +59,11 @@ case "`uname`" in
|
|||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
|
@ -85,7 +89,7 @@ location of your Java installation."
|
|||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
|
|
8
example/gradlew.bat
vendored
8
example/gradlew.bat
vendored
|
@ -8,14 +8,14 @@
|
|||
@rem Set local scope for the variables with windows NT shell
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
@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=
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@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=
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
|
@ -46,7 +46,7 @@ echo location of your Java installation.
|
|||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windowz variants
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
|
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* This file is automatically generated.
|
||||
* Do not modify! -- ALL CHANGES WILL BE ERASED!
|
||||
*/
|
||||
package net.thauvin.erik.semver.example;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Provides semantic version information.
|
||||
*
|
||||
* @author <a href="https://github.com/ethauvin/semver">Semantic Version
|
||||
* Annotation Processor</a>
|
||||
*/
|
||||
public final class GeneratedVersion {
|
||||
private final static String buildmeta = "";
|
||||
private final static Date date = new Date(1468888435317L);
|
||||
private final static int major = 3;
|
||||
private final static int minor = 1;
|
||||
private final static int patch = 49;
|
||||
private final static String prerelease = "beta";
|
||||
private final static String project = "Example";
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
*
|
||||
* @throws UnsupportedOperationException If the constructor is called.
|
||||
*/
|
||||
private GeneratedVersion()
|
||||
throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the build date.
|
||||
*
|
||||
* @return The build date.
|
||||
*/
|
||||
public static Date getBuildDate() {
|
||||
return date;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the project name.
|
||||
*
|
||||
* @return The project name, if any.
|
||||
*/
|
||||
public static String getProject() {
|
||||
return project;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the full version string.
|
||||
* <p>
|
||||
* Formatted as:
|
||||
* <blockquote>
|
||||
* <code>MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETADATA]</code>
|
||||
* </blockquote>
|
||||
* <p>
|
||||
* For example:
|
||||
* <ul>
|
||||
* <li><code>1.0.0</code></li>
|
||||
* <li><code>1.0.0-beta</code></li>
|
||||
* <li><code>1.0.0+20160124144700</code></li>
|
||||
* <li><code>1.0.0-alpha+001</code></li>
|
||||
* </ul>
|
||||
*
|
||||
* @return The version string.
|
||||
*/
|
||||
public static String getVersion() {
|
||||
return Integer.toString(getMajor()) + '.'
|
||||
+ Integer.toString(getMinor()) + '.'
|
||||
+ Integer.toString(getPatch())
|
||||
+ getPreRelease(true) + getBuildMetadata(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the major version.
|
||||
*
|
||||
* @return The major version.
|
||||
*/
|
||||
public static int getMajor() {
|
||||
return major;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the minor version.
|
||||
*
|
||||
* @return The minor version.
|
||||
*/
|
||||
public static int getMinor() {
|
||||
return minor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the patch version.
|
||||
*
|
||||
* @return The patch version.
|
||||
*/
|
||||
public static int getPatch() {
|
||||
return patch;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the pre-release version.
|
||||
*
|
||||
* @param isHyphen Prepend a hyphen, if <code>true</code>.
|
||||
* @return The pre-release version, if any.
|
||||
*/
|
||||
public static String getPreRelease(final boolean isHyphen) {
|
||||
if (prerelease.length() > 0) {
|
||||
if (isHyphen) {
|
||||
return '-' + prerelease;
|
||||
} else {
|
||||
return prerelease;
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the pre-release version.
|
||||
*
|
||||
* @return The pre-release version, if any.
|
||||
*/
|
||||
public static String getPreRelease() {
|
||||
return getPreRelease(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the build metadata.
|
||||
*
|
||||
* @param isPlus Prepend a plus sign, if <code>true</code>.
|
||||
* @return The build metadata, if any.
|
||||
*/
|
||||
public static String getBuildMetadata(final boolean isPlus) {
|
||||
if (buildmeta.length() > 0) {
|
||||
if (isPlus) {
|
||||
return '+' + buildmeta;
|
||||
} else {
|
||||
return buildmeta;
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the build metadata.
|
||||
*
|
||||
* @return The build metadata, if any.
|
||||
*/
|
||||
public static String getBuildMetadata() {
|
||||
return getBuildMetadata(false);
|
||||
}
|
||||
}
|
|
@ -38,15 +38,13 @@ import java.text.SimpleDateFormat;
|
|||
/**
|
||||
* The <code>Example</code> class.
|
||||
*
|
||||
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
|
||||
* @author <a href="mailto:erik@thauvin.net" target="_blank">Erik C. Thauvin</a>
|
||||
* @created 2016-01-13
|
||||
* @since 1.0
|
||||
*/
|
||||
@Version(properties = "version.properties")
|
||||
public class Example
|
||||
{
|
||||
public static void main(final String... args)
|
||||
{
|
||||
public class Example {
|
||||
public static void main(final String... args) {
|
||||
final SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy 'at' HH:mm:ss z");
|
||||
|
||||
System.out.println("-----------------------------------------------------");
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#
|
||||
#Wed Jul 06 19:28:58 PDT 2016
|
||||
#Mon, 18 Jul 2016 17:33:54 -0700
|
||||
version.prerelease=beta
|
||||
version.project=Example
|
||||
version.minor=1
|
||||
version.buildmeta=
|
||||
version.patch=45
|
||||
version.patch=49
|
||||
version.major=3
|
||||
|
|
43
semver.ipr
43
semver.ipr
|
@ -58,10 +58,27 @@
|
|||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
<component name="CopyrightManager" default="" />
|
||||
<component name="CopyrightManager" default="">
|
||||
<copyright>
|
||||
<option name="myName" value="Erik's Copyright Notice" />
|
||||
<option name="notice" value="&#36;file.fileName Copyright (c) &#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." />
|
||||
</copyright>
|
||||
<module2copyright>
|
||||
<element module="Source" copyright="Erik's Copyright Notice" />
|
||||
</module2copyright>
|
||||
<LanguageOptions name="__TEMPLATE__">
|
||||
<option name="addBlankAfter" value="false" />
|
||||
</LanguageOptions>
|
||||
</component>
|
||||
<component name="DependencyValidationManager">
|
||||
<scope name="Source" pattern="file[example]:src/main/java//*.java||file[semver]:src/main/java//*.java" />
|
||||
</component>
|
||||
<component name="Encoding">
|
||||
<file url="PROJECT" charset="UTF-8" />
|
||||
</component>
|
||||
<component name="EntryPointsManager">
|
||||
<entry_points version="2.0" />
|
||||
</component>
|
||||
<component name="GradleLocalSettings">
|
||||
<option name="modificationStamps">
|
||||
<map>
|
||||
|
@ -80,7 +97,7 @@
|
|||
<entry key="$PROJECT_DIR$/../HttpStatus" value="2906561643260" />
|
||||
<entry key="$PROJECT_DIR$/../SemanticVersion" value="2905451385982" />
|
||||
<entry key="$PROJECT_DIR$/../mobibot" value="2865248599040" />
|
||||
<entry key="$PROJECT_DIR$" value="2921455760636" />
|
||||
<entry key="$PROJECT_DIR$" value="2921872379706" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="externalProjectsViewState">
|
||||
|
@ -102,6 +119,18 @@
|
|||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
<option name="useAutoImport" value="true" />
|
||||
</GradleProjectSettings>
|
||||
<GradleProjectSettings>
|
||||
<option name="distributionType" value="LOCAL" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$/example" />
|
||||
<option name="gradleHome" value="C:/gradle" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$/example" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="resolveModulePerSourceSet" value="false" />
|
||||
<option name="useAutoImport" value="true" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
<component name="InspectionProjectProfileManager">
|
||||
|
@ -199,6 +228,7 @@
|
|||
</component>
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/example.iml" filepath="$PROJECT_DIR$/.idea/modules/example.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/semver.iml" filepath="$PROJECT_DIR$/.idea/modules/semver.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
|
@ -334,6 +364,15 @@
|
|||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/commons-lang/commons-lang/2.4/2b8c4b3035e45520ef42033e823c7d33e4b4402c/commons-lang-2.4-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
<library name="Gradle: net.thauvin.erik:semver:0.9.6-beta">
|
||||
<CLASSES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/thauvin/erik/semver/0.9.6-beta/semver-0.9.6-beta.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$MAVEN_REPOSITORY$/net/thauvin/erik/semver/0.9.6-beta/semver-0.9.6-beta-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
<library name="Gradle: org.apache.ant:ant-launcher:1.7.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.apache.ant/ant-launcher/1.7.0/e7e30789211e074aa70ef3eaea59bd5b22a7fa7a/ant-launcher-1.7.0.jar!/" />
|
||||
|
|
|
@ -34,12 +34,11 @@ package net.thauvin.erik.semver;
|
|||
/**
|
||||
* The <code>Constants</code> class holds the constant variables used throughout this project.
|
||||
*
|
||||
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
|
||||
* @author <a href="mailto:erik@thauvin.net" target="_blank">Erik C. Thauvin</a>
|
||||
* @created 2016-01-13
|
||||
* @since 1.0
|
||||
*/
|
||||
public final class Constants
|
||||
{
|
||||
public final class Constants {
|
||||
/**
|
||||
* The default class name.
|
||||
*/
|
||||
|
@ -111,8 +110,7 @@ public final class Constants
|
|||
* @throws UnsupportedOperationException if the constructor is called.
|
||||
*/
|
||||
private Constants()
|
||||
throws UnsupportedOperationException
|
||||
{
|
||||
throws UnsupportedOperationException {
|
||||
throw new UnsupportedOperationException("Illegal constructor call.");
|
||||
}
|
||||
}
|
|
@ -39,14 +39,13 @@ import java.lang.annotation.Target;
|
|||
/**
|
||||
* The <code>Version</code> class implements the annotation interface.
|
||||
*
|
||||
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
|
||||
* @author <a href="mailto:erik@thauvin.net" target="_blank">Erik C. Thauvin</a>
|
||||
* @created 2016-01-13
|
||||
* @since 1.0
|
||||
*/
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
@Target(ElementType.TYPE)
|
||||
public @interface Version
|
||||
{
|
||||
public @interface Version {
|
||||
String buildmeta() default Constants.EMPTY;
|
||||
|
||||
String buildmetaKey() default Constants.KEY_VERSION_BUILDMETA;
|
||||
|
|
|
@ -34,12 +34,11 @@ package net.thauvin.erik.semver;
|
|||
/**
|
||||
* The <code>VersionInfo</code> class is used to hold and retrieve the semantic version values.
|
||||
*
|
||||
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
|
||||
* @author <a href="mailto:erik@thauvin.net" target="_blank">Erik C. Thauvin</a>
|
||||
* @created 2016-01-16
|
||||
* @since 1.0
|
||||
*/
|
||||
public class VersionInfo
|
||||
{
|
||||
public class VersionInfo {
|
||||
private final long epoch = System.currentTimeMillis();
|
||||
|
||||
private String buildmeta;
|
||||
|
@ -57,8 +56,7 @@ public class VersionInfo
|
|||
/**
|
||||
* Creates a new object with default values
|
||||
*/
|
||||
public VersionInfo()
|
||||
{
|
||||
public VersionInfo() {
|
||||
major = Constants.DEFAULT_MAJOR;
|
||||
minor = Constants.DEFAULT_MINOR;
|
||||
patch = Constants.DEFAULT_PATCH;
|
||||
|
@ -72,8 +70,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param version The version object.
|
||||
*/
|
||||
public VersionInfo(final Version version)
|
||||
{
|
||||
public VersionInfo(final Version version) {
|
||||
major = version.major();
|
||||
minor = version.minor();
|
||||
patch = version.patch();
|
||||
|
@ -87,8 +84,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The build metadata.
|
||||
*/
|
||||
public String getBuildMetadata()
|
||||
{
|
||||
public String getBuildMetadata() {
|
||||
return buildmeta;
|
||||
}
|
||||
|
||||
|
@ -97,8 +93,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param buildmeta The new build metadata.
|
||||
*/
|
||||
public void setBuildMetadata(final String buildmeta)
|
||||
{
|
||||
public void setBuildMetadata(final String buildmeta) {
|
||||
this.buildmeta = buildmeta;
|
||||
}
|
||||
|
||||
|
@ -107,8 +102,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The build epoch.
|
||||
*/
|
||||
public long getEpoch()
|
||||
{
|
||||
public long getEpoch() {
|
||||
return epoch;
|
||||
}
|
||||
|
||||
|
@ -117,8 +111,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The major version.
|
||||
*/
|
||||
public int getMajor()
|
||||
{
|
||||
public int getMajor() {
|
||||
return major;
|
||||
}
|
||||
|
||||
|
@ -127,8 +120,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param major The new major version.
|
||||
*/
|
||||
public void setMajor(final int major)
|
||||
{
|
||||
public void setMajor(final int major) {
|
||||
this.major = major;
|
||||
}
|
||||
|
||||
|
@ -137,8 +129,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The major version.
|
||||
*/
|
||||
public int getMinor()
|
||||
{
|
||||
public int getMinor() {
|
||||
return minor;
|
||||
}
|
||||
|
||||
|
@ -147,8 +138,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param minor The new minor version.
|
||||
*/
|
||||
public void setMinor(final int minor)
|
||||
{
|
||||
public void setMinor(final int minor) {
|
||||
this.minor = minor;
|
||||
}
|
||||
|
||||
|
@ -157,8 +147,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The patch version.
|
||||
*/
|
||||
public int getPatch()
|
||||
{
|
||||
public int getPatch() {
|
||||
return patch;
|
||||
}
|
||||
|
||||
|
@ -167,8 +156,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param patch The new patch version.
|
||||
*/
|
||||
public void setPatch(final int patch)
|
||||
{
|
||||
public void setPatch(final int patch) {
|
||||
this.patch = patch;
|
||||
}
|
||||
|
||||
|
@ -177,8 +165,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The pre-release version.
|
||||
*/
|
||||
public String getPreRelease()
|
||||
{
|
||||
public String getPreRelease() {
|
||||
return prerelease;
|
||||
}
|
||||
|
||||
|
@ -187,8 +174,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param prerelease The new pre-release version.
|
||||
*/
|
||||
public void setPreRelease(final String prerelease)
|
||||
{
|
||||
public void setPreRelease(final String prerelease) {
|
||||
this.prerelease = prerelease;
|
||||
}
|
||||
|
||||
|
@ -197,8 +183,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The project name.
|
||||
*/
|
||||
public String getProject()
|
||||
{
|
||||
public String getProject() {
|
||||
return project;
|
||||
}
|
||||
|
||||
|
@ -207,8 +192,7 @@ public class VersionInfo
|
|||
*
|
||||
* @param project The new project name.
|
||||
*/
|
||||
public void setProject(final String project)
|
||||
{
|
||||
public void setProject(final String project) {
|
||||
this.project = project;
|
||||
}
|
||||
|
||||
|
@ -228,8 +212,7 @@ public class VersionInfo
|
|||
*
|
||||
* @return The version string.
|
||||
*/
|
||||
public String getVersion()
|
||||
{
|
||||
public String getVersion() {
|
||||
return Integer.toString(major) + '.' + Integer.toString(minor) + '.' + Integer.toString(patch) + (
|
||||
prerelease.length() > 0 ? '-' + prerelease : "") + (buildmeta.length() > 0 ? '+' + buildmeta : "");
|
||||
}
|
||||
|
|
|
@ -52,43 +52,36 @@ import java.util.Set;
|
|||
/**
|
||||
* The <code>VersionProcessor</code> class implements a semantic version annotation processor.
|
||||
*
|
||||
* @author <a href="mailto:erik@thauvin.net">Erik C. Thauvin</a>
|
||||
* @author <a href="mailto:erik@thauvin.net" target="_blank">Erik C. Thauvin</a>
|
||||
* @created 2016-01-13
|
||||
* @since 1.0
|
||||
*/
|
||||
public class VersionProcessor extends AbstractProcessor
|
||||
{
|
||||
public class VersionProcessor extends AbstractProcessor {
|
||||
private Filer filer;
|
||||
|
||||
private Messager messager;
|
||||
|
||||
private void error(final String s)
|
||||
{
|
||||
private void error(final String s) {
|
||||
log(Diagnostic.Kind.ERROR, s);
|
||||
}
|
||||
|
||||
private void error(final String s, final Throwable t)
|
||||
{
|
||||
private void error(final String s, final Throwable t) {
|
||||
messager.printMessage(Diagnostic.Kind.ERROR, (t != null ? t.toString() : s));
|
||||
}
|
||||
|
||||
private VersionInfo findValues(final Version version)
|
||||
throws IOException
|
||||
{
|
||||
throws IOException {
|
||||
final VersionInfo versionInfo;
|
||||
|
||||
if (version.properties().length() > 0)
|
||||
{
|
||||
if (version.properties().length() > 0) {
|
||||
versionInfo = new VersionInfo();
|
||||
|
||||
final File propsFile = new File(version.properties());
|
||||
if (propsFile.exists())
|
||||
{
|
||||
if (propsFile.exists()) {
|
||||
note("Found properties: " + propsFile);
|
||||
final Properties p = new Properties();
|
||||
|
||||
try (FileReader reader = new FileReader(propsFile))
|
||||
{
|
||||
try (FileReader reader = new FileReader(propsFile)) {
|
||||
p.load(reader);
|
||||
|
||||
versionInfo.setProject(p.getProperty(version.projectKey(), Constants.EMPTY));
|
||||
|
@ -98,15 +91,11 @@ public class VersionProcessor extends AbstractProcessor
|
|||
versionInfo.setBuildMetadata(p.getProperty(version.buildmetaKey(), Constants.EMPTY));
|
||||
versionInfo.setPreRelease(p.getProperty(version.prereleaseKey(), Constants.EMPTY));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
error("Could not find: " + propsFile);
|
||||
throw new FileNotFoundException(propsFile + " (The system cannot find the file specified)");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
versionInfo = new VersionInfo(version);
|
||||
}
|
||||
|
||||
|
@ -117,8 +106,7 @@ public class VersionProcessor extends AbstractProcessor
|
|||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public Set<String> getSupportedAnnotationTypes()
|
||||
{
|
||||
public Set<String> getSupportedAnnotationTypes() {
|
||||
final Set<String> result = new HashSet<>();
|
||||
result.add(Version.class.getCanonicalName());
|
||||
return result;
|
||||
|
@ -128,8 +116,7 @@ public class VersionProcessor extends AbstractProcessor
|
|||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public SourceVersion getSupportedSourceVersion()
|
||||
{
|
||||
public SourceVersion getSupportedSourceVersion() {
|
||||
return SourceVersion.RELEASE_8;
|
||||
}
|
||||
|
||||
|
@ -137,39 +124,48 @@ public class VersionProcessor extends AbstractProcessor
|
|||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public synchronized void init(final ProcessingEnvironment processingEnv)
|
||||
{
|
||||
public synchronized void init(final ProcessingEnvironment processingEnv) {
|
||||
super.init(processingEnv);
|
||||
filer = processingEnv.getFiler();
|
||||
messager = processingEnv.getMessager();
|
||||
}
|
||||
|
||||
private void log(final Diagnostic.Kind kind, final String s) {
|
||||
messager.printMessage(kind, '[' + VersionProcessor.class.getSimpleName() + "] " + s);
|
||||
}
|
||||
|
||||
private void note(final String s) {
|
||||
log(Diagnostic.Kind.NOTE, s);
|
||||
}
|
||||
|
||||
private int parseIntProperty(final Properties p, final String property, final int defaultValue) {
|
||||
try {
|
||||
return Integer.parseInt(p.getProperty(property, Integer.toString(defaultValue)));
|
||||
} catch (NumberFormatException ignore) {
|
||||
warn("Invalid property value: " + property);
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
public boolean process(final Set<? extends TypeElement> annotations, final RoundEnvironment roundEnv)
|
||||
{
|
||||
for (final Element element : roundEnv.getElementsAnnotatedWith(Version.class))
|
||||
{
|
||||
public boolean process(final Set<? extends TypeElement> annotations, final RoundEnvironment roundEnv) {
|
||||
for (final Element element : roundEnv.getElementsAnnotatedWith(Version.class)) {
|
||||
final Version version = element.getAnnotation(Version.class);
|
||||
if (element.getKind() == ElementKind.CLASS)
|
||||
{
|
||||
if (element.getKind() == ElementKind.CLASS) {
|
||||
final Element enclosingElement = element.getEnclosingElement();
|
||||
if (enclosingElement.getKind() == ElementKind.PACKAGE)
|
||||
{
|
||||
if (enclosingElement.getKind() == ElementKind.PACKAGE) {
|
||||
final PackageElement packageElement = (PackageElement) enclosingElement;
|
||||
try
|
||||
{
|
||||
try {
|
||||
final VersionInfo versionInfo = findValues(version);
|
||||
note("Found version: " + versionInfo.getVersion());
|
||||
writeTemplate(packageElement.getQualifiedName().toString(),
|
||||
version.className(),
|
||||
versionInfo,
|
||||
version.template());
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
} catch (IOException e) {
|
||||
error("IOException occurred while running the annotation processor", e);
|
||||
}
|
||||
}
|
||||
|
@ -178,43 +174,19 @@ public class VersionProcessor extends AbstractProcessor
|
|||
return true;
|
||||
}
|
||||
|
||||
private void log(final Diagnostic.Kind kind, final String s)
|
||||
{
|
||||
messager.printMessage(kind, '[' + VersionProcessor.class.getSimpleName() + "] " + s);
|
||||
}
|
||||
|
||||
private void note(final String s)
|
||||
{
|
||||
log(Diagnostic.Kind.NOTE, s);
|
||||
}
|
||||
|
||||
private int parseIntProperty(final Properties p, final String property, final int defaultValue)
|
||||
{
|
||||
try
|
||||
{
|
||||
return Integer.parseInt(p.getProperty(property, Integer.toString(defaultValue)));
|
||||
}
|
||||
catch (NumberFormatException ignore)
|
||||
{
|
||||
warn("Invalid property value: " + property);
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
private void warn(final String s)
|
||||
{
|
||||
private void warn(final String s) {
|
||||
log(Diagnostic.Kind.WARNING, s);
|
||||
}
|
||||
|
||||
private void writeTemplate(final String packageName, final String className, final VersionInfo versionInfo,
|
||||
private void writeTemplate(final String packageName,
|
||||
final String className,
|
||||
final VersionInfo versionInfo,
|
||||
final String template)
|
||||
throws IOException
|
||||
{
|
||||
throws IOException {
|
||||
final Properties p = new Properties();
|
||||
final URL url = this.getClass().getClassLoader().getResource(Constants.VELOCITY_PROPERTIES);
|
||||
|
||||
if (url != null)
|
||||
{
|
||||
if (url != null) {
|
||||
p.load(url.openStream());
|
||||
|
||||
final VelocityEngine ve = new VelocityEngine(p);
|
||||
|
@ -236,15 +208,12 @@ public class VersionProcessor extends AbstractProcessor
|
|||
note("Loaded template: " + vt.getName());
|
||||
|
||||
final JavaFileObject jfo = filer.createSourceFile(packageName + '.' + className);
|
||||
try (final Writer writer = jfo.openWriter())
|
||||
{
|
||||
try (final Writer writer = jfo.openWriter()) {
|
||||
vt.merge(vc, writer);
|
||||
}
|
||||
|
||||
note("Generated source: " + jfo.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
error("Could not load '" + Constants.VELOCITY_PROPERTIES + "' from jar.");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue