From c6d3b05801ec39735c88cf0b8851023bd0dedce8 Mon Sep 17 00:00:00 2001 From: Pylyv Date: Wed, 3 Jan 2024 11:43:13 +0100 Subject: [PATCH 1/3] feat: Adding CONTRIBUTING file to move forward with the README file on the Rumble-LoL-Plugin project --- CONTRIBUTING.MD | 117 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 CONTRIBUTING.MD diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD new file mode 100644 index 0000000..229a4d4 --- /dev/null +++ b/CONTRIBUTING.MD @@ -0,0 +1,117 @@ +# Contributing to CONTRIBUTING.md + +First off, thanks for taking the time to contribute! + +All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways to help and details about how this project handles them. Please make sure to read the relevant section before making your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The community looks forward to your contributions. + +> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support the project and show your appreciation, which we would also be very happy about: +> - Star the project +> - Tweet about it +> - Refer this project in your project's readme +> - Mention the project at local meetups and tell your friends/colleagues + + +## Table of Contents + +- [Code of Conduct](#code-of-conduct) +- [I Have a Question](#i-have-a-question) +- [I Want To Contribute](#i-want-to-contribute) +- [Reporting Bugs](#reporting-bugs) +- [Suggesting Enhancements](#suggesting-enhancements) +- [Your First Code Contribution](#your-first-code-contribution) +- [Improving The Documentation](#improving-the-documentation) +- [Styleguides](#styleguides) +- [Commit Messages](#commit-messages) +- [Join The Project Team](#join-the-project-team) + + +## Code of Conduct + +This project and everyone participating in it is governed by the +[CONTRIBUTING.md Code of Conduct](blob/master/CODE_OF_CONDUCT.md). +By participating, you are expected to uphold this code. Please report unacceptable behavior +to <>. + + +## I Have a Question + +> If you want to ask a question, we assume that you have read the available [Documentation](https://github.com/zerodaycode/Rumble-LoL-Plugin). + +Before you ask a question, it is best to search for existing [Issues](/issues) that might help you. In case you have found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to search the internet for answers first. + +If you then still feel the need to ask a question and need clarification, we recommend the following: + +- Open an [Issue](/issues/new). +- Provide as much context as you can about what you're running into. +- Provide project and platform versions (nodejs, npm, etc), depending on what seems relevant. + +We will then take care of the issue as soon as possible. + + + +## I Want To Contribute + +> ### Legal Notice +> When contributing to this project, you must agree that you have authored 100% of the content, that you have the necessary rights to the content and that the content you contribute may be provided under the project license. + +### Reporting Bugs + + +#### Before Submitting a Bug Report + +A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to investigate carefully, collect information and describe the issue in detail in your report. Please complete the following steps in advance to help us fix any potential bug as fast as possible. + +- Make sure that you are using the latest version. +- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment components/versions (Make sure that you have read the [documentation](https://github.com/zerodaycode/Rumble-LoL-Plugin). If you are looking for support, you might want to check [this section](#i-have-a-question)). +- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there is not already a bug report existing for your bug or error in the [bug tracker](issues?q=label%3Abug). +- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue. +- Collect information about the bug: +- Stack trace (Traceback) +- OS, Platform and Version (Windows, Linux, macOS, x86, ARM) +- Version of the interpreter, compiler, SDK, runtime environment, package manager, depending on what seems relevant. +- Possibly your input and the output +- Can you reliably reproduce the issue? And can you also reproduce it with older versions? + + +#### How Do I Submit a Good Bug Report? + +> You must never report security related issues, vulnerabilities or bugs including sensitive information to the issue tracker, or elsewhere in public. Instead sensitive bugs must be sent by email to <>. + + +We use GitHub issues to track bugs and errors. If you run into an issue with the project: + +- Open an [Issue](/issues/new). (Since we can't be sure at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.) +- Explain the behavior you would expect and the actual behavior. +- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem and create a reduced test case. +- Provide the information you collected in the previous section. + +Once it's filed: + +- The project team will label the issue accordingly. +- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no obvious way to reproduce the issue, the team will ask you for those steps and mark the issue as `needs-repro`. Bugs with the `needs-repro` tag will not be addressed until they are reproduced. +- If the team is able to reproduce the issue, it will be marked `needs-fix`, as well as possibly other tags (such as `critical`), and the issue will be left to be [implemented by someone](#your-first-code-contribution). + +### Suggesting Enhancements + +If you want to suggest an enhacement or new feature for the project, please [open a new issue](/issues) describing what you desire to improve, and, potentially, how you plan to contribute to the project. + +#### Before Submitting an Enhancement + +- Make sure that you are using the latest version. +- Read the [documentation](https://github.com/zerodaycode/Rumble-LoL-Plugin) carefully and find out if the functionality is already covered, maybe by an individual configuration. +- Perform a [search](/issues) to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. +- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to convince the project's developers of the merits of this feature. Keep in mind that we want features that will be useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, consider writing an add-on/plugin library. + +#### How Do I Submit a Good Enhancement Suggestion? + +Enhancement suggestions are tracked as [GitHub issues](/issues). + +- Use a **clear and descriptive title** for the issue to identify the suggestion. +- Provide a **step-by-step description of the suggested enhancement** in as many details as possible. +- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point you can also tell which alternatives do not work for you. +- You may want to **include screenshots and animated GIFs** which help you demonstrate the steps or point out the part which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux. +- **Explain why this enhancement would be useful** to most CONTRIBUTING.md users. You may also want to point out the other projects that solved it better and which could serve as inspiration. + + +## Attribution +This guide is based on the **contributing.md**. [Make your own](https://contributing.md/)! From 24427c159fe1b2a79212b48548859f8373de0f13 Mon Sep 17 00:00:00 2001 From: Pylyv Date: Wed, 3 Jan 2024 13:12:44 +0100 Subject: [PATCH 2/3] feat: Resolving some TODOs from the README file for the issue #5 "The project's README" --- README.md | 74 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index 849ed4a..222011e 100644 --- a/README.md +++ b/README.md @@ -1,47 +1,65 @@ -# The Rumble LoL Plugin for Rumble-AI +

