All Downloads are FREE. Search and download functionalities are using the official Maven repository.

hudson.plugins.im.bot.StatusCommand Maven / Gradle / Ivy

The newest version!
/*
 * Created on Apr 22, 2007
 */
package hudson.plugins.im.bot;

import hudson.Extension;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.plugins.im.tools.MessageHelper;

import java.util.Arrays;
import java.util.Collection;


/**
 * Job/project status command for the jabber bot
 * @author Pascal Bleser
 */
@Extension
public class StatusCommand extends AbstractMultipleJobCommand {
    @Override
    public Collection getCommandNames() {
        return Arrays.asList("status","s","jobs");
    }

    @Override
    protected CharSequence getMessageForJob(AbstractProject project) {
        StringBuilder msg = new StringBuilder(32);
        msg.append(project.getFullDisplayName());
        if (project.isDisabled()) {
            msg.append("(disabled) ");
        // a project which is building and additionally in queue should be reported as building
        } else if (project.isBuilding()) {
            msg.append("(BUILDING: ").append(project.getLastBuild().getDurationString()).append(")");
        } else if (project.isInQueue()) {
            msg.append("(in queue) ");
        }
        msg.append(": ");

        AbstractBuild lastBuild = project.getLastBuild();
        while ((lastBuild != null) && lastBuild.isBuilding()) {
            lastBuild = lastBuild.getPreviousBuild();
        }
        if (lastBuild != null) {
            msg.append("last build: ").append(lastBuild.getNumber()).append(" (")
            	.append(lastBuild.getTimestampString()).append(" ago): ").append(lastBuild.getResult()).append(": ")
            	.append(MessageHelper.getBuildURL(lastBuild));
        } else {
            msg.append("no finished build yet");
        }
        return msg;
    }

    @Override
    protected String getCommandShortName() {
        return "status";
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy