Package: kokos
KoKoSУтилита для удобного решения задач курса АКОС.Фидбек можно писать в issue, либо в телеграм@darkkeks.Inspired byDoomzD/caos-rebornpetuhovskiy/acosBigRedEye/cacosInstallationИз PyPipip3installkokosВозможные проблемыСкрипт не добавлен вPATH. При установке будет варнинг такого вида:WARNING: The script kks is installed in '/home/darkkeks/.local/bin' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.Чтобы добавить его вPATH, можно дописать подобную строку в.bashrc/.zshrc:PATH="/home/darkkeks/.local/bin":"$PATH"ОбновлениеkksupdateИз исходниковgitclonehttps://github.com/DarkKeks/kks.gitcdkks
pip3install.UsageПро парольДля использования не обязательна авторизация в ejudge.
Сборка, линтер, тестирование и генерация тестов будет работать без авторизации.Также, уkks authесть флаг--no-store-password, который сохранит локально только логин и id контеста, но не пароль.
Пароль будет запрашиваться каждый раз, когда сессия протухает.Без этого флага, пароль хранится вplaintextв файле~/.kks/config.ini.Глобальные опции и параметрыНастраиваемые параметры (данные для авторизации и глобальные опции) хранятся в файле~/.kks/config.iniAuthДанные для авторизации в EjudgeДоступные опции -login,contest,password(опционально)OptionsГлобальные опции, можно переопределять через переменные окруженияОпции:mdwidth(по умолчанию100) - максимальная ширина текста в условиях при конвертации в Markdownmax-kr- считать максимальные баллы для тестирующихся задач из КР (kks top --max). Результаты могут значительно отличаться от реальных баллов.deadline-warning-days- за сколько дней до дедлайна выделять контест в выводеkks deadlinesиkks status --todo(по умолчанию - 1 день)sort-todo-by-deadline(по умолчаниюTrue) - включить сортировку по дедлайнам вkks status --todoglobal-opt-out- отказаться от отправки статистики для глобального рейтингаsave-html-statements,save-md-statements(по умолчанию оба значенияtrue) - выбор формата сохранения условий при синхронизацииsave-attachments(по умолчаниюtrue) - сохранять приложенные к условиям файлыИмена переменных окружения, если они используются, должны быть в upper-case. Например, для переопределения опцииsave-html-statementsиспользуется переменная окруженияSAVE_HTML_STATEMENTSTLDRПочти у всех команд есть адекватный--help, там бывают полезные аргументы, не описанные ниже.# Create .kks-workspace in current directory to mark kks workspace rootkksinit# Auth in ejudgekksauth# Dont store password in plaintextkksauth--no-store-password# Parse tasks from ejudge and create directories with template solutionskkssync# Set max line width for statements (default 100)MDWIDTH=70kkssync# Sync tasks and (latest) submissionskkssync--code# Show tasks status and user standingskksstatus
kksstatussm01sm02-3
kkstop# Build and run solution in current directorycdsm01/1/
kksrun
kksrun--sample
kksrun--test10kksrun<input.txt# build without stdlibcdsm10/2
kksrun-Tnostd# build without stdlib (force 32-bit mode)kksrun-Tnostd32# Format solution using clang-formatkkslint# Generate tests/001.in - tests/100.in using gen.py# Generate tests/001.out - tests/100.out using solve.pykksgen--range1100# Generate test tests/123.{in,out}kksgen--test123# Only generate *.out files (don't overwrite *.in)# Useful if you entered tests manually and want to generate correct outputkksgen--range110--output-only# Generate tests [1; 50] using gen.sh and other_solve.py, overwriting existing testskksgen--generatorgen.sh--solutionother_solve.py--range150--force# Test solutionkkstest# Dont stop on errorkkstest--continue# Run solution on samplekkstest--sample# Run solution on tests [1, 10]kkstest--range110kkstest--test15-test16# Submit a solution (problem and solution are auto-detected)# There will be a confirmation before every submit, to avoid accidental submitskkssubmit# Manually specify problem and source filekkssubmit-psm02-3./code/main.c# Hide contest directory (move to .kks-contests)kkshidesm01
kkshide--all
kksunhidesm03kr01Файлы конфигурацииИспользуются, если нужно изменить флаги компилятора по умолчанию / добавить дополнительные варианты сборки (например, для дебага).Если в корневой директории воркспейса существует файлtargets.yaml, то все таргеты из него доступны в любой поддиректории (являются глобальными).
Еслиtargets.yamlсуществует в рабочей директории, то описания таргетов из него являются более приоритетными по сравнению с глобальными.Для решений, написанных на C++, таргеты влияют только на список файлов (параметрfiles)# Создать файл в рабочей директорииkksinit--config# Создать глобальный конфиг для существующего воркспейсаkksinit--config=global# Собрать и запустить решение с таргетом "debug"kksrun-TdebugПри запускеkks runилиkks testможно получить предупреждение следующего вида:/path/to/targets.yaml is outdated. You can run "kks init --config=update" if you want to update the default target manuallyЭто значит, что параметры сборки по умолчанию (без использования файлов конфигурации) были обновлены.
В таком случае стоит запуститьkks init --config=updateв директории с указанным файлом и вручную добавить необходимые изменения.
Если этого не cделать, могут появиться проблемы при компиляции решений для (некоторых) новых задач.Tab CompletionЧтобы аргументыkksподсказывались при нажатииTABв командной строке, если вы пользуетесь...bash (если вы не знаете, что это, скорее всего у вас bash)... добавьтеeval "$(_KKS_COMPLETE=bash_source kks)"в конец файла~/.bashrczsh... добавьтеeval "$(_KKS_COMPLETE=zsh_source kks)"в~/.zshrcfish... выполните_KKS_COMPLETE=fish_source kks > ~/.config/fish/completions/kks.fishили добавьте_KKS_COMPLETE=fish_source kks | sourceв~/.config/fish/config.fishПодключение к другому серверуНапример, чтобы скачать свои прошлогодние посылки (при условии, что сервер` ещё работает).exportKKS_CUSTOM_URL=https://caos-alt.somedomain.ru

kkssync--code=all# ...