Требования к CLI для курсовой работы весеннего семестра

Для возможности проведения защиты курсовой работы весеннего необходимо пройти предварительную проверку на moodle: ссылка на модуль

Базовые сведения про cli можно прочитать здесь: Требования к курсовым (весенний семестр)

Если сборка курсовой работы реализована через системы автоматизации, то программа с курсовой работы должна называться cw!

Оси координат и начало отсчёта

Началом оси координат является верхний левый угол. Ось X расположена по горизонтали и растёт вправо. Ось Y расположена по вертикали и растёт вниз

Если в задании используется область, то вторая координата указывает на границу, которая не включается в область. Например, если заданы координаты 0.0 и 100.200, то рабочая область будет размером 100×200 (0 ≤ x < 100, 0 ≤ y < 200). Областью считается часть изображения, над которой необходимо провести какие-то действия, рисование линий и прямоугольников под определение области не попадает

Обязательные флаги

–input, -i: Задаёт имя входного изображения. При необходимости (если требуется по заданию), флаг может принимать несколько аргументов. Если флаг отсутствует, то предполагается, что имя входного изображения передаётся последним аргументом

–output, -o: Задаёт имя выходного изображения. При необходимости (если требуется по заданию), флаг может принимать несколько аргументов

–info: Печатает информацию об изображении и завершает работу

–help, -h: Выводит справку. ВАЖНО: первой строкой при запуске программы нужно выводить информацию о варианте курсовой работе и об авторе программы в строго определенном формате: Course work for option <V>, created by <Name> <Surname>. Где V – вариант курсовой и Имя и Фамилия, как указано в репозитории группы. Данное предложение должно быть строго первым предложением в выводе программы и является отдельной строкой (заканчивается знаком ‘\n’). Например: Course work for option 3.2, created by Ivan Ivanov.

Обработка ошибок

В случае ошибки и невозможности выполнить функцию по какой-либо причине, нужно вывести строку с ошибкой и завершить работу программы с кодом возврата из диапазона: [40-49]

Обработка ошибок при некорректных аргументах у флагов:

Если флаг отвечает за цвет и передано некорректное значение (например 500.0.10), то необходимо остановить выполнение и завершить работу с ошибкой

Если флаг отвечает за координаты для рисования (например, для рисования линии) и координаты находится вне границ изображения, то необходимо продолжить обработку так, как если бы можно было выходить за рамки изображения. Пример: допустим на вход подано изображение размером 100×100 пикселей, начало отрезка 0.0, а конец отрезка 200.200. В таком случае должна быть нарисована диагональ. Если же начало отрезка было 150.130, то на изображении ничего не должно быть нарисовано, так как линия проходить за границами обрабатываемого изображения

Если флаг отвечает за координаты для области и координаты находится вне границ изображения, то необходимо продолжить обработку до максимально/минимально возможного значения координат

Если были введены аргументы для флага, который не принимает аргументов или введены лишние аргументы, то

Завершить работу с ошибкой

Вывести пользователю сообщение, что данные аргументы будут проигнорированы. Например, Аргументы 'best_arg' и 'another_best_arg' проигнорирован, так как флаг '–info' не принимает аргументов

Если введён аргумент, который не соответствует ожидаемому шаблону, то необходимо завершить работу с ошибкой

Если введён некорректный флаг или не хватает флагов для задания параметров, то необходимо завершить работу с ошибкой

Если имена входного и выходного файлов совпадают, то необходимо завершить работу с ошибкой

Если подается более двух действий (например, рисовать круг и квадрат), то необходимо завершить работу с ошибкой