Added separator, pre-release and metada prefixes.
This commit is contained in:
parent
e8c00828f3
commit
45a90d1353
7 changed files with 207 additions and 35 deletions
|
@ -39,6 +39,10 @@ package net.thauvin.erik.semver;
|
|||
* @since 1.0
|
||||
*/
|
||||
public final class Constants {
|
||||
/**
|
||||
* The default metadata prefix.
|
||||
*/
|
||||
public static final String DEFAULT_BUILDMETA_PREFIX = "+";
|
||||
/**
|
||||
* The default class name.
|
||||
*/
|
||||
|
@ -71,6 +75,14 @@ public final class Constants {
|
|||
* The default patch version.
|
||||
*/
|
||||
public static final int DEFAULT_PATCH = 0;
|
||||
/**
|
||||
* The default prerelease prefix.
|
||||
*/
|
||||
public static final String DEFAULT_PRERELEASE_PREFIX = "-";
|
||||
/**
|
||||
* The default version separator.
|
||||
*/
|
||||
public static final String DEFAULT_SEPARATOR = ".";
|
||||
/**
|
||||
* The default mustache template.
|
||||
*/
|
||||
|
@ -87,6 +99,10 @@ public final class Constants {
|
|||
* The build metadata property key.
|
||||
*/
|
||||
public static final String KEY_VERSION_BUILDMETA = "buildmeta";
|
||||
/**
|
||||
* The build metadata prefix property key.
|
||||
*/
|
||||
public static final String KEY_VERSION_BUILDMETA_PREFIX = "buildmeta.prefix";
|
||||
/**
|
||||
* The major version property key.
|
||||
*/
|
||||
|
@ -103,10 +119,18 @@ public final class Constants {
|
|||
* The pre-release version property key.
|
||||
*/
|
||||
public static final String KEY_VERSION_PRERELEASE = "prerelease";
|
||||
/**
|
||||
* The pre-release prefix property key.
|
||||
*/
|
||||
public static final String KEY_VERSION_PRERELEASE_PREFIX = "prerelease.prefix";
|
||||
/**
|
||||
* The project property key.
|
||||
*/
|
||||
public static final String KEY_VERSION_PROJECT = "project";
|
||||
/**
|
||||
* The version separator property key.
|
||||
*/
|
||||
public static final String KEY_VERSION_SEPARATOR = "separator";
|
||||
/**
|
||||
* The kotlin type.
|
||||
*/
|
||||
|
|
|
@ -50,8 +50,14 @@ public @interface Version {
|
|||
|
||||
String buildMetaKey() default Constants.KEY_VERSION_BUILDMETA;
|
||||
|
||||
String buildMetaPrefix() default Constants.DEFAULT_BUILDMETA_PREFIX;
|
||||
|
||||
String buildMetaPrefixKey() default Constants.KEY_VERSION_BUILDMETA_PREFIX;
|
||||
|
||||
String className() default Constants.DEFAULT_CLASS_NAME;
|
||||
|
||||
String keysPrefix() default Constants.DEFAULT_KEYS_PREFIX;
|
||||
|
||||
int major() default Constants.DEFAULT_MAJOR;
|
||||
|
||||
String majorKey() default Constants.KEY_VERSION_MAJOR;
|
||||
|
@ -60,25 +66,31 @@ public @interface Version {
|
|||
|
||||
String minorKey() default Constants.KEY_VERSION_MINOR;
|
||||
|
||||
int patch() default Constants.DEFAULT_PATCH;
|
||||
|
||||
String packageName() default Constants.EMPTY;
|
||||
|
||||
int patch() default Constants.DEFAULT_PATCH;
|
||||
|
||||
String patchKey() default Constants.KEY_VERSION_PATCH;
|
||||
|
||||
String preRelease() default Constants.EMPTY;
|
||||
|
||||
String preReleaseKey() default Constants.KEY_VERSION_PRERELEASE;
|
||||
|
||||
String preReleasePrefix() default Constants.DEFAULT_PRERELEASE_PREFIX;
|
||||
|
||||
String preReleasePrefixKey() default Constants.KEY_VERSION_PRERELEASE_PREFIX;
|
||||
|
||||
String project() default Constants.EMPTY;
|
||||
|
||||
String projectKey() default Constants.KEY_VERSION_PROJECT;
|
||||
|
||||
String properties() default Constants.EMPTY;
|
||||
|
||||
String separator() default Constants.DEFAULT_SEPARATOR;
|
||||
|
||||
String separatorKey() default Constants.KEY_VERSION_SEPARATOR;
|
||||
|
||||
String template() default Constants.DEFAULT_JAVA_TEMPLATE;
|
||||
|
||||
String type() default Constants.DEFAULT_JAVA_TYPE;
|
||||
|
||||
String keysPrefix() default Constants.DEFAULT_KEYS_PREFIX;
|
||||
}
|
||||
|
|
|
@ -42,13 +42,16 @@ public class VersionInfo {
|
|||
private final long epoch = System.currentTimeMillis();
|
||||
|
||||
private String buildMeta;
|
||||
private String buildMetaPrefix;
|
||||
private String className;
|
||||
private int major;
|
||||
private int minor;
|
||||
private String packageName;
|
||||
private int patch;
|
||||
private String preRelease;
|
||||
private String preReleasePrefix;
|
||||
private String project;
|
||||
private String separator;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -59,7 +62,10 @@ public class VersionInfo {
|
|||
minor = Constants.DEFAULT_MINOR;
|
||||
patch = Constants.DEFAULT_PATCH;
|
||||
buildMeta = Constants.EMPTY;
|
||||
buildMetaPrefix = Constants.DEFAULT_BUILDMETA_PREFIX;
|
||||
preRelease = Constants.EMPTY;
|
||||
preReleasePrefix = Constants.DEFAULT_PRERELEASE_PREFIX;
|
||||
separator = Constants.DEFAULT_SEPARATOR;
|
||||
project = Constants.EMPTY;
|
||||
className = Constants.DEFAULT_CLASS_NAME;
|
||||
packageName = Constants.EMPTY;
|
||||
|
@ -75,7 +81,10 @@ public class VersionInfo {
|
|||
minor = version.minor();
|
||||
patch = version.patch();
|
||||
buildMeta = version.buildMeta();
|
||||
buildMetaPrefix = version.buildMetaPrefix();
|
||||
preRelease = version.preRelease();
|
||||
preReleasePrefix = version.preReleasePrefix();
|
||||
separator = version.separator();
|
||||
project = version.project();
|
||||
className = version.className();
|
||||
packageName = version.packageName();
|
||||
|
@ -99,6 +108,24 @@ public class VersionInfo {
|
|||
this.buildMeta = buildMeta;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the meta-data prefix.
|
||||
*
|
||||
* @return The meta-data prefix.
|
||||
*/
|
||||
public String getBuildMetaPrefix() {
|
||||
return buildMetaPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the meta-data prefix.
|
||||
*
|
||||
* @param buildMetaPrefix The meta-data prefix.
|
||||
*/
|
||||
public void setBuildMetaPrefix(String buildMetaPrefix) {
|
||||
this.buildMetaPrefix = buildMetaPrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the class name.
|
||||
*
|
||||
|
@ -216,6 +243,24 @@ public class VersionInfo {
|
|||
this.preRelease = preRelease;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the pre-release prefix.
|
||||
*
|
||||
* @return The pre-release prefix.
|
||||
*/
|
||||
public String getPreReleasePrefix() {
|
||||
return preReleasePrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the pre-release prefix.
|
||||
*
|
||||
* @param preReleasePrefix The new pre-release prefix.
|
||||
*/
|
||||
public void setPreReleasePrefix(String preReleasePrefix) {
|
||||
this.preReleasePrefix = preReleasePrefix;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the project name.
|
||||
*
|
||||
|
@ -234,11 +279,29 @@ public class VersionInfo {
|
|||
this.project = project;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the version separator.
|
||||
*
|
||||
* @return The version separator.
|
||||
*/
|
||||
public String getSeparator() {
|
||||
return separator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setsthe version separtor.
|
||||
*
|
||||
* @param separator The new version separator.
|
||||
*/
|
||||
public void setSeparator(String separator) {
|
||||
this.separator = separator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the full version string.
|
||||
* <p>
|
||||
* Formatted as:
|
||||
* <blockquote><code>MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETADATA]</code></blockquote>
|
||||
* <blockquote><code>[MAJOR][SEPARATOR][MINOR][SEPARATOR][PATCH][[PRERELEASE-PREFIX][PRERELEASE]][[BUILDMETA-PREFIX][BUILDMETA]]</code></blockquote>
|
||||
* <p>
|
||||
* For example:
|
||||
* <ul>
|
||||
|
@ -251,12 +314,12 @@ public class VersionInfo {
|
|||
* @return The version string.
|
||||
*/
|
||||
public String getVersion() {
|
||||
return Integer.toString(major)
|
||||
+ '.'
|
||||
return major
|
||||
+ separator
|
||||
+ minor
|
||||
+ '.'
|
||||
+ separator
|
||||
+ patch
|
||||
+ (preRelease.length() > 0 ? '-' + preRelease : "")
|
||||
+ (buildMeta.length() > 0 ? '+' + buildMeta : "");
|
||||
+ (preRelease.length() > 0 ? preReleasePrefix + preRelease : "")
|
||||
+ (buildMeta.length() > 0 ? buildMetaPrefix + buildMeta : "");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,8 +94,14 @@ public class VersionProcessor extends AbstractProcessor {
|
|||
parseIntProperty(p, version.keysPrefix() + version.patchKey(), version.patch()));
|
||||
versionInfo.setBuildMeta(
|
||||
p.getProperty(version.keysPrefix() + version.buildMetaKey(), version.buildMeta()));
|
||||
versionInfo.setBuildMetaPrefix(
|
||||
p.getProperty(version.keysPrefix() + version.buildMetaPrefixKey(), version.buildMetaPrefix()));
|
||||
versionInfo.setPreRelease(
|
||||
p.getProperty(version.keysPrefix() + version.preReleaseKey(), version.preRelease()));
|
||||
versionInfo.setPreReleasePrefix(
|
||||
p.getProperty(version.keysPrefix() + version.preReleasePrefixKey(), version.preReleasePrefix()));
|
||||
versionInfo.setSeparator(
|
||||
p.getProperty(version.keysPrefix() + version.separatorKey(), version.separator()));
|
||||
}
|
||||
} else {
|
||||
final String findOrRead;
|
||||
|
|
|
@ -12,11 +12,6 @@ import java.util.Date
|
|||
* @author <a href="https://github.com/ethauvin/semver">Semantic Version Annotation Processor</a>
|
||||
*/
|
||||
object {{className}} {
|
||||
@JvmField
|
||||
val PRERELEASE_PREFIX = "-"
|
||||
@JvmField
|
||||
val BUILDMEATA_PREFIX = "+"
|
||||
|
||||
@JvmField
|
||||
val PROJECT = "{{project}}"
|
||||
@JvmField
|
||||
|
@ -30,13 +25,19 @@ object {{className}} {
|
|||
@JvmField
|
||||
val PRERELEASE = "{{preRelease}}"
|
||||
@JvmField
|
||||
val PRERELEASE_PREFIX = "{{preReleasePrefix}}"
|
||||
@JvmField
|
||||
val BUILDMETA = "{{buildMeta}}"
|
||||
@JvmField
|
||||
val BUILDMEATA_PREFIX = "{{buildMetaPrefix}}"
|
||||
@JvmField
|
||||
val SEPARATOR = "{{separator}}"
|
||||
|
||||
/**
|
||||
* The full version string formatted as [MAJOR].[MINOR].[PATCH]-[PRERELEASE]+[BUILDMETA]
|
||||
* The full version string formatted as [MAJOR][SEPARATOR][MINOR][SEPARATOR][PATCH][[PRERELEASE_PREFIX][PRERELEASE]][[BUILDMETA_PREFIX][BUILDMETA]]
|
||||
*/
|
||||
@JvmField
|
||||
val VERSION = "$MAJOR.$MINOR.$PATCH" + preReleaseWithPrefix() + buildMetaWithPrefix()
|
||||
val VERSION = "$MAJOR$SEPARATOR$MINOR$SEPARATOR$PATCH" + preReleaseWithPrefix() + buildMetaWithPrefix()
|
||||
|
||||
/**
|
||||
* Returns the pre-release version with prefix.
|
||||
|
@ -47,7 +48,7 @@ object {{className}} {
|
|||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun preReleaseWithPrefix(prefix: String = PRERELEASE_PREFIX): String {
|
||||
return if (PRERELEASE.isNotEmpty() && prefix.isNotEmpty()) {
|
||||
return if (PRERELEASE.isNotEmpty()) {
|
||||
"$prefix$PRERELEASE"
|
||||
} else {
|
||||
PRERELEASE
|
||||
|
@ -63,7 +64,7 @@ object {{className}} {
|
|||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun buildMetaWithPrefix(prefix: String = BUILDMEATA_PREFIX): String {
|
||||
return if (BUILDMETA.isNotEmpty() && prefix.isNotEmpty()) {
|
||||
return if (BUILDMETA.isNotEmpty()) {
|
||||
"$prefix$BUILDMETA"
|
||||
} else {
|
||||
BUILDMETA
|
||||
|
|
|
@ -12,23 +12,23 @@ import java.util.Date;
|
|||
* @author <a href="https://github.com/ethauvin/semver">Semantic Version Annotation Processor</a>
|
||||
*/
|
||||
public final class {{className}} {
|
||||
public final static String PRERELEASE_PREFIX = "-";
|
||||
public final static String BUILDMETA_PREFIX = "+";
|
||||
|
||||
public final static String PROJECT = "{{project}}";
|
||||
public final static Date BUILDDATE = new Date({{epoch}}L);
|
||||
public final static int MAJOR = {{major}};
|
||||
public final static int MINOR = {{minor}};
|
||||
public final static int PATCH = {{patch}};
|
||||
public final static String PRERELEASE = "{{preRelease}}";
|
||||
public final static String PRERELEASE_PREFIX = "{{preReleasePrefix}}";
|
||||
public final static String BUILDMETA = "{{buildMeta}}";
|
||||
public final static String BUILDMETA_PREFIX = "{{buildMetaPrefix}}";
|
||||
public final static String SEPARATOR = "{{separator}}";
|
||||
|
||||
/**
|
||||
* The full version string.
|
||||
* <p>
|
||||
* Formatted as:
|
||||
* <blockquote>
|
||||
* <code>MAJOR.MINOR.PATCH[-PRERELEASE][+BUILDMETADATA]</code>
|
||||
* <code>[MAJOR][SEPARATOR][MINOR][SEPARATOR][PATCH][[PRERELEASE_PREFIX][PRERELEASE]][[BUILDMETA_PREFIX][BUILDMETA]]</code>
|
||||
* </blockquote>
|
||||
* <p>
|
||||
* For example:
|
||||
|
@ -39,10 +39,8 @@ public final class {{className}} {
|
|||
* <li><code>1.0.0-alpha+001</code></li>
|
||||
* </ul>
|
||||
*/
|
||||
public final static String VERSION = Integer.toString(MAJOR) + '.'
|
||||
+ Integer.toString(MINOR) + '.'
|
||||
+ Integer.toString(PATCH)
|
||||
+ preReleaseWithPrefix() + buildMetaWithPrefix();
|
||||
public final static String VERSION = Integer.toString(MAJOR) + SEPARATOR + Integer.toString(MINOR) + SEPARATOR
|
||||
+ Integer.toString(PATCH) + preReleaseWithPrefix() + buildMetaWithPrefix();
|
||||
|
||||
/**
|
||||
* Disables the default constructor.
|
||||
|
@ -70,7 +68,7 @@ public final class {{className}} {
|
|||
* @return The build metadata, if any.
|
||||
*/
|
||||
public static String buildMetaWithPrefix(final String prefix) {
|
||||
if (BUILDMETA.length() > 0 && prefix.length() > 0) {
|
||||
if (BUILDMETA.length() > 0) {
|
||||
return prefix + BUILDMETA;
|
||||
} else {
|
||||
return BUILDMETA;
|
||||
|
@ -93,7 +91,7 @@ public final class {{className}} {
|
|||
* @return The pre-release version, if any.
|
||||
*/
|
||||
public static String preReleaseWithPrefix(final String prefix) {
|
||||
if (PRERELEASE.length() > 0 && prefix.length() > 0) {
|
||||
if (PRERELEASE.length() > 0) {
|
||||
return prefix + PRERELEASE;
|
||||
} else {
|
||||
return PRERELEASE;
|
||||
|
|
|
@ -73,9 +73,28 @@ public class VersionInfoTest {
|
|||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "3.2.1-beta+001", "getVersion(3.2.1-beta+001)");
|
||||
|
||||
versionInfo.setPreReleasePrefix("+");
|
||||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "3.2.1+beta+001", "getVersion(3.2.1+beta+001)");
|
||||
|
||||
versionInfo.setPreReleasePrefix("-");
|
||||
|
||||
versionInfo.setPreRelease("");
|
||||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "3.2.1+001", "getVersion(3.2.1+001)");
|
||||
|
||||
versionInfo.setBuildMetaPrefix(".");
|
||||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "3.2.1.001", "getVersion(3.2.1.001)");
|
||||
|
||||
versionInfo.setBuildMetaPrefix("+");
|
||||
|
||||
versionInfo.setSeparator("-");
|
||||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "3-2-1+001", "getVersion(3-2-1+001)");
|
||||
|
||||
versionInfo.setSeparator(".");
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -107,6 +126,19 @@ public class VersionInfoTest {
|
|||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "1.2.3-alpha+001", "getVersion(1.2.3-alpha+001)");
|
||||
|
||||
versionInfo.setBuildMeta("1");
|
||||
versionInfo.setBuildMetaPrefix("");
|
||||
|
||||
Assert.assertEquals(versionInfo.getBuildMetaPrefix(), "", "getBuildMetaPrefix( )");
|
||||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "1.2.3-alpha1", "getVersion(1.2.3-alpha1)");
|
||||
|
||||
versionInfo.setPreReleasePrefix(".");
|
||||
|
||||
Assert.assertEquals(versionInfo.getPreReleasePrefix(), ".", "getPreReleasePrefix(.)");
|
||||
|
||||
Assert.assertEquals(versionInfo.getVersion(), "1.2.3.alpha1", "getVersion(1.2.3.alpha1)");
|
||||
|
||||
versionInfo.setProject("My Example");
|
||||
|
||||
Assert.assertEquals(versionInfo.getProject(), "My Example", "getProject(My Example)");
|
||||
|
@ -133,8 +165,14 @@ public class VersionInfoTest {
|
|||
|
||||
Assert.assertEquals(versionInfo.getPreRelease(), version.preRelease(), "getPreRelease(preRelease)");
|
||||
|
||||
Assert.assertEquals(versionInfo.getPreReleasePrefix(), version.preReleasePrefix(),
|
||||
"getPreReleasePrefix(preReleasePrefix)");
|
||||
|
||||
Assert.assertEquals(versionInfo.getBuildMeta(), version.buildMeta(), "getBuildMeta(buildMeta)");
|
||||
|
||||
Assert.assertEquals(versionInfo.getBuildMetaPrefix(), version.buildMetaPrefix(),
|
||||
"getBuildMetaPrefix(buildMetaPrefix)");
|
||||
|
||||
Assert.assertEquals(versionInfo.getPackageName(), version.packageName(),
|
||||
"getPackageName(packageName)");
|
||||
|
||||
|
@ -173,6 +211,16 @@ class VersionTest implements Version {
|
|||
return "build.meta";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String buildMetaPrefix() {
|
||||
return "+";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String buildMetaPrefixKey() {
|
||||
return "build.meta.prefix";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String className() {
|
||||
return "MyTest";
|
||||
|
@ -228,6 +276,16 @@ class VersionTest implements Version {
|
|||
return "build.prerelease";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String preReleasePrefix() {
|
||||
return "-";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String preReleasePrefixKey() {
|
||||
return "build.prerelase.prefix";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String project() {
|
||||
return "My Test Project";
|
||||
|
@ -243,6 +301,16 @@ class VersionTest implements Version {
|
|||
return "test.properties";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String separator() {
|
||||
return ".";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String separatorKey() {
|
||||
return "build.separator";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String template() {
|
||||
return "myversion.mustache";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue