scmdp

Форк
0

год назад
год назад
год назад
год назад
3 месяца назад
README.md

scmdp - simplest command-line parser

Кросс-платформенный парсер с простым интерфейсом на чистом "Си"

Особенности

  • Легкодоступные и легкоредактируемые сообщения об ошибках
  • Обязательные, опциональные и опциональные со значением аргументы
  • Простое добавление новых аргументов в программу
  • Автосборка help-сообщений
  • Основана на кросс-платформенных стандартных библиотеках
  • Автоматическое освобождение памяти

Быстрое начало

1. Добавьте библиотеку в свой проект

Библиотека scmdp содержит лишь два файла: scmdp.h в качестве интерфейса и scmdp.с с реализацией.
Ничего не нужно прекомпилировать или собирать, просто добавьте их в ваш исходный код!

Все готово для построения собственного интерфейса командной строки!

2. Создайте рабочее пространство

Вначале создайте рабочее пространство. Оно будет хранить информацию о всех ваших аргументах.

ScmdpWorkspace AddWorkspace(char *syntaxHelp, char *description)
Параметры и примеры

syntaxHelp - Строковый литерал с примером синтаксиса. Оно будет вылезать, если количество введенных аргументов недостаточно или слишком большое. description - Строковый литерал с кратким описанием того, что делает ваша программа.

ScmdpWorkspace workspace = AddWorkspace("app [-opt] arg1 arg2", "Test command-line application!")

3. Начните следом добавлять аргументы

После добавления пространства вы можете спокойно добавлять к нему новые аргументы! Можно начать с добавления help-аргумента, он задается отдельно!

void AddHelpArg(ScmdpWorkspace *workspace, char *longKey, char *shortKey)
Параметры и примеры

workspace - Указатель на созданное рабочее пространство
longKey - Длинный ключ для вызова помощи shortKey - Короткий ключ вызова помощи

AddHelpArg(&workspace, "--help", "-h");

Теперь создадим обязательные (неопциональные) аргументы!

void AddNonOptArg(ScmdpWorkspace *workspace, char *key, char *help, char **valPlace)
Параметры и примеры

workspace - Указатель на рабочее пространство key - Название обязательного аргумента для помощи help - Help-сообщение для данного аргумента
valPlace - Указатель на переменную, куда скидывать результат (он скидывается в виде строкового литерала)

char *arg1;
AddNonOptArg(&workspace, "ARG1", "Necessary argument 1", **arg1);

Теперь, если вам необходимо, добавим опциональные аргументы Они могут быть как со значением, так и без значения. По сути, аргументы без значения - это те же аргументы со значением, которое ограничивается True и False

void AddOptArg(ScmdpWorkspace *workspace, char *longKey, char *shortKey, char *help, char *valName, char **valPlace);
Параметры и примеры

workspace - Указатель на рабочее пространство longKey - Длинный ключ вызова аргумента shortKey - Короткий ключ вызова аргумента help - Строковый литерал для help-сообщения аргумента valName - Строковый литерал для название значения. Используйте "" для задания аргумента без значения.
valPlace - Указатель на переменную для сброса результата

char *optArgWithValue;
char *optArgWithoutValue;
/* Со значением */
AddOptArg(&workspace, "--option1", "-op1", "Optional argument 1 with value", "VALUE", &optArgWithValue);
/* Без значения */
AddOptArg(&workspace, "--option2", "-op2", "Optional argument 2 without value", "", &optArgWithoutValue);

4. Распарсите ваши аргументы

Для парсинга всех вызванных аргументов используется функция:

bool ParseArgs(&workspace, argc, argv);
Параметры и примеры

workspace - Указатель на рабочее пространство argc - То же что и argc в main(int argc, char* argv[])
argv - То же что и argv[] в int main(int argc, char* argv[])

Функция возвращает True в случае успешного парсинга Или False в случае ошибки

/* Если парсинг неудачный, очищаем память и выходим из программы */
if (!ParseArgs(&workspace, argc, argv)) return 0;

5. Profit! :)

Примеры

Папка Examples содержит два примера использования scmdp. Хоть они довольно примитивны, но отлично показывают доступный функционал.

Абстрактный пример

Демонстрирует использование опциональных и неопциональных аргументов со значением. Введенные значения отображаются в виде строк в консоли.

Калькулятор

Примитивный калькулятор, позволяющий совершать простые операции (*, /, +, -) с целыми числами.
Результат операции выводится в консоль

Как их запустить?

(UNIX) Компиляция напрямую через GCC

Убедитесь, что компилятор gcc указан в PATH. Затем откройте Терминал в папке с исходным кодом примера /src

gcc *.c -I ../inc -o app
./app

Готово! :)


(WINDOWS) Компиляция напрямую через MSVC (cl.exe)

Откройте Developer command prompt и введите команды ниже друг за другом

cd "путь к папке с примером. пример: C:\Users\User\Desktop\scmdp\examples\abstract\src"
cl *.c /I ../inc /Feapp.exe
app

Готово! :)


Кросс-платформенная сборка через CMake

Откройте Терминал в корневой папке примера, который хотите собрать Затем просто введите команды:

mkdir build
cd ./build
cmake ../
cmake --build ./
./app (или без ./ на WINDOWS)

Готово! :)


Описание

Простой парсер аргументов командной строки на чистом C

Языки

C

Сообщить о нарушении

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.