package io.fathom.cloud.commands;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import org.apache.sshd.server.Command;
import org.apache.sshd.server.Environment;
import org.apache.sshd.server.ExitCallback;
import org.kohsuke.args4j.CmdLineParser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.base.Strings;
public class PrintErrorCommand implements Command {
private static final Logger log = LoggerFactory.getLogger(PrintErrorCommand.class);
private OutputStream err;
private ExitCallback callback;
final String message;
final Cmdlet cmdlet;
public PrintErrorCommand(String message, Cmdlet cmdlet) {
this.message = message;
this.cmdlet = cmdlet;
}
@Override
public void setInputStream(InputStream in) {
}
@Override
public void setOutputStream(OutputStream out) {
}
@Override
public void setErrorStream(OutputStream err) {
this.err = err;
}
@Override
public void setExitCallback(ExitCallback callback) {
this.callback = callback;
}
@Override
public void start(Environment env) throws IOException {
try (PrintWriter writer = new PrintWriter(err)) {
if (!Strings.isNullOrEmpty(message)) {
writer.println(message);
}
if (cmdlet != null) {
if (!Strings.isNullOrEmpty(message)) {
writer.println("");
}
try {
CmdLineParser parser = new CmdLineParser(cmdlet);
writer.println("Usage:");
parser.printUsage(writer, null);
} catch (Exception e) {
log.warn("Error printing usage", e);
}
}
}
if (callback != null) {
callback.onExit(1);
}
}
@Override
public void destroy() {
}
}