import groovy.util.logging.Slf4j
import org.commonjava.maven.ext.common.model.Project
import org.commonjava.maven.ext.core.groovy.PMEBaseScript
import org.commonjava.maven.ext.core.groovy.PMEInvocationPoint
import org.commonjava.maven.ext.core.groovy.InvocationStage
import org.commonjava.maven.ext.core.groovy.BaseScript

/**
*
* version.com.redhat.ba property sets to ${project.version} at FIRST invocation stage.
* Check ForceComRedhatBaVersionLast since the property is replaced again at LAST stage.
*
**/
@PMEInvocationPoint(invocationPoint = InvocationStage.FIRST)
@PMEBaseScript BaseScript pme
@Slf4j
public class ForceComRedhatBaVersionExecutor
{
    Project project

    def execute() {
        def String newPropertyValue = '${project.version}'
        def String versionComRedhatBaProperty = 'version.com.redhat.ba'

        project.getModel().addProperty(versionComRedhatBaProperty, newPropertyValue)
        log.info("property {} set to {} ", versionComRedhatBaProperty, newPropertyValue )
    }
}

def ForceComRedhatBaVersionExecutor forceComRedhatBaVersion = new ForceComRedhatBaVersionExecutor(project: pme.getProject())
forceComRedhatBaVersion.execute()
