[
https://issues.apache.org/jira/browse/CAMEL-24726?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ricardo Martinez updated CAMEL-24726:
-------------------------------------
Summary: camel-jbang: stage 1 - extract camel-jbang-runner module (was:
camel-jbang: extract camel-jbang-runner module)
> camel-jbang: stage 1 - extract camel-jbang-runner module
> --------------------------------------------------------
>
> Key: CAMEL-24726
> URL: https://issues.apache.org/jira/browse/CAMEL-24726
> Project: Camel
> Issue Type: Sub-task
> Components: camel-jbang
> Reporter: Ricardo Martinez
> Priority: Trivial
>
> h2. Motivation
> {{Run.runCamelMain()}}, {{runQuarkus()}} and {{runSpringBoot()}} (~700 lines)
> contain the logic for exporting a project to a temp dir, packaging it with
> Maven, and launching the resulting JAR or dev server. This logic is reusable
> but today is locked inside the CLI.
> Extracting it is the first step toward letting the Camel TUI, Kaoto and
> external tooling build and launch projects through a Java API without
> spawning the {{camel}} binary.
> h2. What changes
> New module {{dsl/camel-jbang/camel-jbang-runner}} (package
> {{org.apache.camel.dsl.jbang.runner}}).
> Dependencies: {{camel-jbang-core}}, {{camel-util}}. No picocli, no jline, no
> camel-kamelet-main.
> New public API:
> * {{LaunchOptions}} — plain POJO: jvmArgs, jvmDebugPort, profile, dev,
> sourceDir, logFile,
> durationMax*, jfr, quiet
> * {{LaunchCommand}} — record(List<String> command, Path workingDir,
> Map<String,String> env) with a {{start()}} convenience method
> * {{ProjectRunner}} — interface with {{buildCommand(Path, LaunchOptions)}}
> (runs mvnw package) and {{runCommand(Path, LaunchOptions)}} (runs java -jar /
> quarkus:run / spring-boot:run); implementations: {{CamelMainProjectRunner}},
> {{QuarkusProjectRunner}}, {{SpringBootProjectRunner}}
> {{Run.runCamelMain()}}, {{runQuarkus()}} and {{runSpringBoot()}} in
> {{camel-jbang-core}} each shrink to ~10 lines delegating to the matching
> {{ProjectRunner}}. The exportRun / KameletMain / writeSettings machinery is
> completely untouched.
> Add the module to {{dsl/camel-jbang/pom.xml}} and {{bom/camel-bom}}.
> h2. Compatibility
> * No type moves. No import rewrites anywhere.
> * No CLI option added, removed or renamed.
> * {{camel run --runtime=main|quarkus|spring-boot}} behaviour is identical.
> h2. Note
> After this stage a consumer of {{camel-jbang-runner}} still gets picocli,
> jline and camel-kamelet-main transitively through {{camel-jbang-core}}. The
> picocli-free API is available after stage 2.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)