Files
BarotraumaLuaProjects/atlas_os/docs/07-command-set.md

2.5 KiB
Raw Blame History

07 — Набор команд (Command Set)

1. Базовые правила

  • Команды регистрируются в CMC через register(name, func, desc).
  • Аргументы — таблица строк после парсинга gmatch("%S+").
  • Вывод — через print(text) (цвет текущий) или printerror(text).
  • Ошибки возвращаются как error("msg") — перехватываются pcall.

2. Обязательные команды (минимум v2.0)

ls [path]

  • Выводит список имён в cwd (или path).
  • Без -l — только имена, по одному на строку.

ls -l [path]

  • Длинный формат: type mode uid gid size mtime name.
  • Пример: d rwxr-xr-x 0 0 4096 1712345678 bin

ls -la [path]

  • То же, что -l, плюс скрытые файлы (начинающиеся с .).

cat path

  • Выводит содержимое файла (распакованное).
  • При ошибке (нет прав, нет файла) — printerror.

cd [path]

  • Меняет cwd сессии.
  • MMC проверяет право x на каталоге.
  • cd без аргумента → $HOME пользователя.

3. Выходной формат ls -l

type perms uid gid size mtime name
f rw-r--r-- 100 10 1234 1712345678 readme.txt
d rwxr-xr-x 0 0 0 1712345678 bin

4. Расширяемость

  • Новые команды добавляются регистрацией в commands.
  • Имя — одно слово, без пробелов.
  • Описание — краткая строка для help.
  • Примеры: login, su, logout, echo, clear, color, help, status.

5. Примеры ошибок

Ситуация Сообщение
Нет файла cat: /foo: No such file or directory
Нет прав ls: /secret: Permission denied
Неизвестная команда Error: Unknown command. Type 'help' for list.

6. Совместимость с прототипом

Текущий AtlasOS.lua уже реализует help, echo, clear, color, status. Новые команды (ls*, cat, cd) добавляются по той же схеме:

register_command("ls", function(args) ... end, "List directory")

Конец комплекта документации v2.0