io.micronaut.starter.cli.CodeGenConfig Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of micronaut-cli Show documentation
Show all versions of micronaut-cli Show documentation
Generates Micronaut applications
/*
* Copyright 2017-2022 original authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.micronaut.starter.cli;
import io.micronaut.context.BeanContext;
import io.micronaut.core.annotation.Introspected;
import io.micronaut.core.beans.BeanIntrospection;
import io.micronaut.inject.qualifiers.Qualifiers;
import io.micronaut.starter.application.ApplicationType;
import io.micronaut.starter.feature.AvailableFeatures;
import io.micronaut.starter.feature.DefaultFeature;
import io.micronaut.starter.feature.Feature;
import io.micronaut.starter.io.ConsoleOutput;
import io.micronaut.starter.io.FileSystemOutputHandler;
import io.micronaut.starter.options.BuildTool;
import io.micronaut.starter.options.Language;
import io.micronaut.starter.options.Options;
import io.micronaut.starter.options.TestFramework;
import io.micronaut.starter.util.VersionInfo;
import org.yaml.snakeyaml.Yaml;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Introspected
public class CodeGenConfig {
private String framework = Options.FRAMEWORK_MICRONAUT;
private ApplicationType applicationType;
private String defaultPackage;
private TestFramework testFramework;
private Language sourceLanguage;
private BuildTool buildTool;
private List features;
private boolean legacy;
public String getFramework() {
return framework;
}
public void setFramework(String framework) {
this.framework = framework;
}
public ApplicationType getApplicationType() {
return applicationType;
}
public void setApplicationType(ApplicationType applicationType) {
this.applicationType = applicationType;
}
public String getDefaultPackage() {
return defaultPackage;
}
public void setDefaultPackage(String defaultPackage) {
this.defaultPackage = defaultPackage;
}
public TestFramework getTestFramework() {
return testFramework;
}
public void setTestFramework(TestFramework testFramework) {
this.testFramework = testFramework;
}
public Language getSourceLanguage() {
return sourceLanguage;
}
public void setSourceLanguage(Language sourceLanguage) {
this.sourceLanguage = sourceLanguage;
}
public List getFeatures() {
return features;
}
public void setFeatures(List features) {
this.features = features;
}
public BuildTool getBuildTool() {
return buildTool;
}
public void setBuildTool(BuildTool buildTool) {
this.buildTool = buildTool;
}
public boolean isLegacy() {
return legacy;
}
public static CodeGenConfig load(BeanContext beanContext, ConsoleOutput consoleOutput) {
try {
return load(beanContext, FileSystemOutputHandler.getDefaultBaseDirectory(), consoleOutput);
} catch (IOException e) {
return null;
}
}
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 map = new LinkedHashMap<>();
Iterable