Package bear.plugins.misc

Source Code of bear.plugins.misc.FileWatchDogPlugin

package bear.plugins.misc;

import bear.console.AbstractConsole;
import bear.console.ConsoleCallback;
import bear.console.ConsoleCallbackResult;
import bear.core.GlobalContext;
import bear.core.SessionContext;
import bear.plugins.Plugin;
import bear.plugins.sh.CommandLine;
import bear.session.DynamicVariable;
import bear.session.Variables;
import bear.task.InstallationTask;
import bear.task.InstallationTaskDef;
import bear.vcs.CommandLineResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nonnull;

/**
* @author Andrey Chaschev chaschev@gmail.com
*/
public class FileWatchDogPlugin extends Plugin {
    private static final Logger logger = LoggerFactory.getLogger(FileWatchDogPlugin.class);

    public final DynamicVariable<Integer>
        timeoutMs = Variables.equalTo(bear.buildTimeoutMs);

    public final DynamicVariable<Boolean>
        reportJavaExceptions = Variables.newVar(true);


    public FileWatchDogPlugin(GlobalContext global) {
        super(global);

    }

    public CommandLineResult<?> watch(final SessionContext $, final WatchDogInput input) {
        int timeoutMs = input.timeoutMs == -1 ? $.var(this.timeoutMs) : input.timeoutMs;

        final boolean reportExceptions = $.var(reportJavaExceptions);


        CommandLine line = $.sys.line().timeoutMs(timeoutMs)
            .sudoOrStty(input.sudo).addSplit("tail -f -n " + input.lines + " ").a(input.path)
            .setCallback(new ConsoleCallback() {
                @Override
                @Nonnull
                public ConsoleCallbackResult progress(AbstractConsole.Terminal console, String buffer, String wholeText) {
                    if (buffer.contains("password")) {
                        console.println($.var($.bear.sshPassword));
                    }

                    if (reportExceptions) {
                        int index = buffer.indexOf("Exception: ");
                        if (index != -1) {
                            logger.warn("exception in {}: {}", buffer.substring(index, buffer.indexOf('\n', index)));
                        }
                    }

                    return input.callback.progress(console, buffer, wholeText);
                }
            });


//        logger.debug("OOOOOOOOOOOOPS - entering watch!!");
        CommandLineResult<?> result = $.sys.sendCommand(line);

//        logger.debug("OOOOOOOOOOOOPS - leaving watch: {}!!", result);

        return result;
    }


    @Override
    public InstallationTaskDef<? extends InstallationTask> getInstall() {
        return InstallationTaskDef.EMPTY;
    }
}
TOP

Related Classes of bear.plugins.misc.FileWatchDogPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.