diff --git a/src/main/java/org/jenkinsci/plugins/configfiles/buildwrapper/ConfigFileBuildWrapper.java b/src/main/java/org/jenkinsci/plugins/configfiles/buildwrapper/ConfigFileBuildWrapper.java index c104384..404f294 100644 --- a/src/main/java/org/jenkinsci/plugins/configfiles/buildwrapper/ConfigFileBuildWrapper.java +++ b/src/main/java/org/jenkinsci/plugins/configfiles/buildwrapper/ConfigFileBuildWrapper.java @@ -23,23 +23,24 @@ */ package org.jenkinsci.plugins.configfiles.buildwrapper; +import java.io.IOException; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; + import hudson.Extension; import hudson.ExtensionList; import hudson.FilePath; import hudson.Launcher; -import hudson.model.BuildListener; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; +import hudson.model.BuildListener; import hudson.tasks.BuildWrapper; import hudson.tasks.BuildWrapperDescriptor; - -import java.io.IOException; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Map; - +import org.apache.commons.lang.StringUtils; import org.jenkinsci.lib.configprovider.ConfigProvider; import org.jenkinsci.lib.configprovider.model.Config; import org.jenkinsci.plugins.configfiles.common.CleanTempFilesAction; @@ -67,8 +68,7 @@ public class ConfigFileBuildWrapper extends BuildWrapper { // Temporarily attach info about the files to be deleted to the build - this action gets removed from the build again by 'org.jenkinsci.plugins.configfiles.common.CleanTempFilesRunListener' build.addAction(new CleanTempFilesAction(file2Path)); - return new Environment() { - }; + return new ManagedFilesEnvironment(file2Path); } public List getManagedFiles() { @@ -98,4 +98,40 @@ public class ConfigFileBuildWrapper extends BuildWrapper { } + public class ManagedFilesEnvironment extends Environment { + private final Map file2Path; + + public ManagedFilesEnvironment(Map file2Path) { + this.file2Path = file2Path == null ? Collections. emptyMap() : file2Path; + } + + @Override + public void buildEnvVars(Map env) { + for (Map.Entry entry : file2Path.entrySet()) { + ManagedFile mf = entry.getKey(); + FilePath fp = entry.getValue(); + if (!StringUtils.isBlank(mf.variable)) { + env.put(mf.variable, fp.getRemote()); + } + } + } + + /** + * Provides access to the files which have to be removed after the build + * + * @return a list of paths to the temp files (remotes) + */ + List getTempFiles() { + List tempFiles = new ArrayList(); + for (Map.Entry entry : file2Path.entrySet()) { + boolean noTargetGiven = StringUtils.isBlank(entry.getKey().targetLocation); + if (noTargetGiven) { + tempFiles.add(entry.getValue().getRemote()); + } + } + return tempFiles; + } + } + } +