Недокументированный getopt в Smalltalk - PullRequest
1 голос
/ 06 августа 2011

Я пишу приложение для командной строки, которое шифрует пароли и расшифровывает хэши паролей. Документы для Getopt не содержат примеров, поэтому я понятия не имею, как использовать класс Getopt. Несколько подсказок разбросаны в журналах списка рассылки .

В частности, я не знаю формат with: pattern, строки, определяющей аргументы CLI, и являются ли значения обязательными, необязательными или опущенными.

ios7crypt.st:

"exec" "gst" "-f" "$0" "$0" "$@"
"exit"

| args password hash |

"Drop the program name."
"The shebang joins the arguments; we must split them."
args := (Smalltalk getArgv: 2) substrings: $ .

args do: [ :arg | Transcript show: 'Raw arg: ', arg; cr. ].

Getopt parse: args with: '-e: -d: -t' do: [ :opt :arg |
    Transcript show: 'Opt: ', (opt asString), ' Arg: ', arg; cr.

    "..."
].

Пример выполнения:

$ ./ios7crypt.st -e monkey
Raw arg: -e
Raw arg: monkey
Opt: e Arg: monkey

Ранее оба сценария -e и monkey были переданы в сценарий, но do: Гетопта тихо отбросил -e, поэтому результат выглядел следующим образом:

$ ./ios7crypt.st -e monkey
Raw arg: -e
Raw arg: monkey
Opt:  Arg: monkey

1 Ответ

1 голос
/ 24 августа 2011

Я предлагаю вам использовать #printString при отладке.Это даст ориентированное на программиста представление (в отличие от #displayString).

Кстати, вы можете использовать «$ @» в вызове shebang, чтобы аргументы не объединялись.

...