Cross-platform flexible autocomplete library for your cli applications.
Cross-platform flexible autocomplete library for your CLI applications
MacOS
, Linux
, Windows
single header
version of the librarystatic
and dynamic
versions of the librarygit
may follow: config
, init
, clone
config
may follow: --global
, user.name
, user.email
--global
may follow: user.name
, user.email
user.name
may follow optional value: "[name]"
...
git
config
--global
user.name
"[name]"
user.email
"[email]"
user.name
"[name]"
user.email
"[email]"
init
[repository_name]
clone
[url]
More complex example with:
color settings
,handling optional values
andline title configuration
you will find here
#include <stdio.h>
#include "../include/autocomplete.h"
int main() {
// Parsing the configuration file
Tree* rules = tree_create("../example.config");
fprintf(
stderr,
"Attention! Please run the executable file only\n"
" through the command line!\n\n"
"- To switch the prompts press UP or DOWN arrow.\n"
"- To move cursor press LEFT or RIGHT arrow.\n"
"- To edit input press DELETE or BACKSPACE key.\n"
"- To apply current prompt press TAB key.\n\n"
);
// Listening process
while (1) {
// Get user input
char* str = input(rules);
printf("\n%s\n", str);
// Stop listening if user need
if (strcmp(str, "") == 0) {
free(str);
break;
}
// Free user input string
free(str);
}
// Free rules
tree_free(rules);
return 0;
}
git clone https://github.com/DieTime/CLI-AutoComplete.git
cd CLI-AutoComplete/
cmake -DCMAKE_BUILD_TYPE=Release -S . -B ./cmake-build
cmake --build ./cmake-build --config Release
----------------------- RUN EXAMPLE ---------------------
# Unix
cd builds/examples/unix/Release
./custom_example
# MinGW
cd builds/examples/mingw/Release
custom_example.exe
# MSVC
cd builds/examples/msvc/Release
custom_example.exe
gcc -o <executable> <paths/of/source/files> -L<path/to/shared/lib/folder> -I<path/to/include/folder> -lcliac -Wl,-rpath,<path/to/shared/lib/folder>
cl /EHsc <paths/of/source/files> /Fe<executable>.exe /I<path/to/include/folder> /link <path/to/shared/lib/file(.lib)>
gcc -o <executable>.exe <paths/of/source/files> -L<path/to/shared/lib/folder> -I<path/to/include/folder> -lcliac
gcc -o <executable> <paths/of/source/files> -L<path/to/static/lib/folder> -I<path/to/include/folder> -lcliac
cl /EHsc <paths/of/source/files> /Fe<executable>.exe /I<path/to/include/folder> /link <path/to/static/lib/file(.lib)>
gcc -o <executable>.exe <paths/of/source/files> -L<path/to/static/lib/folder> -I<path/to/include/folder> -lcliac
A detailed description of the changes can be found in CHANGELOG.md
You can support me so that there will be more good open source projects in the future