package org.jenkinsci.plugins.github.status.sources;
import org.jenkinsci.plugins.github.common.ExpandableMessage;
import org.jenkinsci.plugins.github.extension.status.GitHubStatusBackrefSource;
import org.kohsuke.stapler.DataBoundConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import hudson.Extension;
import hudson.model.Descriptor;
import hudson.model.Run;
import hudson.model.TaskListener;
/**
* Allows to manually enter backref, with env/token expansion.
*
* @author pupssman (Kalinin Ivan)
* @since 1.21.2
*
*/
public class ManuallyEnteredBackrefSource extends GitHubStatusBackrefSource {
private static final Logger LOG = LoggerFactory.getLogger(ManuallyEnteredBackrefSource.class);
private String backref;
@DataBoundConstructor
public ManuallyEnteredBackrefSource(String backref) {
this.backref = backref;
}
public String getBackref() {
return backref;
}
/**
* Just returns what user entered. Expands env vars and token macro
*/
@SuppressWarnings("deprecation")
@Override
public String get(Run<?, ?> run, TaskListener listener) {
try {
return new ExpandableMessage(backref).expandAll(run, listener);
} catch (Exception e) {
LOG.debug("Can't expand backref, returning as is", e);
return backref;
}
}
@Extension
public static class ManuallyEnteredBackrefSourceDescriptor extends Descriptor<GitHubStatusBackrefSource> {
@Override
public String getDisplayName() {
return "Manually entered backref";
}
}
}