package hudson.plugins.parameterizedtrigger;
import hudson.EnvVars;
import hudson.Extension;
import hudson.FilePath;
import hudson.model.AbstractBuild;
import hudson.model.Action;
import hudson.model.Descriptor;
import hudson.model.ParameterValue;
import hudson.model.ParametersAction;
import hudson.model.StringParameterValue;
import hudson.model.TaskListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.tools.ant.filters.StringInputStream;
import org.kohsuke.stapler.DataBoundConstructor;
public class FileBuildParameters extends AbstractBuildParameters {
private final String propertiesFile;
@DataBoundConstructor
public FileBuildParameters(String propertiesFile) {
this.propertiesFile = propertiesFile;
}
public Action getAction(AbstractBuild<?,?> build, TaskListener listener)
throws IOException, InterruptedException {
EnvVars env = build.getEnvironment(listener);
String resolvedPropertiesFile = env.expand(propertiesFile);
FilePath f = build.getWorkspace().child(resolvedPropertiesFile);
if (!f.exists()) {
listener
.getLogger()
.println(
"[parameterizedtrigger] Could not trigger downstream project, as properties file"
+ resolvedPropertiesFile
+ " did not exist.");
return null;
}
String s = f.readToString();
s = env.expand(s);
Properties p = new Properties();
p.load(new StringInputStream(s));
List<ParameterValue> values = new ArrayList<ParameterValue>();
for (Map.Entry<Object, Object> entry : p.entrySet()) {
values.add(new StringParameterValue(entry.getKey().toString(),
entry.getValue().toString()));
}
return new ParametersAction(values);
}
public String getPropertiesFile() {
return propertiesFile;
}
@Extension
public static class DescriptorImpl extends Descriptor<AbstractBuildParameters> {
@Override
public String getDisplayName() {
return "Parameters from properties file";
}
}
}