Clean up support for generating service.version {}

This has been manually tested in a project external to this plugin, will need
to get some integration tests going Real Soon Now(tm)
This commit is contained in:
R. Tyler Croy 2015-04-18 21:36:16 -07:00
parent 1eaca05ec2
commit 6c17234ef7
6 changed files with 1352 additions and 15 deletions

View File

@ -54,6 +54,7 @@ test {
}
/* Whenever we're building an artifact, we should run the tests */
assemble.dependsOn check
jar.dependsOn check
////////
@ -69,6 +70,7 @@ task groovydocJar(type: Jar, dependsOn: groovydoc) {
classifier = 'groovydoc'
from groovydoc.destinationDir
}
artifacts {
archives sourcesJar
archives groovydocJar

1329
service-artifact-plugin.iml Normal file

File diff suppressed because it is too large Load Diff

1
settings.gradle Normal file
View File

@ -0,0 +1 @@
rootProject.name = 'service-artifact-plugin'

View File

@ -17,9 +17,12 @@ class ServiceArtifactExtension {
protected final Map<String, String> env
protected Logger logger = LoggerFactory.getLogger(ServiceArtifactExtension.class)
/** List of scm handler classes, in priority order */
private final List<Class<AbstractScmHandler>> scmHandlerImpls = [scm.GerritHandler.class]
private final List<Class<AbstractScmHandler>> scmHandlerImpls = [
scm.GerritHandler.class,
scm.GitHandler.class,
]
/** SCM Handler appropriate for this execution */
private AbstractScmHandler scmHandler
protected AbstractScmHandler _scmHandler
ServiceArtifactExtension(final Project project) {
@ -36,20 +39,20 @@ class ServiceArtifactExtension {
* Lazily look up our SCM Handler
*/
AbstractScmHandler getScmHandler() {
if (this.scmHandler != null) {
return this.scmHandler
if (this._scmHandler != null) {
return this._scmHandler
}
this.scmHandlerImpls.each { Class<AbstractScmHandler> h ->
AbstractScmHandler handler = h.build(this.env)
this.scmHandlerImpls.find {
AbstractScmHandler handler = it.build(this.env)
if (handler.isAvailable()) {
this.scmHandler = handler
return
this._scmHandler = handler
return true
}
}
return this.scmHandler
return this._scmHandler
}
/**
@ -57,10 +60,8 @@ class ServiceArtifactExtension {
* environment
*/
String version(final String baseVersion) {
AbstractScmHandler handler = getScmHandler()
if (handler instanceof AbstractScmHandler) {
return handler.annotatedVersion(baseVersion)
if (this.scmHandler instanceof AbstractScmHandler) {
return this.scmHandler.annotatedVersion(baseVersion)
}
return baseVersion

View File

@ -9,6 +9,9 @@ class ServiceArtifactPlugin implements Plugin<Project> {
/* Add the git plugin for finding out our projects meta-data */
project.apply plugin: 'org.ajoberstar.release-base'
project.extensions.create('service', ServiceArtifactExtension, project, System.env)
project.extensions.create('service',
ServiceArtifactExtension,
project,
System.env)
}
}

View File

@ -48,7 +48,8 @@ class ServiceArtifactExtensionVersionSpec extends ServiceArtifactExtensionSpec {
def "version() should return an unmolested string by default"() {
given:
def ext = new ServiceArtifactExtension(this.project)
def ext = Spy(ServiceArtifactExtension, constructorArgs: [this.project])
1 * ext.getScmHandler() >> null
when:
String version = ext.version('1.0')