package hudson.plugins.rubyMetrics; import static hudson.plugins.rubyMetrics.Utils.moveReportsToBuildRootDir; import hudson.FilePath; import hudson.model.AbstractBuild; import hudson.model.BuildListener; import hudson.model.Result; import java.io.File; import java.io.FilenameFilter; public abstract class HtmlPublisher extends AbstractRubyMetricsPublisher { protected String reportDir; public String getReportDir() { return reportDir; } protected boolean prepareMetricsReportBeforeParse(AbstractBuild<?, ?> build, BuildListener listener, FilenameFilter indexFilter, String toolShortName) throws InterruptedException { if (!Result.SUCCESS.equals(build.getResult())) { listener.getLogger().println("Build wasn't successful, skipping " + toolShortName + " coverage report"); return true; } listener.getLogger().println("Publishing " + toolShortName + " report..."); final FilePath workspace = build.getModuleRoot(); boolean copied = moveReportsToBuildRootDir(workspace, build.getRootDir(), listener, reportDir, "**/*"); if (!copied) { build.setResult(Result.FAILURE); return fail(build, listener, toolShortName + " report directory wasn't found using the pattern '" + reportDir + "'."); } File[] coverageFiles = build.getRootDir().listFiles(indexFilter); if (coverageFiles == null || coverageFiles.length == 0) { return fail(build, listener, toolShortName + " report index file wasn't found"); } return true; } protected File[] getCoverageFiles(AbstractBuild<?, ?> build, FilenameFilter indexFilter) { return build.getRootDir().listFiles(indexFilter); } }