in grails-cli/src/main/java/org/grails/forge/cli/CodeGenConfig.java [104:171]
public static CodeGenConfig load(BeanContext beanContext, File directory, ConsoleOutput consoleOutput) {
File grailsCli = new File(directory, "grails-forge-cli.yml");
if (!grailsCli.exists()) {
// backwards compatibility for grails-cli.yml
grailsCli = new File(directory, "grails-cli.yml");
}
if (grailsCli.exists()) {
try (InputStream inputStream = Files.newInputStream(grailsCli.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("web")) {
codeGenConfig.setApplicationType(ApplicationType.WEB);
} else if (profile.equals("rest-api")) {
codeGenConfig.setApplicationType(ApplicationType.REST_API);
} else if (profile.equals("plugin")) {
codeGenConfig.setApplicationType(ApplicationType.PLUGIN);
} else if (profile.equals("web-plugin")) {
codeGenConfig.setApplicationType(ApplicationType.WEB_PLUGIN);
} else {
return null;
}
AvailableFeatures availableFeatures = beanContext.getBean(AvailableFeatures.class, Qualifiers.byName(codeGenConfig.getApplicationType().getName()));
codeGenConfig.setFeatures(availableFeatures.getAllFeatures()
.filter(f -> f instanceof DefaultFeature)
.map(DefaultFeature.class::cast)
.filter(f -> f.shouldApply(
codeGenConfig.getApplicationType(),
new Options(codeGenConfig.getTestFramework(), JdkVersion.DEFAULT_OPTION),
new HashSet<>()))
.map(Feature::getName)
.collect(Collectors.toList()));
consoleOutput.warning("This project is using Grails CLI v2 but is still using the v1 grails-forge-cli.yml format");
consoleOutput.warning("To replace the configuration with the new format, run `grails update-cli-config`");
}
return codeGenConfig;
} catch (IOException e) { }
}
return null;
}