CLIEventListener.java
package org.docascode.cli;
import org.apache.log4j.Logger;
import org.docascode.api.DocAsCode;
import org.docascode.api.core.errors.DocAsCodeException;
import org.docascode.api.event.Event;
import org.docascode.api.event.ProgressEvent;
import org.docascode.api.listener.EventListener;
public class CLIEventListener implements EventListener {
private static Logger logger = Logger.getLogger(CLIEventListener.class);
@Override
public void fireEvent(Event event) {
String msg;
if (event instanceof ProgressEvent){
ProgressEvent p = (ProgressEvent) event;
msg = String.format("%s: %3d%% (%s/%s)...\r",
p.getMessage(),
100*p.getProgress()/p.getTotal(),
p.getProgress(),
p.getTotal());
} else {
msg = String.format("%s%n",
event.getMessage());
}
switch (event.getLevel()){
case SUCESS:
success(msg);
break;
case INFO:
info(msg);
break;
case WARN:
warn(msg);
break;
case DEBUG:
debug(msg);
break;
default:
break;
}
}
void success(String msg){
logger.info(msg);
}
protected void info(String msg){
logger.info(msg);
}
protected void warn(String msg){
logger.warn(msg);
}
protected void debug(String msg) {
logger.debug(msg);
}
protected void error(String msg) {
logger.error(String.format("Error: %s",
msg));
}
protected void error(Exception e){
error(String.format("Error. %s%n",
e.getMessage()));
try {
logger.error(String.format(
"Build Number: '%s'%n",
DocAsCode.getBuildNumber()));
} catch (DocAsCodeException er) {
logger.error(er);
}
logger.error("Stacktrace",e);
logger.error("You can submit an issue at 'https://gitlab.com/mtusseau/docascode/issues'.");
logger.error(String.format(
"Please give the logs given in %s/.docascode/docascode.log.%n",System.getProperty("user.home")));
System.exit(1);
}
}