Как реализовать логику для обработки динамических аргументов командной строки с помощью Spring Shell?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как реализовать логику для обработки динамических аргументов командной строки с помощью Spring Shell?

Сообщение Anonymous »

Я работаю над приложением на основе Spring Shell, в котором мне нужно обрабатывать динамические аргументы командной строки. Я реализовал логику для определенного формата, но сталкиваюсь с проблемами при изменении порядка и разделителей параметров.
  • Команда работает правильно для этого формата:

Код: Выделить всё

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

Код: Выделить всё

Output:
Start city: Hamburg
End city: Berlin
Transportation method: diesel-car-medium
  • Но когда я пытаюсь выполнить следующие команды с разными форматами или порядком аргументов, я получаю ошибки:

Код: Выделить всё

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

Код: Выделить всё

Error:

Unrecognised option '--transportation-method=dieselcar-medium'
Missing mandatory option --transportation-method, Transportation method.
Что я пробовал:

Код: Выделить всё

@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);
}
}
Это отлично работает для первой команды, но не для второй из-за различий в формате и порядке параметров.
Что мне нужно:
Мне нужно реализовать логику, которая может:
обрабатывать любой порядок аргументов.
Принимать как пробел, так и знаки равенства (=) для присвоения значений.
Правильно обрабатывать все три аргумента командной строки независимо от порядка или разделителей. используется.
Вопросы:
  • Как я могу заставить приложение Spring Shell обрабатывать такие параметры, как --start "Hamburg" или --start=Hamburg (с пробелами и без них)?
  • Какие изменения мне нужно внести в аннотации @ShellOption или любую другую часть логики, чтобы правильно обрабатывать оба варианта? Форматы --transportation-method=dieselcar-medium и --transportation-method Diesel-car-medium?
  • Существуют ли какие-либо передовые методы или известные решения для обработки динамических параметров командной строки в Spring Shell, которые я мог упустить из виду?
Я был бы признателен за любую помощь или предложения о том, как решить эту проблему. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/795 ... spring-she
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»