use of io.micronaut.starter.io.ConsoleOutput in project micronaut-starter by micronaut-projects.
the class CodeGenConfig method load.
public static CodeGenConfig load(BeanContext beanContext, File directory, ConsoleOutput consoleOutput) {
File micronautCli = new File(directory, "micronaut-cli.yml");
if (micronautCli.exists()) {
try (InputStream inputStream = Files.newInputStream(micronautCli.toPath())) {
Yaml yaml = new Yaml();
Map<String, Object> map = new LinkedHashMap<>();
Iterable<Object> objects = yaml.loadAll(inputStream);
Iterator<Object> i = objects.iterator();
if (i.hasNext()) {
while (i.hasNext()) {
Object object = i.next();
if (object instanceof Map) {
map.putAll((Map) object);
}
}
}
BeanIntrospection<CodeGenConfig> introspection = BeanIntrospection.getIntrospection(CodeGenConfig.class);
CodeGenConfig codeGenConfig = introspection.instantiate();
introspection.getBeanProperties().forEach(bp -> {
Object value = map.get(bp.getName());
if (value != null) {
bp.convertAndSet(codeGenConfig, value);
}
});
if (map.containsKey("profile")) {
codeGenConfig.legacy = true;
String profile = map.get("profile").toString();
if (profile.equals("service")) {
codeGenConfig.setApplicationType(ApplicationType.DEFAULT);
} else if (profile.equals("cli")) {
codeGenConfig.setApplicationType(ApplicationType.CLI);
} else if (profile.equals("function-aws") || profile.equals("function-aws-alexa")) {
codeGenConfig.setApplicationType(ApplicationType.FUNCTION);
} else if (profile.equals("grpc")) {
codeGenConfig.setApplicationType(ApplicationType.GRPC);
} else if (profile.equals("kafka") || profile.equals("rabbitmq")) {
codeGenConfig.setApplicationType(ApplicationType.MESSAGING);
} else {
return null;
}
AvailableFeatures availableFeatures = beanContext.getBean(AvailableFeatures.class, Qualifiers.byName(codeGenConfig.getApplicationType().getName()));
if (new File(directory, "build.gradle").exists()) {
codeGenConfig.setBuildTool(BuildTool.GRADLE);
} else if (new File(directory, "build.gradle.kts").exists()) {
codeGenConfig.setBuildTool(BuildTool.GRADLE_KOTLIN);
} else if (new File(directory, "pom.xml").exists()) {
codeGenConfig.setBuildTool(BuildTool.MAVEN);
} else {
return null;
}
codeGenConfig.setFeatures(availableFeatures.getAllFeatures().filter(f -> f instanceof DefaultFeature).map(DefaultFeature.class::cast).filter(f -> f.shouldApply(codeGenConfig.getApplicationType(), new Options(codeGenConfig.getSourceLanguage(), codeGenConfig.getTestFramework(), codeGenConfig.getBuildTool(), VersionInfo.getJavaVersion()), new HashSet<>())).map(Feature::getName).collect(Collectors.toList()));
consoleOutput.warning("This project is using Micronaut CLI v2 but is still using the v1 micronaut-cli.yml format");
consoleOutput.warning("To replace the configuration with the new format, run `mn update-cli-config`");
}
return codeGenConfig;
} catch (IOException e) {
}
}
return null;
}
use of io.micronaut.starter.io.ConsoleOutput in project micronaut-starter by micronaut-projects.
the class DiffController method diffFlowable.
private Flowable<String> diffFlowable(ProjectGenerator projectGenerator, GeneratorContext generatorContext) {
return Flowable.create(emitter -> {
try {
// empty string so there is at least some content
// if there is no difference
emitter.onNext("");
featureDiffer.produceDiff(projectGenerator, generatorContext, new ConsoleOutput() {
@Override
public void out(String message) {
emitter.onNext(message + LINE_SEPARATOR);
}
@Override
public void err(String message) {
// will never be called
}
@Override
public void warning(String message) {
// will never be called
}
@Override
public boolean showStacktrace() {
return false;
}
@Override
public boolean verbose() {
return false;
}
});
emitter.onComplete();
} catch (Exception e) {
emitter.onError(new HttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR, "Could not produce diff: " + e.getMessage()));
}
}, BackpressureStrategy.BUFFER);
}
Aggregations