KoKoS helper tool
Project description
KoKoS
Утилита для удобного решения задач курса АКОС.
Фидбек можно писать в issue, либо в телеграм @darkkeks.
Inspired by
Installation
Из PyPi
pip3 install kokos
Возможные проблемы
-
Скрипт не добавлен в
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"
Обновление
kks update
Из исходников
git clone https://github.com/DarkKeks/kks.git
cd kks
pip3 install .
Usage
Про пароль
Для использования не обязательна авторизация в ejudge. Сборка, линтер, тестирование и генерация тестов будет работать без авторизации.
Также, у kks auth
есть флаг --no-store-password
, который сохранит локально только логин и id контеста, но не пароль.
Пароль будет запрашиваться каждый раз, когда сессия протухает.
Без этого флага, пароль хранится в plaintext в файле ~/.kks/config.ini
.
Глобальные опции и параметры
Настраиваемые параметры (данные для авторизации и глобальные опции) хранятся в файле ~/.kks/config.ini
Auth
Данные для авторизации в 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 --todo
global-opt-out
- отказаться от отправки статистики для глобального рейтингаsave-html-statements
,save-md-statements
(по умолчанию оба значенияtrue
) - выбор формата сохранения условий при синхронизацииsave-attachments
(по умолчаниюtrue
) - сохранять приложенные к условиям файлыgenerate-cmakelists
(по умолчаниюfalse
) - генерировать CMakeLists.txt
Имена переменных окружения, если они используются, должны быть в upper-case. Например, для переопределения опции save-html-statements
используется переменная окружения SAVE_HTML_STATEMENTS
TLDR
Почти у всех команд есть адекватный --help
, там бывают полезные аргументы, не описанные ниже.
# Create .kks-workspace in current directory to mark kks workspace root
kks init
# Auth in ejudge
kks auth
# Dont store password in plaintext
kks auth --no-store-password
# Parse tasks from ejudge and create directories with template solutions
kks sync
# Set max line width for statements (default 100)
MDWIDTH=70 kks sync
# Sync tasks and (latest) submissions
kks sync --code
# Show tasks status and user standings
kks status
kks status sm01 sm02-3
kks top
# Build and run solution in current directory
cd sm01/1/
kks run
kks run --sample
kks run --test 10
kks run < input.txt
# build without stdlib
cd sm10/2
kks run -T nostd
# build without stdlib (force 32-bit mode)
kks run -T nostd32
# Format solution using clang-format
kks lint
# Generate tests/001.in - tests/100.in using gen.py
# Generate tests/001.out - tests/100.out using solve.py
kks gen --range 1 100
# Generate test tests/123.{in,out}
kks gen --test 123
# Only generate *.out files (don't overwrite *.in)
# Useful if you entered tests manually and want to generate correct output
kks gen --range 1 10 --output-only
# Generate tests [1; 50] using gen.sh and other_solve.py, overwriting existing tests
kks gen --generator gen.sh --solution other_solve.py --range 1 50 --force
# Test solution
kks test
# Dont stop on error
kks test --continue
# Run solution on sample
kks test --sample
# Run solution on tests [1, 10]
kks test --range 1 10
kks test --test 15 -test 16
# Submit a solution (problem and solution are auto-detected)
# There will be a confirmation before every submit, to avoid accidental submits
kks submit
# Manually specify problem and source file
kks submit -p sm02-3 ./code/main.c
# Hide contest directory (move to .kks-contests)
kks hide sm01
kks hide --all
kks unhide sm03 kr01
Файлы конфигурации
Используются, если нужно изменить флаги компилятора по умолчанию / добавить дополнительные варианты сборки (например, для дебага).
Если в корневой директории воркспейса существует файл targets.yaml
, то все таргеты из него доступны в любой поддиректории (являются глобальными).
Если targets.yaml
существует в рабочей директории, то описания таргетов из него являются более приоритетными по сравнению с глобальными.
Для решений, написанных на C++, таргеты влияют только на список файлов (параметр files
)
# Создать файл в рабочей директории
kks init --config
# Создать глобальный конфиг для существующего воркспейса
kks init --config=global
# Собрать и запустить решение с таргетом "debug"
kks run -T debug
При запуске 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)"
в конец файла ~/.bashrc
zsh
... добавьте eval "$(_KKS_COMPLETE=zsh_source kks)"
в ~/.zshrc
fish
... выполните _KKS_COMPLETE=fish_source kks > ~/.config/fish/completions/kks.fish
или добавьте _KKS_COMPLETE=fish_source kks | source
в ~/.config/fish/config.fish
Подключение к другому серверу
Например, чтобы скачать свои прошлогодние посылки (при условии, что сервер` ещё работает).
export KKS_CUSTOM_URL=https://caos-alt.somedomain.ru
kks sync --code=all
# ...
Генерация CMakeLists.txt
Для генерации CMakeLists.txt
необходимо добавить флаг cmakelists = true
в раздел [Options]
файла конфигурации ~/.kks/config.ini
:
[Options]
generate-cmakelists = true
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file kokos-1.16.32.tar.gz
.
File metadata
- Download URL: kokos-1.16.32.tar.gz
- Upload date:
- Size: 67.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e49e0fd63a9f294cccd2448cf1ae2f1849e28460aa4eb7ee1a98770dfa09bbc0 |
|
MD5 | 4769efea091011b9b2037a30d7224899 |
|
BLAKE2b-256 | f3600d4798ac39bb3dfd9f61382c348b15becb37f5f0c3ad1ec8dde79a47dc7d |