The Rumble Lol Plugin for Rumble-AI

+ +

Welcome to the Rumble LoL Plugin, or **RLP** for short. -Welcome to the Rumble LoL Plugin, or **RLP** for short. This is the documentation (developer oriented) for the project. +

+ +
+ +[![Code Quality](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-quality.yml/badge.svg?branch=main)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-quality.yml) +[![Windows Installer](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/release.yml/badge.svg)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/release.yml) +[![Coverage CD/CI](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-coverage.yml/badge.svg)](https://zerodaycode.github.io/Rumble-LoL-Plugin/index.html) + +[![GitHub Issues](https://img.shields.io/github/issues/zerodaycode/Rumble-LoL-Plugin.svg)](https://github.com/zerodaycode/Rumble-LoL-Plugin/issues)
+[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/zerodaycode/Rumble-LoL-Plugin.svg)](https://github.com/zerodaycode/Rumble-LoL-Plugin/pulls) + +[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE) +[![Coverage CD/CI](https://zerodaycode.github.io/Rumble-LoL-Plugin/badges/flat.svg)](https://zerodaycode.github.io/Rumble-LoL-Plugin) +
+ +# 📝 Table of Contents + +
-#### TODO +[Building the project](#building-the-project) | [CMake and LLVM tools on Windows](#cmake-and-llvm-tools-on-windows) | [Getting Started](#getting-started) | [Configuring and building the project](#configuring-and-building-the-project) | [Running the project](#running-the-project) | [Legacy build system way](#legacy-build-system-way) | [Technical specification overview](#technical-specification-overview) | [Building process (setuptools and (CMake?), maybe Zork++)]() | [Contributing](./CONTRIBUTING.md) | [License](./LICENSE) -- Add CI status badges (when actions are configured) -- An index summary with hyperlinks +
## TODO make a deep explanation of the project ## Building the project -In order to build this project, we provide two different options that you may want to choose. +In order to build this project, we provide two different options for you to consider what's the best approach while building the project. ### A bit of history of our setup -In the early times, this was developed on Microsoft's `Visual Studio`, using all its power for generate the `C++` library, and +In the early times, this was developed on Microsoft's `Visual Studio`, using all its power to generate the `C++` library, and glue the code to generate the `Python` module, that ultimately will run as a plugin of `Rumble-AI`, but we liked to move -towards a more **Open Source** kind of tools. +towards a more **Open Source** type of tools. So, later, we started to use the `setuptools` Python's module to build the project. This approach is really nice, and an -easy one to set up, so it was really welcome at that time. That allowed us to use other editors, and a build system that didn't -depend on the many configuration files that come attached with `VS` projects. Even tho, was a nice step, but we still need the +easy one to set up, so it was really convenient at that time. That allowed us to use other editors, and a build system that didn't +depend on the many configuration files that come attached with `VS` projects. Altough it was a nice step, we felt like we still needed the Microsoft compiler, their `STD library` implementation, so on and so forth... ## CMake and LLVM tools on Windows -This is our main way of build and compile the project. Here, in `Zero Day Code`, we are big fans of the `LLVM` project. -For that reason, we set up an intricate way of building the project, but, in exchange, we are building it with zero proprietary +This is our main way of build and compile the project. In `Zero Day Code`, we are big fans of the `LLVM` project. +For that reason, we set up an intricate way of building the project, however, in exchange, we are building it with zero proprietary dependencies. -After a long time with the project unmaintained, we decided to came back. And this time we bring with us other approach. -And we managed to base our build process in the following components: +After a long time with the project unmaintained, we decided to come back and this time we bring with us a new approach. +We managed to base our build process in the following components: - CMake - LLVM tools - Python > *Note*: This approach will require a **MSYS2** installation, and get all the components through the `Clang64` environment. -> Even tho is technically possible to make the same job that we will explain below with other kind of installations, -> tools or environments, that's the one that we prefer, that we will document and will support. -> But feel free to play as much as you want with other tools, and propose any if better. +> It's technically possible to make the same job that we will explain below with other type of installations, +> tools or environments besides the ones that we share on the documentation steps and that we will support. +> Nonetheless, feel free to play as much as you want with other tools, and propose any if yopu find them better and increase the project by cointributing to it. We will be using those three, and no others, from the `Clang64` environment of **MSYS2**. @@ -73,13 +91,13 @@ pacman -S mingw-w64-clang-x86_64-gcc-compat You have a more in-depth description of the tools in a toy project used as example on how to integrate this setup with OpenCV on Windows [here](https://github.com/Pyzyryab/OpenCV-Clang-Windows) -> With this build system we aren't able to compiling **OpenCV** from scratch with `Clang`, because `Clang` refuses to compile certain parts of `OpenCV` (while other -> compilers are just fine). Don't worry, we stand on the side of the `Clang's` perspective. But we are just able to provide a `OpenCV` version up until the `4.6.0` (included). +> With this build system we aren't able to compile **OpenCV** from scratch with `Clang`, because `Clang` refuses to compile certain parts of `OpenCV` (while other +> compilers are just fine). Don't worry, we stand on the side of the `Clang's` perspective. But we are just able to provide an `OpenCV` version up until the `4.6.0` (included). > This is the one that is downloaded, built and installed directly by `CMake`. Don't worry about it, but we just want to let you know. ### Add them to your path (optional) -For making the things easier, we just add the **MinGW** `Clang64` environment to our *PATH* in our personal +To make things easier, we just add the **MinGW** `Clang64` environment to our *PATH* in our personal computers. Take this in consideration, because certain elements are configured assuming this premise. ## Configuring and building the project @@ -134,7 +152,7 @@ python ./python/run_rlp.py And you should see the application running directly in your terminal. -For see what options are available to control, you main want to take a look to the +To see what options are available to control, you might want to take a look to the source code where they are defined, in [this translation unit](./code/rumble_lol_plugin/league_client/api_buttons.hpp) ### TODO make a real list with the available actions (through buttons) @@ -150,7 +168,7 @@ source code where they are defined, in [this translation unit](./code/rumble_lol ## Legacy build system way We already discussed the `setuptools` way. This one is the easiest way possible of building the project, and it's configured out of the -box for work immediately. On the other hand, it's code and configuration aren't as accurate as possible, and you won't use what we consider +box to work immediately. On the other hand, its code and configuration aren't as accurate as possible, and you won't use what we consider the best technologies available. But it could be a solution if you don't want to have the **MinGW** setup, or if you already have an installation of `OpenCV` or whatever @@ -161,14 +179,14 @@ good reason is. > to directly make REST API calls. This will probably introduce `***The Rust Programming Language*** into the ecosystem, > and will be glued with some existent C++ code in the codebase. -For now, our project heavy relies on [OpenCV](https://opencv.org), concretely in this release [4.8.0](https://opencv.org/releases/), +For now, our project heavy relies on [OpenCV](https://opencv.org), specifically in this release [4.8.0](https://opencv.org/releases/), so, for you to be able to run the project, you'll need an installation of `OpenCV`. -> For building the project in this way, we support up until OpenCV <= 4.8.1. +> To build the project with this approach, we support up until OpenCV <= 4.8.1. We assume up until this point, that you already installed `OpenCV`. Where you installed it, it's completely up to you, but remember to modify the `include` paths accordingly in the [setup.py](./python/c++_bindings/setup.py), -as well the ones to the dependent libraries and DLL's. +as well as the ones to the dependent libraries and DLL's. The best part of this procedure is that is extremely straightforward. You just need to literally use *Python's pip* package manager to get the job done. @@ -183,9 +201,9 @@ pip install ./python/c++_bindings/setup.py ``` You'll see the process build starting. If everything goes well, `pip` will automatically make the `C++` code a library that will be generated -in a way that `Python` will specifically understand and therefore, that can consume. +in a way that `Python` will specifically understand and therefore consume. -Also, it will install directly `RLP` in your *Python* installation, so the only thing that you'll need to start to use it is: +Additionally, it will install directly `RLP` in your *Python* installation, so the only thing that you'll need to start to use it is: ```Python import rlp @@ -200,7 +218,7 @@ import rlp For this project, at this time of writing (11/2023), and after two years without develop nor maintaining this codebase, we are adapting our project layout [to this specification](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p1204r0.html) just for the sake of having a good internal structure and coherence in the project layout, but introducing an intermediate -folder named code, mixing the modern GitHub CI typical configurations and furthermore, for hide our `includePath` from the +folder named code, mixing the modern GitHub CI typical configurations and furthermore, to hide our `includePath` from the root of the project, taking as "root" `` ### C++ From 6afffb357150e3df59d8cfc37d52d10479bbe574 Mon Sep 17 00:00:00 2001 From: Pylyv Date: Sun, 18 Feb 2024 21:20:07 +0100 Subject: [PATCH 3/3] feat: Added status badges feat: Merge remote-tracking branch 'origin/main' into feature/GH-5-the-projects-readme --- README.md | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 632fcd0..b61258b 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,19 @@ This is the documentation (developer oriented) for the project.
-[![Code Quality](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-quality.yml/badge.svg?branch=main)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-quality.yml) -[![Windows Installer](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/release.yml/badge.svg)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/release.yml) -[![Coverage CD/CI](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-coverage.yml/badge.svg)](https://zerodaycode.github.io/Rumble-LoL-Plugin/index.html) +![C++](https://img.shields.io/badge/c++-%2300599C.svg?style=for-the-badge&logo=c%2B%2B&logoColor=white) +![CMake](https://img.shields.io/badge/CMake-%23008FBA.svg?style=for-the-badge&logo=cmake&logoColor=white) +![Python](https://img.shields.io/badge/python-3670A0?style=for-the-badge&logo=python&logoColor=ffdd54) -[![GitHub Issues](https://img.shields.io/github/issues/zerodaycode/Rumble-LoL-Plugin.svg)](https://github.com/zerodaycode/Rumble-LoL-Plugin/issues)
-[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/zerodaycode/Rumble-LoL-Plugin.svg)](https://github.com/zerodaycode/Rumble-LoL-Plugin/pulls) +[![Build Rumble LoL Plugin](https://img.shields.io/github/actions/workflow/status/zerodaycode/Rumble-Lol-Plugin/build_cmake.yml?style=for-the-badge)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/build_cmake.yml) +[![Windows Installer](https://img.shields.io/github/release/zerodaycode/Rumble-LoL-Plugin.svg?style=for-the-badge)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/release.yml) +[![Code Quality](https://img.shields.io/github/code-quality/zerodaycode/Rumble-LoL-Plugin.svg?style=for-the-badge)](https://github.com/zerodaycode/Rumble-LoL-Plugin/actions/workflows/code-quality.yml) +[![Coverage CD/CI](https://img.shields.io/github/index/zerodaycode/Rumble-LoL-Plugin.svg?style=for-the-badge)](https://zerodaycode.github.io/Rumble-LoL-Plugin/index.html) + +[![GitHub Issues](https://img.shields.io/github/issues/zerodaycode/Rumble-LoL-Plugin?style=for-the-badge)](https://github.com/zerodaycode/Rumble-LoL-Plugin/issues) +[![GitHub Pull Requests](https://img.shields.io/github/issues-pr/zerodaycode/Rumble-LoL-Plugin?style=for-the-badge)](https://github.com/zerodaycode/Rumble-LoL-Plugin/pulls) +[![License](https://img.shields.io/github/license/zerodaycode/Rumble-LoL-Plugin?style=for-the-badge)](/LICENSE) -[![License](https://img.shields.io/badge/license-MIT-blue.svg)](/LICENSE) -[![Coverage CD/CI](https://zerodaycode.github.io/Rumble-LoL-Plugin/badges/flat.svg)](https://zerodaycode.github.io/Rumble-LoL-Plugin)
# 📝 Table of Contents @@ -57,7 +61,9 @@ We managed to base our build process in the following components: - The LLVM project, for getting the clang compiler frontend and its **C++** marvelous tools, like code formatters, static analyzers, address sanitizers... - Python -> *Note*: This approach will require a **MSYS2** installation, and get all the components through the `Clang64` environment. +>[!NOTE] +> +> This approach will require a **MSYS2** installation, and get all the components through the `Clang64` environment. > It's technically possible to make the same job that we will explain below with other type of installations, > tools or environments besides the ones that we share on the documentation steps and that we will support. > Nonetheless, feel free to play as much as you want with other tools, and propose any if yopu find them better and increase the project by cointributing to it. @@ -168,7 +174,9 @@ cmake -S . -B ./build -G "Ninja" -DCMAKE_TOOLCHAIN_FILE=./clang-x86_64_windows_g > By default, the project is build in *Debug* mode. If you want to test a **release** version, just add to > the command line `-DCMAKE_BUILD_TYPE=Release`, or use the `make build_release` -> *NOTE:* Project's dependencies are built in **release** mode always. +>[!NOTE] +> +> Project's dependencies are built in **release** mode always. ### Make support