diff --git a/Compression.BSA/Readme.md b/Compression.BSA/Readme.md new file mode 100644 index 00000000..410b1cfa --- /dev/null +++ b/Compression.BSA/Readme.md @@ -0,0 +1,3 @@ +# Compression.BSA + +BSA Compression gets it's own project to remove cluttering. diff --git a/Wabbajack.CacheServer/Readme.md b/Wabbajack.CacheServer/Readme.md new file mode 100644 index 00000000..6953a41a --- /dev/null +++ b/Wabbajack.CacheServer/Readme.md @@ -0,0 +1,3 @@ +# Wabbajack.CacheServer + +CacheServer for caching mod information to reduce the amount of API calls a user has to account for when using Wabbajack to compiler/install a ModList. diff --git a/Wabbajack.Common.CSP/CSP Readme.md b/Wabbajack.Common.CSP/CSP Readme.md deleted file mode 100644 index 274b9c7d..00000000 --- a/Wabbajack.Common.CSP/CSP Readme.md +++ /dev/null @@ -1,42 +0,0 @@ -### Overview of CSP (Communicating Sequential Processes) for the C# programmer - -#### What is CSP? -Communicating Sequential processes is a programming model invented in 1978 by Tony Hoare, who described a process -of computation where hundreds or thousands of small processes communicate via channels. Think of this process like -a assembly line. Each worker in the factory is a process, and the conveyor belts are the channels. The workers don't need -to know where a part came from, or where it's going, they simply take one item off the belt, perform an operation and pass -the item on to another belt. This analogy works quite well, and the following observations about a factory also apply to -CSP: - -* Multiple workers can pull from the same belt (channel/queue) -* Multiple workers can put work onto the belt -* Belts can buffer items, for slow consumers, but at some point they backup and block the writer -* A worker can pull/push to multiple belts. - - -#### What does this look like in C#? - -The basic unit of CSP in this library is the channel: - -``` -var chan = Channel.Create() -``` - -Without any other parameters this creates a channel with a size of 0, so every pending put must be matched -1:1 with a take. This creates a syncronization point. Channels are fully async and thread-safe: - -``` -public async Task TestTakePutBlocking() -{ - var channel = Channel.Create(); - // Channel size is 0, so we can't await, because we'd never complete - var ptask = channel.Put(1); - - // Now the put is dispatched to the scheduler because we've taken the value - var (open, val) = await channel.Take(); - - Assert.AreEqual(1, val); - Assert.IsTrue(open); - Assert.IsTrue(await ptask); -} -``` \ No newline at end of file diff --git a/Wabbajack.Common.CSP/Readme.md b/Wabbajack.Common.CSP/Readme.md new file mode 100644 index 00000000..71b86a0b --- /dev/null +++ b/Wabbajack.Common.CSP/Readme.md @@ -0,0 +1,38 @@ +# Wabbajack.Common.CSP + +## Overview of CSP (Communicating Sequential Processes) for the C# programmer + +### What is CSP? + +Communicating Sequential processes is a programming model invented in 1978 by Tony Hoare, who described a process of computation where hundreds or thousands of small processes communicate via channels. Think of this process like a assembly line. Each worker in the factory is a process, and the conveyor belts are the channels. The workers don't need to know where a part came from, or where it's going, they simply take one item off the belt, perform an operation and pass the item on to another belt. This analogy works quite well, and the following observations about a factory also apply to CSP: + +* Multiple workers can pull from the same belt (channel/queue) +* Multiple workers can put work onto the belt +* Belts can buffer items, for slow consumers, but at some point they backup and block the writer +* A worker can pull/push to multiple belts. + +#### What does this look like in C#? + +The basic unit of CSP in this library is the channel: + +```cSharp +var chan = Channel.Create() +``` + +Without any other parameters this creates a channel with a size of 0, so every pending put must be matched 1:1 with a take. This creates a syncronization point. Channels are fully async and thread-safe: + +```cSharp +public async Task TestTakePutBlocking() +{ + var channel = Channel.Create(); + // Channel size is 0, so we can't await, because we'd never complete + var ptask = channel.Put(1); + + // Now the put is dispatched to the scheduler because we've taken the value + var (open, val) = await channel.Take(); + + Assert.AreEqual(1, val); + Assert.IsTrue(open); + Assert.IsTrue(await ptask); +} +``` diff --git a/Wabbajack.Common/Readme.md b/Wabbajack.Common/Readme.md new file mode 100644 index 00000000..1668a991 --- /dev/null +++ b/Wabbajack.Common/Readme.md @@ -0,0 +1,3 @@ +# Wabbajack.Common + +The `Common` part of the project name tells it all: Here you will find our Utility functions, the Constants, File Extractors and Game Handlers. \ No newline at end of file diff --git a/Wabbajack.Lib/Readme.md b/Wabbajack.Lib/Readme.md new file mode 100644 index 00000000..e97262d4 --- /dev/null +++ b/Wabbajack.Lib/Readme.md @@ -0,0 +1,3 @@ +# Wabbajack.Lib + +While `Wabbajack` is the front end, `Wabbajack.Lib` is the back end and contains all functionality from the Compilers, the Installers to our NexusAPI and Downloaders. diff --git a/Wabbajack.Test.ListValidation/Readme.md b/Wabbajack.Test.ListValidation/Readme.md new file mode 100644 index 00000000..9e6a1279 --- /dev/null +++ b/Wabbajack.Test.ListValidation/Readme.md @@ -0,0 +1,4 @@ +# Wabbajack.Test.ListValidation + +This project is not part of `Wabbajack.Test` as the `ListValidation` test validates every ModList from [this](https://github.com/wabbajack-tools/mod-lists) repository and checks if all ModLists are valid. +The gets called when you push to master or to the repo linked above. diff --git a/Wabbajack.Test/Readme.md b/Wabbajack.Test/Readme.md new file mode 100644 index 00000000..83f941e2 --- /dev/null +++ b/Wabbajack.Test/Readme.md @@ -0,0 +1,3 @@ +# Wabbajack.Test + +This project contains almost all tests for Wabbajack. If you create a new PR, push to master or update your PR than the tests in this project will be started at Azure DevOps. It is recommended that you run the test(s) for the part of the application you have changed. You can also create new tests if you have added something that other tests do not cover. diff --git a/Wabbajack.VirtualFileSystem/Readme.md b/Wabbajack.VirtualFileSystem/Readme.md new file mode 100644 index 00000000..56dba213 --- /dev/null +++ b/Wabbajack.VirtualFileSystem/Readme.md @@ -0,0 +1,3 @@ +# Wabbajack.VirtualFileSystem + +Once called just `VirtualFileSystem`, this project is responsible for indexing, staging and caching files from the game folder, the downloads and install folder. diff --git a/Wabbajack/Readme.md b/Wabbajack/Readme.md new file mode 100644 index 00000000..33e67d91 --- /dev/null +++ b/Wabbajack/Readme.md @@ -0,0 +1,4 @@ +# Wabbajack + +This is the main project of this solution. It contains only UI code like all Views and View Models as well as custom Components and Resources such as icons and images. +You can consider this project to be the front end of Wabbajack.