All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.atlassian.bamboo.specs.codegen.emitters.owner.PlanOwnerEmitter Maven / Gradle / Ivy

package com.atlassian.bamboo.specs.codegen.emitters.owner;

import com.atlassian.bamboo.specs.api.builders.owner.PlanOwner;
import com.atlassian.bamboo.specs.api.builders.plan.configuration.AllOtherPluginsConfiguration;
import com.atlassian.bamboo.specs.api.codegen.CodeEmitter;
import com.atlassian.bamboo.specs.api.codegen.CodeGenerationContext;
import com.atlassian.bamboo.specs.api.codegen.CodeGenerationException;
import com.atlassian.bamboo.specs.api.model.owner.PlanOwnerProperties;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;

public class PlanOwnerEmitter implements CodeEmitter {

    @NotNull
    @Override
    public String emitCode(@NotNull final CodeGenerationContext context, @NotNull final PlanOwnerProperties entity)
            throws CodeGenerationException {
        if (StringUtils.isBlank(entity.getOwner())) {
            return "";
        }
        context.importClassName(AllOtherPluginsConfiguration.class);
        StringBuilder sb = new StringBuilder();
        sb.append("/* Add com.atlassian.buildeng:bamboo-plan-ownership-specs:")
                .append(version())
                .append(" as dependency to your specs pom.xml to make use of this custom entity.");
        sb.append(context.newLine());
        sb.append("new ")
                .append(PlanOwner.class.getSimpleName())
                .append("(\"")
                .append(entity.getOwner())
                .append("\")  */");
        sb.append(context.newLine()).append("new AllOtherPluginsConfiguration()");
        context.incIndentation();
        sb.append(context.newLine()).append(".configuration(new MapBuilder()");
        context.incIndentation();
        sb.append(context.newLine())
                .append(".put(\"custom.planownership.bamboo.plugin.plan.config.ownerOfBuild\", \"")
                .append(entity.getOwner())
                .append("\")");
        sb.append(context.newLine()).append(".build())");
        context.decIndentation();
        context.decIndentation();
        return sb.toString();
    }

    private String version() {
        try {
            Properties props = new Properties();
            InputStream stream = PlanOwnerEmitter.class.getResourceAsStream(
                    "/com/atlassian/bamboo/specs/codegen/emitters/owner/version.properties");
            if (stream != null) {
                props.load(stream);
            }
            return props.getProperty("version", "RELEASE");
        } catch (IOException ex) {
            return "RELEASE";
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy