cstamas commented on code in PR #2117:
URL: https://github.com/apache/maven/pull/2117#discussion_r1967483883


##########
impl/maven-cli/src/main/java/org/apache/maven/cling/invoker/mvnsh/builtin/BuiltinShellCommandRegistryFactory.java:
##########
@@ -130,53 +129,133 @@ public String name() {
             return "Builtin Maven Shell commands";
         }
 
-        private List<Completers.OptDesc> commandOptions(String command) {
+        private void shell(CommandInput input) {
+            if (input.args().length > 0) {
+                try {
+                    ProcessBuilder builder = new ProcessBuilder();
+                    List<String> processArgs = new ArrayList<>();
+                    if (Os.IS_WINDOWS) {
+                        processArgs.add("cmd.exe");
+                        processArgs.add("/c");
+                    } else {
+                        processArgs.add("sh");
+                        processArgs.add("-c");
+                    }
+                    processArgs.add(String.join(" ", 
Arrays.asList(input.args())));
+                    builder.command(processArgs);
+                    builder.directory(shellContext.cwd.get().toFile());
+                    Process process = builder.start();
+                    Thread out = new Thread(new 
StreamGobbler(process.getInputStream(), shellContext.logger::info));
+                    Thread err = new Thread(new 
StreamGobbler(process.getErrorStream(), shellContext.logger::error));
+                    out.start();
+                    err.start();
+                    int exitCode = process.waitFor();
+                    out.join();
+                    err.join();
+                    if (exitCode != 0) {
+                        shellContext.logger.error("Shell command exited with 
code " + exitCode);
+                    }
+                } catch (Exception e) {
+                    saveException(e);
+                }
+            }
+        }
+
+        private void cd(CommandInput input) {
             try {
-                invoke(new CommandSession(), command, "--help");
-            } catch (Options.HelpException e) {
-                return compileCommandOptions(e.getMessage());
+                if (input.args().length == 1) {
+                    shellContext.cwd.change(input.args()[0]);
+                } else {
+                    shellContext.writer.accept("Error: 'cd' accepts only one 
argument");
+                }
             } catch (Exception e) {
-                // ignore
+                saveException(e);
+            }
+        }
+
+        private List<Completer> cdCompleter(String name) {
+            return List.of(new ArgumentCompleter(new 
Completers.DirectoriesCompleter(shellContext.cwd)));
+        }
+
+        private void ls(CommandInput input) {
+            try {
+                try (Stream<Path> list = Files.list(shellContext.cwd.get())) {
+                    list.forEach(file -> {
+                        if (Files.isDirectory(file)) {
+                            
shellContext.writer.accept(file.getFileName().toString() + "/");
+                        } else {
+                            
shellContext.writer.accept(file.getFileName().toString());
+                        }
+                    });
+                }
+            } catch (Exception e) {
+                saveException(e);
+            }
+        }
+
+        private void pwd(CommandInput input) {
+            try {
+                shellContext.writer.accept(shellContext.cwd.get().toString());
+            } catch (Exception e) {
+                saveException(e);
             }
-            return null;
         }
 
         private void mvn(CommandInput input) {
             try {
                 shellMavenInvoker.invoke(mavenParser.parseInvocation(

Review Comment:
   This what happens now:
   ```
   maven mvnsh> mvn package
   [INFO] Please upgrade to Mimir version 0.3.5-SNAPSHOT (you are using version 
0.3.4)
   [INFO] Mimir session created
   [INFO] Scanning for projects...
   [INFO] 
--------------------------------------------------------------------------------------------------------------------------
   [INFO] Reactor Build Order:
   [INFO] 
   [INFO] Apache Maven                                                          
                                               [pom]
   [INFO] Maven 4 API                                                           
                                               [pom]
   [INFO] Maven 4 API :: Meta annotations                                       
                                               [jar]
   [INFO] Maven 4 API :: Dependency Injection                                   
                                               [jar]
   [INFO] Maven 4 API :: XML                                                    
                                               [jar]
   [INFO] Maven 4 API :: Model                                                  
                                               [jar]
   [INFO] Maven 4 API :: Plugin                                                 
                                               [jar]
   [INFO] Maven 4 API :: Settings                                               
                                               [jar]
   [INFO] Maven 4 API :: Toolchain                                              
                                               [jar]
   [INFO] Maven 4 API :: Repository Metadata                                    
                                               [jar]
   [INFO] Maven 4 API :: Core                                                   
                                               [jar]
   [INFO] Maven 4 API :: SPI                                                    
                                               [jar]
   [INFO] Maven 4 API :: CLI                                                    
                                               [jar]
   [INFO] Maven 4 Implementation Modules                                        
                                               [pom]
   [INFO] Maven 4 Dependency Injection                                          
                                               [jar]
   [INFO] Maven 4 XML Implementation                                            
                                               [jar]
   [INFO] Maven 4 API Implementation                                            
                                               [jar]
   [INFO] Maven 4 JLine integration                                             
                                               [jar]
   [INFO] Maven 4 Logging                                                       
                                               [jar]
   [INFO] Maven Compatibility Modules                                           
                                               [pom]
   [INFO] Maven Artifact                                                        
                                               [jar]
   [INFO] Maven Model                                                           
                                               [jar]
   [INFO] Maven Builder Support (deprecated)                                    
                                               [jar]
   [INFO] Maven Model Builder (deprecated)                                      
                                               [jar]
   [INFO] Maven 3 Plugin API                                                    
                                               [jar]
   [INFO] Maven Repository Metadata Model                                       
                                               [jar]
   [INFO] Maven Settings                                                        
                                               [jar]
   [INFO] Maven Toolchain Model                                                 
                                               [jar]
   [INFO] Maven Toolchain Builder (deprecated)                                  
                                               [jar]
   [INFO] Maven 4 Core                                                          
                                               [jar]
   [INFO] Maven Settings Builder (deprecated)                                   
                                               [jar]
   [INFO] Maven Artifact Resolver Provider (deprecated)                         
                                               [jar]
   [INFO] Maven Compat (deprecated)                                             
                                               [jar]
   [INFO] Maven 4 CLI                                                           
                                               [jar]
   [INFO] Maven Embedder (deprecated)                                           
                                               [jar]
   [INFO] Apache Maven Distribution                                             
                                               [pom]
   [INFO] Maven 4 Executor                                                      
                                               [jar]
   [INFO] 
   [INFO] ------------------------------------------------< 
org.apache.maven:maven >------------------------------------------------
   [INFO] Building Apache Maven 4.0.0-rc-3-SNAPSHOT                             
                                              [1/37]
   [INFO]   from pom.xml
   [INFO] ---------------------------------------------------------[ pom 
]----------------------------------------------------------
   [INFO] 
   [INFO] --- enforcer:3.5.0:enforce (enforce-bytecode-version) @ maven ---
   [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion 
passed
   [INFO] Rule 1: 
org.codehaus.mojo.extraenforcer.dependencies.EnforceBytecodeVersion passed
   [INFO] 
   [INFO] --- enforcer:3.5.0:enforce (enforce-maven-version) @ maven ---
   [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireMavenVersion 
passed
   [INFO] 
   [INFO] --- enforcer:3.5.0:enforce (enforce-java-version) @ maven ---
   [INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion 
passed
   [INFO] 
   [INFO] --- enforcer:3.5.0:enforce 
(ensure-no-sonatype-cipher-and-sec-dispatcher) @ maven ---
   [INFO] Rule 0: org.apache.maven.enforcer.rules.dependency.BannedDependencies 
passed
   [INFO] 
   [INFO] --- dependency:3.7.1:properties (prepare-for-mockito-agent) @ maven 
---
   [INFO] 
   [INFO] --- checkstyle:3.4.0:check (checkstyle-check) @ maven ---
   ^C[INFO] You have 0 Checkstyle violations.
   [INFO] 
   [INFO] --- spotless:2.43.0:check (default) @ maven ---
   [INFO] 
--------------------------------------------------------------------------------------------------------------------------
   [INFO] Reactor Summary for Apache Maven 4.0.0-rc-3-SNAPSHOT:
   [INFO] 
   [INFO] Apache Maven 
.........................................................................................
 FAILURE [  0.493 s]
   [INFO] Maven 4 API 
..........................................................................................
 SKIPPED
   [INFO] Maven 4 API :: Meta annotations 
...................................................................... SKIPPED
   [INFO] Maven 4 API :: Dependency Injection 
.................................................................. SKIPPED
   [INFO] Maven 4 API :: XML 
...................................................................................
 SKIPPED
   [INFO] Maven 4 API :: Model 
.................................................................................
 SKIPPED
   [INFO] Maven 4 API :: Plugin 
................................................................................
 SKIPPED
   [INFO] Maven 4 API :: Settings 
.............................................................................. 
SKIPPED
   [INFO] Maven 4 API :: Toolchain 
............................................................................. 
SKIPPED
   [INFO] Maven 4 API :: Repository Metadata 
................................................................... SKIPPED
   [INFO] Maven 4 API :: Core 
..................................................................................
 SKIPPED
   [INFO] Maven 4 API :: SPI 
...................................................................................
 SKIPPED
   [INFO] Maven 4 API :: CLI 
...................................................................................
 SKIPPED
   [INFO] Maven 4 Implementation Modules 
....................................................................... SKIPPED
   [INFO] Maven 4 Dependency Injection 
......................................................................... 
SKIPPED
   [INFO] Maven 4 XML Implementation 
........................................................................... 
SKIPPED
   [INFO] Maven 4 API Implementation 
........................................................................... 
SKIPPED
   [INFO] Maven 4 JLine integration 
............................................................................ 
SKIPPED
   [INFO] Maven 4 Logging 
......................................................................................
 SKIPPED
   [INFO] Maven Compatibility Modules 
.......................................................................... 
SKIPPED
   [INFO] Maven Artifact 
.......................................................................................
 SKIPPED
   [INFO] Maven Model 
..........................................................................................
 SKIPPED
   [INFO] Maven Builder Support (deprecated) 
................................................................... SKIPPED
   [INFO] Maven Model Builder (deprecated) 
..................................................................... SKIPPED
   [INFO] Maven 3 Plugin API 
...................................................................................
 SKIPPED
   [INFO] Maven Repository Metadata Model 
...................................................................... SKIPPED
   [INFO] Maven Settings 
.......................................................................................
 SKIPPED
   [INFO] Maven Toolchain Model 
................................................................................
 SKIPPED
   [INFO] Maven Toolchain Builder (deprecated) 
................................................................. SKIPPED
   [INFO] Maven 4 Core 
.........................................................................................
 SKIPPED
   [INFO] Maven Settings Builder (deprecated) 
.................................................................. SKIPPED
   [INFO] Maven Artifact Resolver Provider (deprecated) 
........................................................ SKIPPED
   [INFO] Maven Compat (deprecated) 
............................................................................ 
SKIPPED
   [INFO] Maven 4 CLI 
..........................................................................................
 SKIPPED
   [INFO] Maven Embedder (deprecated) 
.......................................................................... 
SKIPPED
   [INFO] Apache Maven Distribution 
............................................................................ 
SKIPPED
   [INFO] Maven 4 Executor 
.....................................................................................
 SKIPPED
   [INFO] 
--------------------------------------------------------------------------------------------------------------------------
   [INFO] BUILD FAILURE
   [INFO] 
--------------------------------------------------------------------------------------------------------------------------
   [INFO] Total time:  0.560 s
   [INFO] Finished at: 2025-02-24T12:40:07+01:00
   [INFO] 
--------------------------------------------------------------------------------------------------------------------------
   [INFO] Mimir session closed (LOCATED=0/0 TRANSFER=0/0 STORED=0/0)
   [ERROR] java.lang.InterruptedException
   [ERROR] 
   [ERROR] To see the full stack trace of the errors, re-run Maven with the 
'-e' switch
   [ERROR] Re-run Maven using the '-X' switch to enable verbose output
   maven mvnsh> 
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to