package hudson.plugins.templateproject; import hudson.EnvVars; import hudson.Util; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; import hudson.model.BuildListener; import hudson.model.TaskListener; import hudson.model.Hudson; import hudson.util.LogTaskListener; import static java.util.logging.Level.INFO; import java.util.logging.Logger; public class TemplateUtils { private static final Logger logger = Logger.getLogger("TemplateProject"); public static AbstractProject<?, ?> getProject(String projectName, AbstractBuild<?, ?> build) { String pName = projectName; if (build != null) { pName = TemplateUtils.getExpandedProjectName(projectName, build); if (Hudson.getInstance().getItemByFullName(pName) == null) { logger.info("[TemplateProject] Template Project '" + pName + "' not found. Skipping."); } } return (AbstractProject<?, ?>) Hudson.getInstance().getItemByFullName(pName); } public static String getExpandedProjectName(String projectName, AbstractBuild<?, ?> build) { // Limitation : Currently only supports build variable for replacement. // Gets into infinite loop using `getEnvironment() since it loops // back to `getScm().buildEnvVars()` return Util.replaceMacro(projectName, build.getBuildVariables()); } }