Update readme
This commit is contained in:
parent
649ea4e940
commit
c5d5f06063
53
README.md
53
README.md
|
@ -3,7 +3,10 @@
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
- CMake (tested on 3.17)
|
- CMake (tested on 3.17)
|
||||||
- C99 compiler
|
- C99 compiler (ideally clang or gcc, should work with anything that supports these though)
|
||||||
|
- corelibs libraries (https://git.redxen.eu/caskd/corelibs)
|
||||||
|
+ llist (linked list library)
|
||||||
|
+ stringext (string.h extensions/wrappers)
|
||||||
|
|
||||||
## Building
|
## Building
|
||||||
|
|
||||||
|
@ -11,15 +14,14 @@ First, create the required build files (usually the Makefile)
|
||||||
```sh
|
```sh
|
||||||
cmake -B build/ -DCMAKE_BUILD_TYPE=Release .
|
cmake -B build/ -DCMAKE_BUILD_TYPE=Release .
|
||||||
```
|
```
|
||||||
| Option | Description | Type | Default | Supported since |
|
| Option | Description | Type | Status | Default |
|
||||||
|:------------------:|:----------------------------------------------------------------------:|:--------:|:-------:|:---------------:|
|
|:------------------:|:----------------------------------------------------------------------:|:--------:|:--------:|:--------:
|
||||||
| BUILD_HELPERS | Build simple assemblers and tokenizers that handle the heavy lifting | boolean | true | - |
|
| BUILD_IRCV3 | Build IRCv3 support | boolean | WIP ~20% | false |
|
||||||
| BUILD_VALIDATORS | Build validators that check if the messages follow the standards (WIP) | boolean | true | 2020.10.29 |
|
| BUILD_VALIDATORS | Build validators that check if the messages follow the standards | boolean | WIP 0% | false |
|
||||||
| BUILD_TESTS | Build tests that check if the build results behave as they should | boolean | false | - |
|
| BUILD_DOCS | Build documentation using doxygen | boolean | WIP ~35% | false |
|
||||||
| BUILD_IRCV3 | Build IRCv3 support (WIP) | boolean | true | - |
|
| BUILD_TESTS | Build tests that check if the build results behave as they should | boolean | WIP ~60% | false |
|
||||||
| BUILD_DOCS | Build documentation using doxygen (WIP) | boolean | false | - |
|
| CODE_ANALYZER | Use static analysis tools | boolean | WIP TK | false |
|
||||||
| CODE_ANALYZER | Use static analysis tools | boolean | false | 2020.12.20 |
|
| CODE_COVERAGE | Generate code coverage output | boolean | WIP CI | false |
|
||||||
| CODE_COVERAGE | Generate code coverage output | boolean | false | 2020.12.20 |
|
|
||||||
|
|
||||||
Following that, just use your build system and compile it
|
Following that, just use your build system and compile it
|
||||||
|
|
||||||
|
@ -30,6 +32,37 @@ make -C build
|
||||||
|
|
||||||
You now should have the library built at `build/libuirc.a` or `build/libuirc.so.VERSION`
|
You now should have the library built at `build/libuirc.a` or `build/libuirc.so.VERSION`
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Finished
|
||||||
|
- IRC message parsing and assembly that doesn't lose details
|
||||||
|
- Simple message allocation and translation between string format and in-memory structure
|
||||||
|
|
||||||
|
### Planned / Not finished
|
||||||
|
- RFC2812 compliant parser (still need to verify a few things)
|
||||||
|
- Variable-size lists wrappers (capabilities, tags, messages in a buffer etc.)
|
||||||
|
- Message validators (checks messages for formatting problems)
|
||||||
|
- CTCP -> ANSI formatting translation
|
||||||
|
- Mode masks
|
||||||
|
|
||||||
|
## Motivation
|
||||||
|
|
||||||
|
I have started this project initally to learn more about the protocol and learn C.
|
||||||
|
This project has taught me on how to organize code, what tasks are required to maintain a codebase clean and other smaller things.
|
||||||
|
Over the time this learning process has resulted into multiple rewrites or/and redesigns. These include:
|
||||||
|
|
||||||
|
- Splitting the daemon from the core (library)
|
||||||
|
- Parsing tags into structs
|
||||||
|
- Storing structs in memory instead of pointers to buffers
|
||||||
|
- Separating structs
|
||||||
|
- Parsing read-only by copying buffers
|
||||||
|
|
||||||
|
Each of these required redesigning some/all of the code and some also have their downsides.
|
||||||
|
|
||||||
|
Over the time it has turned into a more generalized library that is supposed to not be tied to a specific codebase.
|
||||||
|
I am motivated to write this as i've seen that many codebases have turned into overly-fragmented code or monolithic code.
|
||||||
|
This library isn't supposed to replace any other libraries but instead it should fill this small space that i've noticed was missing.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
|
Reference in New Issue