Wie implementiert man Logik zur Verarbeitung dynamischer Befehlszeilenargumente mit Spring Shell?Java

Java-Forum
Anonymous
 Wie implementiert man Logik zur Verarbeitung dynamischer Befehlszeilenargumente mit Spring Shell?

Post by Anonymous »

Ich arbeite an einer Spring Shell-basierten Anwendung, in der ich dynamische Befehlszeilenargumente verarbeiten muss. Ich habe Logik für ein bestimmtes Format implementiert, es treten jedoch Probleme auf, wenn sich die Reihenfolge und die Trennzeichen der Optionen ändern.
  • Der Befehl funktioniert ordnungsgemäß für dieses Format:

Code: Select all

./co2-calculator --start Hamburg --end Berlin --transportation-method diesel-car-medium

Code: Select all

Output:
Start city: Hamburg
End city: Berlin
Transportation method: diesel-car-medium
  • Aber wenn ich die folgenden Befehle mit unterschiedlichen Argumentformaten oder -reihenfolgen ausprobiere, erhalte ich Fehlermeldungen:

Code: Select all

./co2-calculator --start "Hamburg" --end "Berlin" --transportation-method=dieselcar-medium

Code: Select all

Error:

Unrecognised option '--transportation-method=dieselcar-medium'
Missing mandatory option --transportation-method, Transportation method.
Was ich versucht habe:

Code: Select all

@ShellComponent
public class HelloCommand {
@ShellMethod("Calculate CO2 emissions for the trip.")
public String calculateCO2(
@ShellOption(value = "--start", help = "Start city") String start,
@ShellOption(value = "--end", help = "End city") String end,
@ShellOption(value = "--transportation-method", help = "Transportation method") String transportationMethod) {

System.out.println("Start city: " + start);
System.out.println("End city: " + end);
System.out.println("Transportation method: " + transportationMethod);
}
}
Dies funktioniert gut für den ersten Befehl, aber nicht für den zweiten aufgrund von Unterschieden im Optionsformat und in der Reihenfolge.
Was ich brauche:
Ich muss eine Logik implementieren, die:
jede Reihenfolge von Argumenten verarbeiten kann.
Akzeptiere sowohl Leerzeichen als auch Gleichheitszeichen (=) für die Zuweisung von Werten.
Verarbeiten Sie alle drei Befehlszeilenargumente ordnungsgemäß, unabhängig von der Reihenfolge oder den Trennzeichen verwendet.
Fragen:
  • Wie kann ich dafür sorgen, dass die Spring Shell-Anwendung Optionen wie --start "Hamburg" oder --start=Hamburg (mit und ohne Leerzeichen) verarbeitet?
  • Welche Änderungen muss ich an den @ShellOption-Annotationen oder anderen Teilen der Logik vornehmen, um beides ordnungsgemäß zu verarbeiten --transportation-method=dieselcar-medium und --transportation-method Diesel-Car-Medium-Formate?
  • Gibt es Best Practices oder bekannte Lösungen für die Verarbeitung dynamischer Befehlszeilenoptionen in Spring Shell, die ich möglicherweise übersehen habe?
Ich würde mich über jede Hilfe oder Vorschläge zur Behebung dieses Problems freuen. Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post