Search in sources :

Example 1 with ProjectGenerator

use of io.micronaut.starter.application.generator.ProjectGenerator in project micronaut-starter by micronaut-projects.

the class FeatureDiffCommand method call.

@Override
public Integer call() throws Exception {
    String appName = FileSystemOutputHandler.getDefaultBaseDirectory().getName();
    Project project = NameUtils.parse(config.getDefaultPackage() + "." + appName);
    Options options = new Options(config.getSourceLanguage(), config.getTestFramework(), config.getBuildTool());
    ApplicationType applicationType = config.getApplicationType();
    List<String> features = this.features;
    ProjectGenerator projectGenerator = this.projectGenerator;
    featureDiffer.produceDiff(projectGenerator, project, applicationType, options, getOperatingSystem(), features, this);
    return 0;
}
Also used : Project(io.micronaut.starter.application.Project) Options(io.micronaut.starter.options.Options) ApplicationType(io.micronaut.starter.application.ApplicationType) ProjectGenerator(io.micronaut.starter.application.generator.ProjectGenerator)

Example 2 with ProjectGenerator

use of io.micronaut.starter.application.generator.ProjectGenerator in project micronaut-starter by micronaut-projects.

the class DiffController method diffFeature.

/**
 * Returns a diff for the given application type and feature.
 *
 * @param type The application type
 * @param feature The feature
 * @param build The build tool
 * @param test The test framework
 * @param lang The lang
 * @param javaVersion The java version
 * @param requestInfo The request info
 * @return A string representing the difference
 */
@Get(uri = "/{type}/feature/{feature}{?lang,build,test,javaVersion,name}", produces = MediaType.TEXT_PLAIN)
@Override
@ApiResponse(responseCode = "404", description = "If no difference is found")
@ApiResponse(responseCode = "400", description = "If the supplied parameters are invalid")
@ApiResponse(responseCode = "200", description = "A textual diff", content = @Content(mediaType = "text/plain"))
public Flowable<String> diffFeature(@NotNull ApplicationType type, @Nullable String name, @NonNull @NotBlank String feature, @Nullable BuildTool build, @Nullable TestFramework test, @Nullable Language lang, @Nullable JdkVersion javaVersion, @Parameter(hidden = true) RequestInfo requestInfo) {
    ProjectGenerator projectGenerator;
    GeneratorContext generatorContext;
    try {
        Project project = name != null ? NameUtils.parse(name) : this.project;
        Options options = new Options(lang != null ? lang : Language.JAVA, test != null ? test : TestFramework.JUNIT, build != null ? build : BuildTool.GRADLE);
        projectGenerator = this.projectGenerator;
        generatorContext = projectGenerator.createGeneratorContext(type, project, options, UserAgentParser.getOperatingSystem(requestInfo.getUserAgent()), Collections.singletonList(feature), ConsoleOutput.NOOP);
    } catch (IllegalArgumentException e) {
        throw new HttpStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
    }
    return diffFlowable(projectGenerator, generatorContext);
}
Also used : Project(io.micronaut.starter.application.Project) HttpStatusException(io.micronaut.http.exceptions.HttpStatusException) ProjectGenerator(io.micronaut.starter.application.generator.ProjectGenerator) GeneratorContext(io.micronaut.starter.application.generator.GeneratorContext) Get(io.micronaut.http.annotation.Get) ApiResponse(io.swagger.v3.oas.annotations.responses.ApiResponse)

Example 3 with ProjectGenerator

use of io.micronaut.starter.application.generator.ProjectGenerator in project micronaut-starter by micronaut-projects.

the class DiffController method diffApp.

/**
 * Diffs the whole application for all selected features.
 * @param type The application type
 * @param name The name of the application
 * @param features The features
 * @param build The build tool
 * @param test The test framework
 * @param lang The lang
 * @param requestInfo The request info
 * @return An HTTP response that emits a writable
 */
@Get(uri = "/{type}/{name}{?features,lang,build,test,javaVersion}", produces = MediaType.TEXT_PLAIN)
@Override
@ApiResponse(responseCode = "404", description = "If no difference is found")
@ApiResponse(responseCode = "400", description = "If the supplied parameters are invalid")
@ApiResponse(responseCode = "200", description = "A textual diff", content = @Content(mediaType = "text/plain"))
public Flowable<String> diffApp(ApplicationType type, @Pattern(regexp = "[\\w\\d-_\\.]+") String name, @Nullable List<String> features, @Nullable BuildTool build, @Nullable TestFramework test, @Nullable Language lang, @Nullable JdkVersion javaVersion, @Parameter(hidden = true) RequestInfo requestInfo) throws IOException {
    ProjectGenerator projectGenerator;
    GeneratorContext generatorContext;
    try {
        Project project = name != null ? NameUtils.parse(name) : this.project;
        Options options = new Options(lang != null ? lang : Language.JAVA, test != null ? test : TestFramework.JUNIT, build != null ? build : BuildTool.GRADLE);
        projectGenerator = this.projectGenerator;
        generatorContext = projectGenerator.createGeneratorContext(type, project, options, UserAgentParser.getOperatingSystem(requestInfo.getUserAgent()), features != null ? features : Collections.emptyList(), ConsoleOutput.NOOP);
    } catch (IllegalArgumentException e) {
        throw new HttpStatusException(HttpStatus.BAD_REQUEST, e.getMessage());
    }
    return diffFlowable(projectGenerator, generatorContext);
}
Also used : Project(io.micronaut.starter.application.Project) HttpStatusException(io.micronaut.http.exceptions.HttpStatusException) ProjectGenerator(io.micronaut.starter.application.generator.ProjectGenerator) GeneratorContext(io.micronaut.starter.application.generator.GeneratorContext) Get(io.micronaut.http.annotation.Get) ApiResponse(io.swagger.v3.oas.annotations.responses.ApiResponse)

Aggregations

Project (io.micronaut.starter.application.Project)3 ProjectGenerator (io.micronaut.starter.application.generator.ProjectGenerator)3 Get (io.micronaut.http.annotation.Get)2 HttpStatusException (io.micronaut.http.exceptions.HttpStatusException)2 GeneratorContext (io.micronaut.starter.application.generator.GeneratorContext)2 ApiResponse (io.swagger.v3.oas.annotations.responses.ApiResponse)2 ApplicationType (io.micronaut.starter.application.ApplicationType)1 Options (io.micronaut.starter.options.Options)1