For now, only the GUI can be launched. One can do this as follows:
- Make sure Rust, Node.js and pnpm are installed. If not, installing the latest (or LTS) versions will do.
- From the base directory, do
cd ./gui - Then, install all packages by running
pnpm install - Once installed, run the GUI by running
pnpm tauri dev
More installation and running instructions will follow here soon!
Within this rewrite branch, the GUI will stay as it is until it works on the new engine.
For sake of completeness, as @Jelco-C already made a start on a rust-based CLI, we will include it in this branch, to make testing the Core easier. This will be placed in the cli crate. The CLI functionality will grow with the core functionality, staying relatively similar to the gitinspectorgui-old syntax.
We will rewrite the whole Gitinspectorgui in Rust. Due to Rust being fundamentally different to Python, the old Gitinspectorgui engine (not the engine found in this repository!) will be broken down in parts, and rebuilt piece by piece.
First, we'll implement an API file in the core, for the cli and gui to be built on. Then, we will reimplement the features in lib.rs in the following order:
-
repo_base.pyfunctionality: This file contains the main analysis, which is the first we'll rebuild. In the Python implementation, it uses data classes. In Rust, we will implement these in their respective data structures in the theshared-types, while the repo_base functionality will be written in thecorecrate. Theperson_datafunctionality will be skipped, instead, each author will be seen as distinct person. -
A module in the
corecrate will be made to deal with inputs and outputs from the GUI and CLI, the so-called API. This API will grow with the expansion of the core. -
Building upon
repo_base.py, we will implement the functionality ofrepo_data.py. Again, theperson_data.pyfunctionality will be skipped. -
repo_blame.pyfunctionality will be made. -
person_data.pyfunctionality will be the last major function to be re-implemented.
This branch has reached its goal when it functions at least as well as the current implementation in the main branch.