Claus Ibsen created CAMEL-25236:
-----------------------------------

             Summary: camel-jbang - camel run --example should work from any 
folder for examples that read files
                 Key: CAMEL-25236
                 URL: https://issues.apache.org/jira/browse/CAMEL-25236
             Project: Camel
          Issue Type: Improvement
          Components: camel-jbang
            Reporter: Claus Ibsen


*Problem*

{{camel run --example=route/content-based-router}} (and other examples that 
read or write files, such as {{fail-well/error-handling}}) only works when run 
from the example's own folder. The example is extracted (or downloaded) to a 
temp folder, but the JVM keeps the working directory it was started in, so 
{{file:orders}} reads an auto-created, empty {{./orders}} in the current folder 
and the example processes nothing. A JVM cannot change its own working 
directory, and setting {{user.dir}} is unsupported.

The TUI works around it by starting the example in a separate process whose 
working directory is the example folder. The CLI should not need a different 
code path depending on whether an example has files.

*Idea*

Put the example's data files on the classpath (as the routes are), and let 
camel-file read them from there, as a kind of virtual ("fake") file system for 
the example. For example, camel run could tell camel-file that relative file 
paths of this run resolve against the example's files, so {{file:orders}} 
consumes the example's {{orders}} folder, wherever {{camel run}} is started.

*Questions to settle*

* Where the virtual file system lives: a camel-file feature (a base directory 
or resolver for relative paths, set by camel run for examples), or something in 
camel-jbang only.
* Writing: examples also write files ({{parked/}}, {{out/}}). The classpath is 
read-only, so writes need a real folder (the extracted temp folder, or a folder 
in the current directory), and the user should be able to find what was written.
* Consumer semantics: {{noop}}, idempotent repository, move/delete after 
processing, and file watching should behave the same as with a real folder.
* Scope: bundled examples and examples downloaded from GitHub alike; {{camel 
export}} of an example should still produce a normal project with real files.

_Claude Code on behalf of davsclaus_



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to