Skip to content

Флаг CLI для выполнения кода из строки (-e / -eval) #1723

Description

@yukon39

Описание

oscript умеет запускать только файл:

oscript.exe [options] <script_path> [script_arguments...]

Нет аналога python -c, node -e, php -r, ruby -e: выполнить фрагмент кода, переданный в командной строке, без временного .os.

Сейчас для одноразового скрипта приходится писать файл, запускать его и удалять.

Предложение

Добавить режим запуска кода из строки, например:

oscript -e "Сообщить(1 + 2)"
oscript -encoding=utf-8 -e "Сообщить(""привет"")"
oscript -e "Сообщить(АргументыКоманднойСтроки[0])" foo

Предпочтительные имена флагов: -e и длинная форма -eval (стиль CLI как у -v / -version; не --eval). Альтернативы -c / -command менее удачны из‑за соседства с -check, -compile, -cgi, -codestat.

Важна семантика:

  1. Аргумент флага — исходный текст модуля (как содержимое .os).
  2. Перед -e можно указать -encoding (как для файла). -codestat / -measure / -check / -debug для inline не требуются.
  3. Аргументы после кода попадают в АргументыКоманднойСтроки.
  4. #Использовать — как в обычном скрипте (поиск библиотек от cwd).
  5. Ошибки компиляции/исполнения — как у обычного строкового модуля (номер строки внутри переданного текста).

Зачем

  • однострочники в CI и shell;
  • вызов из агентов/IDE без записи на диск;
  • быстрая проверка API движка (Новый РегулярноеВыражение(...) и т.п.).

Обходной путь сейчас

oscript path/to/temp.os

Для коротких проверок это лишний шаг и лишний артефакт.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions