Документация для проекта taker
This project is maintained by taker-project
take run [ -t <time-limit> ] [ -m <memory-limit> ] [ -i <input-file> ] [ -o <output-file> ] <file> <parameters...>
Запуск <file>
с параметрами <parameters...>
. <time-limit>
указывается в миллисекундах, <memory-limit>
— в килобайтах. Умеет запускать исполняемые файлы, class
-файлы java, py
-файлы python и так далее.
take compile <file> [ -t <time-limit> ] [ -m <memory-limit> ] [ -I <include-paths> ] [ -l <language> ]
Компиляция <file>
. <time-limit>
указывается в миллисекундах, <memory-limit>
— в килобайтах. <include-paths>
— пути до подключаемых файлов, разделяются символом ;
. <language>
— язык, если не указан, выбирается автоматически.
Возможные языки: pas.fpc
, pas.objfpc
, pas.dpr
, c.gcc
, c.gcc11
, cpp.g++
, cpp.g++11
, cpp.g++14
, cpp.g++17
, java.8
, py.2
, py.3
.
take create <dir-name> [ -i ]
Создает новую задачу в папке <dir-name>
. Ключ -i
предполагает создание не минимальной задачи, а с интерактивной настройкой некоторых параметров.
take option --list
take option --set <name> <value>
--list
показывает все опции--set
устанавливает опцию <name>
в <value>
.Поддерживаемые опции смотреть в main-config.md
.
take const --list
take const --set <name>:<type>=<value>
take const --unset <name>
Работает аналогично take option
, но служит для установки ограничений/прочих универсальных констант. <type>
может быть bool
, int
, float
, char
, string
, bool[]
, int[]
, float[]
, char[]
, string[]
. Как задавать значения, смотрите configs.md.
Ключ --unset
удаляет константу.
take gen --add <filename> <parameters...>
take gen --del <filename>
take gen --add-param <filename> <parameters...>
take gen --del-param <filename> <parameters...>
take gen --build [<filenames...>] [ -j <process-count> ]
take gen --clean
--add
создает генератор с именем файла <filename>
и параметрами <parameters...>
Параметры указываются по типу <name>:<type>[=<value>]
(<type>
может быть bool
, int
, float
, char
, string
, bool[]
, int[]
, float[]
, char[]
, string[]
). Если задано [=<value>]
, то оно становится значением по умолчанию для этого параметра.--del
удаляет генератор.--add-param
добавляет к генератору параметры <parameters...>
, разделенные пробелом. Параметры также указываются по типу <name>:<type>[=<value>]
.--del-param
удаляет параметры генератора (<parameters...>
— список имен удаляемых параметров).--build
компилирует генераторы (если <filename...>
не задан, компилирует все генераторы).--clean
чистит папку с генераторами от лишнего.take checker --new
take checker --default <checker-name>
take checker --test
take checker --build
take checker --clean
--new
создает новый чекер.--default
создает стандартный чекер (из тех, которые лежат в примерах testlib).--test
запускает тесты для чекера.--build
собирает чекер.--clean
чистит take validator --new
take validator --del
take validator --test
take validator --build
take validator --clean
--new
создает новый валидатор.--del
убирает валидатор.--test
запускает тесты для валидатора.--build
собирает валидатор.--clean
чистит папку с валидаторами от лишнего.take testsets --add <testset>
take testsets --del <testset>
take testsets --status [<testsets...>]
take testsets --enable [<testsets...>]
take testsets --disable [<testsets...>]
take testsets --list
--add
создает новый тестсет.--del
удаляет тестсет.--status
показывает статус тестсетов (будут ли эти тестсеты использоваться при сборке пакетов). Если тестсетов не указано, показывает статус всех.--enable
включает тестсеты для сборки пакетов. Если тестсетов не указано, будут включены все.--disable
действует похоже на --enable
, но выключает.--list
показывает все доступные тестсеты.take tests --gen <tests> [ -j <process-count> ] [-v <level>]
take tests --degen <tests>
take tests --clean
<level>
обозначает уровень проверок при генерации тестов (если не задано, то уровень равен 1
):
<tests>
задаются в виде набора аргументов, разделенных пробелом. Каждый аргумент задается одним из двух способов
testset:testnums
testset
testset
обозначает имя тестсета, testnums
— номера тестов в формате вроде 1,2,3..15,18,24..26,29
. Запись в форме без testnums
обозначает генерацию всех тестов. Запись testset:
не генерит ничего (надо ли это кому-нибудь?)
--gen
генерирует заданные тесты (если тесты не заданы, то генерирует все тесты включенных тестсетов).--degen
чистит каталог от заданных тестов (если тесты не заданы, удаляет все тесты включенных тестсетов).--clean
выполняет полную очистку каталога с тестами от лишнего.take solution --add <filename> <tags> [ -l <language> ]
take solution --del <filename>
take solution --get-tags <filename>
take solution --set-tags <filename> <tags>
take solution --run <filenames...> [ -t <tests> ]
<tags>
— какие вердикты должно получать решение (через запятую). Например, WA,RE,AC
(поддерживаются AC
, WA
, PE
, TL
, ML
, RE
). Либо MAIN
(без никаких других тегов), если это авторское решение.
--add
добавляет решение с тэгами <tags>
. -l
позволяет указать язык, иначе он будет выбран автоматически. Возможные языки смотрите в описании make compile
.--del
удаляет решение.--get-tags
получает тэги решения.--set-tags
устанавливает тэги для решения.--run
запускает решения <filenames...>
на тестах <tests>
. <tests>
задаются так же, как описано выше; ключ -t
разделяет решения и тесты. Если ключа -t
нет, тестируется на всех тестах включенных тестсетов. Если есть ключ -t
, а тестов нет, то тестить ни на каких тестах (надо ли это кому нибудь?)take statement --add <lang>
take statement --del <lang>
take statement --build [<lang>] [ -j <process-count> ]
take statement --clean
--add
добавляет условие на языке <lang>
.--del
удаляет условие на языке <lang>
.--build
собирает условие на языке <lang>
(если не указано, то на всех).--clean
чистит каталог от файлов сборки.<lang>
— (пока что) один из en
, ru
take stress <filename> [ -j <process-count> ]
Запускает стресс-тест с названием файла конфигурации <filename>
.
take refresh
Обновляет makefil
‘ы и прочее из конфигов.
take verify [ -j <process-count> ]
Верификация задачи (прогон всех решений на соответствие тегам, валидаторов, чекеров по авторским тестам). По сути, аналогично take build [ -j <process-count> ] -v
.
take build [ -j <process-count> ] [ -v ]
Сборка задачи полностью. Ключ -v
запускает дополнительно верификацию.
take export [ --tester | --polygon ]
Экспорт пакета с задачей. --tester
— для Тестера, --polygon
— в пакет, похожий на пакет Polygon.
take clean
Очистка каталога задачи от лишнего.
take !internal <command>
Внутренние команды, предназначенные для вызова внутри makefile
‘ов. Возможно, стоит защититься от непосредственного запуска этих команд (например, требовать установку какой-либо переменной среды, которую мы будем ставить при запуске make
). Поддерживаемые команды:
make-constraints
— генерирует файл constraints.hpp
.
run-script <testset>
— запускает script.py
для заданного тестсета.
do-test <testset> <test> [ -v <level> ]
— запускает генерацию теста <test>
из тестсета <testset>
. Про <level>
смотрите выше.
exec -<flags> <command>
— выполнить любую другую команду taker
, возможно, без проверки на целостность и обновления makefil
‘ов. <flags>
настраивают это:
i
— не проверять на целостность (по умолчанию)I
— проверять на целостностьr
— не обновлять файлы после выполнения (по умолчанию)R
— обновлять файлы после выполнения<command>
может быть пустым, тогда ничего не выполняется, кроме, возможно, проверки целостности и обновления файлов.