.
diff --git a/README.md b/README.md
index 4ea792b9..30e9d706 100644
--- a/README.md
+++ b/README.md
@@ -1,44 +1,47 @@
+
+
# Outer Wilds Mod Manager
> **CURRENTLY A WORK IN PROGRESS!!**
-This is the monorepo for the new [Outer Wilds](https://www.mobiusdigitalgames.com/outer-wilds.html) Mod Manager, completely re-implemented in Rust/Tauri.
+
+
+This is the monorepo for the new Outer Wilds Mod Manager.
+Core |
+CLI |
+GUI
+
## Packages
- [owmods_core](owmods_core): The core library, shared between the CLI and the GUI
-- [owmods_cli](owmods_cli): The CLI interface for the manager, made with Clap
-- [owmods_gui](owmods_gui): The GUI interface for the manager
+- [owmods_cli](owmods_cli): The CLI interface for the manager, made with clap
+- [owmods_gui](owmods_gui): The GUI interface for the manager, made with tauri
## Platform Support
-| **Platform** | **Supported** |
-|:------------:|:-------------:|
+| **Platform** | **Supported** |
+|:------------:|:--------------:|
| **Windows** | ✅ |
-| **Linux** | ✅ |
-| **Deck** | ❓ |
-| **MacOS** | 😐 |
-
-## Release Profile
+| **Linux** | ✅* |
+| **Deck** | 🔜* |
-To reduce binary sizes, some features have been enabled that will slow down release compile time, but make a significantly smaller binary.
+\* Quantum Space Buddies Currently Has Issues
## Contributing
-You'll need rust and cargo.
+Each package has different prerequisites for compiling/building, please look at the README.md and CONTRIBUTING.md files in each package for more info.
-First:
+### Commit Names
-```sh
-git clone https://github.com/Bwc9876/ow-mod-man/
-```
+When performing changes on a specific package, try to prefix the name with the package you're changin, see below:
-Then check each package for guide on running and contributing.
+- For the core package: `[CORE] Made changes to core`
+- For the cli package: `[CLI] Made changes to the CLI`
+- For the gui package: `[GUI] Made changes to the GUI`
+- For multiple packages: `[CORE/GUI] Made changes to both the core and GUI`
+- For all packages: `[ALL] Made changes to everything`
+- For chores such as updating deps: `[CHORE] Update Deps`
+- For meta-related changes such as editing actions or updating READMEs: `[META] Changed CD/CI pipeline`
-**Please format your code (`cargo fmt`) and lint it (`cargo clippy --fix`)**
-
-Also make sure if you're working on platform-specific behaviour to test it on all platforms.
-
-### Typeshare
-
-We use typeshare to share types between the frontend and backend of the gui, `owmods_gui/frontend/src/types.d.ts` is generated by the tool an should not be edited manually. To generate the file, install typeshare `cargo install typeshare-cli` and then go into `owmods_gui/frontend` and run `pnpm gen-types`.
+Also try to tag issues and PRs with the appropriate tags.
diff --git a/owmods_cli/CONTRIBUTING.md b/owmods_cli/CONTRIBUTING.md
new file mode 100644
index 00000000..f0fbb93a
--- /dev/null
+++ b/owmods_cli/CONTRIBUTING.md
@@ -0,0 +1,18 @@
+# Contributing
+
+To build this project you'll need rust and cargo.
+
+This package is called `owmods_cli` so anytime you want to perform cargo commands on it **do not do it in this folder**, do it from the root of the repo and add `-p owmods_cli` to your cargo command.
+
+Ex: `cargo add clap` should become `cargo add clap -p owmods_cli`.
+
+## Formatting & Linting
+
+Please format and lint your code before pushing:
+
+```sh
+cargo fmt
+cargo clippy --all-targets -- -D warnings
+```
+
+Git hooks are setup to run clippy on every commit, meaning they may take longer.
diff --git a/owmods_cli/README.md b/owmods_cli/README.md
index 87b5b238..73e7cd78 100644
--- a/owmods_cli/README.md
+++ b/owmods_cli/README.md
@@ -4,41 +4,7 @@ The CLI interface for the mod manager, built using clap.
## Usage
-This is just the output of `owmods help`, but im guessing if you're here you can't use it for some reason.
-
-```txt
-A CLI Tool To Manage OWML Mods
-
-Usage: owmods [OPTIONS]
-
-Commands:
- version Print Version
- setup Install/Update OWML (default installs to %APPDATA%/ow-mod-man/OWML)
- alert View the current database alert (if there is one)
- update Updates all mods
- list List local (installed) or remote (in the database) mods
- info View info about a specific mod
- enable Enable a mod (use -r to enable dependencies too)
- disable Disable a mod (use -r to disable dependencies too)
- install Install a mod (use -r to auto-install dependencies)
- install-zip Install a mod from a .zip file (-r not supported)
- install-url Install a mod from a URL (-r not supported)
- uninstall Uninstall a mod (use -r to uninstall dependencies too)
- export Export enabled mods to stdout as JSON
- import Import mods from a .json file (installs if not there, enables if already installed)
- run Run the game
- open Quickly open something
- readme Open the readme for a mod
- validate Validate local mods for missing dependencies and conflicts
- help Print this message or the help of the given subcommand(s)
-
-Options:
- -r, --recursive Apply the action recursively (to all dependencies)
- --settings Override the settings file
- --debug Enable debug output
- -h, --help Print help
- -V, --version Print version
-```
+Run `owmods help` for a list of commands
### Shortcuts
@@ -53,3 +19,9 @@ Some command shortcuts exist for convenience
- `disable` -> `d`
- `uninstall` -> `rm`
- `readme` -> `man`
+
+## Building
+
+This package requires rust and cargo to build.
+
+Run `cargo build -p owmods_cli --release` from the **root of the repo** to create a release binary.
diff --git a/owmods_core/CONTRIBUTING.md b/owmods_core/CONTRIBUTING.md
new file mode 100644
index 00000000..a0eba2e0
--- /dev/null
+++ b/owmods_core/CONTRIBUTING.md
@@ -0,0 +1,26 @@
+# Contributing
+
+To build this project you'll need rust and cargo.
+
+This package is called `owmods_core` so anytime you want to perform cargo commands on it **do not do it in this folder**, do it from the root of the repo and add `-p owmods_core` to your cargo command.
+
+Ex: `cargo add tokio` should become `cargo add clap -p owmods_core`.
+
+## Typeshare
+
+Upon editing any structs marked with `#[typeshare]`, you'll need to regenerate TypeScript bindings for the GUI. See the [typeshare section](https://github.com/Bwc9876/ow-mod-man/blob/main/owmods_gui/CONTRIBUTING.md#Typeshare) of the GUI contributing file for more info.
+
+## Tests
+
+To run tests run `cargo test -p owmods_core`
+
+## Formatting & Linting
+
+Please format and lint your code before pushing:
+
+```sh
+cargo fmt
+cargo clippy --all-targets -- -D warnings
+```
+
+Git hooks are setup to run clippy on every commit, meaning they may take longer.
diff --git a/owmods_core/README.md b/owmods_core/README.md
index 25a92bda..e2f21ca9 100644
--- a/owmods_core/README.md
+++ b/owmods_core/README.md
@@ -2,66 +2,3 @@
The core library for the Outer Wilds mod manager, this package is responsible for basically everything from fetching the db to downloading mods.
The other two packages in this repo act as frontends to this package.
-
-## Usage
-
-Before getting started your program needs to handle two things:
-
-1. Implementing a LoggerBackend and ProgressHandler and creating a Logger
-2. Loading the config
-
-These will need to be passed to nearly any function in the library
-
-### Implementing Traits
-
-Implement `LoggerBackend` and `ProgressHandler`, these will handle outputting data about what the library is doing while it's working.
-
-Then, create a new logger `owmods_core::logging::Logger::new(Box::new(myLoggerBackend));`.
-
-### Loading Config
-
-Call `owmods_core::config::get_config(&logger);`
-
-### Errors
-
-Nearly every function returns `Result`, so make sure to handle those.
-I'd recommend forwarding errors to the logger by doing:
-
-```rs
-use owmods_core::log;
-
-log!(logger, error, "{:?}", theError);
-```
-
-### On Linux
-
-On Linux the wine_prefix config variable must be set before running `owmods_core::game::launch_game`.
-
-To do this call `owmods_core::game::setup_wine_prefix`. **Note that while although this method exists for windows builds, you should not call it (it'll just log an error but still).**
-
-It's recommended to only setup the prefix if the wine_prefix setting is `None`, also if you intend for user to use your program you may want to explain what's happening.
-
-## Modules
-
-- alerts.rs: Manages fetching and showing alerts
-- config.rs: Manages the manager's configuration
-- db.rs: Manages fetching and compiling the local and remote database
-- download.rs: Manages downloading and installing mods and OWML
-- game.rs: Manages running the game and setting up a wine prefix on linux
-- io.rs: Manages importing and exporting the list of mods
-- lib.rs: Exports stuff
-- logging.rs: Creates traits that dependents are expected to implement for logging
-- mods.rs: Hols the structs that represent local and remote mods and some utility functions
-- open.rs: Manages opening shortcuts and READMEs
-- remove.rs: Manages uninstalling mods
-- toggle.rs: Manages toggling mods on and off, and checking if they're enabled
-- updates.rs: Manages updating mods and OWML
-- utils.rs (private): Some utility functions used internally
-- validate.rs: Manages checking for and fixing conflicts and missing dependencies
-
-## Vocab
-
-**Local Mod**: A mod that is installed locally
-**Remote Mod**: A mod that's in the database
-**Local DB**: A compilation of all local mods
-**Remote DB**: A compilation of all remote mods
diff --git a/owmods_gui/CONTRIBUTING.md b/owmods_gui/CONTRIBUTING.md
new file mode 100644
index 00000000..8656b6b7
--- /dev/null
+++ b/owmods_gui/CONTRIBUTING.md
@@ -0,0 +1,49 @@
+# Contributing
+
+To build this project you'll need rust, cargo, and pnpm.
+
+This package is called `owmods_gui` so anytime you want to perform cargo commands on it **do not do it in this folder**, do it from the root of the repo and add `-p owmods_gui` to your cargo command.
+
+Ex: `cargo add tokio` should become `cargo add clap -p owmods_gui`.
+
+## pnpm
+
+The frontend for this package is made with TS so you need to install related dependencies. First cd in to `owmods_gui/frontend`, then run `pnpm i`
+
+## Typeshare
+
+Upon editing any structs marked with `#[typeshare]`, you'll need to regenerate TypeScript bindings.
+
+To do this, you need to install the typeshare cli:
+
+```sh
+cargo install typeshare-cli
+```
+
+Then run the `gen-types` pnpm command:
+
+```sh
+cd owmods_gui/frontend
+pnpm gen-types
+```
+
+This will generate `types.d.ts` in `owmods_gui/frontend/src/types.d.ts`, **make sure to format this file with prettier (`pnpm prettify`)**.
+
+## Formatting & Linting
+
+Please format and lint your code before pushing:
+
+```sh
+cargo fmt
+cargo clippy --all-targets -- -D warnings
+```
+
+And lint and format the frontend as well:
+
+```sh
+cd owmods_gui/frontend
+pnpm lint
+pnpm prettify
+```
+
+Git hooks are setup to run clippy on every commit, meaning they may take longer.
diff --git a/owmods_gui/README.md b/owmods_gui/README.md
index 48f3b03e..5edb2f04 100644
--- a/owmods_gui/README.md
+++ b/owmods_gui/README.md
@@ -10,6 +10,12 @@ Check out the [mods website](https://outerwildsmods.com/mod-manager/) for instru
## Building
+Prerequisites:
+
+- rust
+- cargo
+- pnpm
+
You'll need the tauri CLI installed, so run:
```sh
@@ -44,10 +50,14 @@ cargo tauri build
Builds are located in `target/` at the root of the repo.
+### On Debian
+
+On debian you need to install some dependencies with apt:
+
+```sh
+sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libayatana-appindicator3-dev librsvg2-dev
+```
+
### build.rs Error in `backend/`
Just create an empty `dist/` folder next to `backend`, tauri expects one to be there from vite but it isn't since you haven't ran it yet.
-
-## Contributing
-
-**Format and lint your code with `pnpm prettify` and `pnpm lint`**.