package com.example.helloworld.cli;
import com.example.helloworld.HelloWorldConfiguration;
import com.example.helloworld.core.Template;
import io.dropwizard.cli.ConfiguredCommand;
import io.dropwizard.setup.Bootstrap;
import net.sourceforge.argparse4j.impl.Arguments;
import net.sourceforge.argparse4j.inf.Namespace;
import net.sourceforge.argparse4j.inf.Subparser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Optional;
public class RenderCommand extends ConfiguredCommand<HelloWorldConfiguration> {
private static final Logger LOGGER = LoggerFactory.getLogger(RenderCommand.class);
public RenderCommand() {
super("render", "Render the template data to console");
}
@Override
public void configure(Subparser subparser) {
super.configure(subparser);
subparser.addArgument("-i", "--include-default")
.action(Arguments.storeTrue())
.dest("include-default")
.help("Also render the template with the default name");
subparser.addArgument("names").nargs("*");
}
@Override
protected void run(Bootstrap<HelloWorldConfiguration> bootstrap,
Namespace namespace,
HelloWorldConfiguration configuration) throws Exception {
final Template template = configuration.buildTemplate();
if (namespace.getBoolean("include-default")) {
LOGGER.info("DEFAULT => {}", template.render(Optional.empty()));
}
for (String name : namespace.<String>getList("names")) {
for (int i = 0; i < 1000; i++) {
LOGGER.info("{} => {}", name, template.render(Optional.of(name)));
Thread.sleep(1000);
}
}
}
}