DoCli/Objects/Services/CLIFunctionServiceContainer.psm1

using module "..\CLI\CLIFunctions\Management\Processes\AddProcess.psm1";
using module "..\CLI\CLIFunctions\Management\Processes\RemoveProcess.psm1";
using module "..\CLI\CLIFunctions\Management\Modules\AddModule.psm1";
using module "..\CLI\CLIFunctions\Management\Modules\RemoveModule.psm1";
using module "..\CLI\CLIFunctions\Management\Tests\AddTest.psm1";
using module "..\CLI\CLIFunctions\Management\Tests\RemoveTest.psm1";
using module "..\CLI\CLIFunctions\Management\CreateProject.psm1";
using module "..\CLI\CLIFunctions\Invocation\RunProcess.psm1";
using module "..\CLI\CLIFunctions\Invocation\RunTests.psm1";
using module "..\CLI\CLIFunctions\Util\ReadArgs.psm1";
using module "..\CLI\CLIFunctions\Util\GetMethodInfo.psm1";
using module "..\CLI\CLIFunctions\Util\CreateProxy.psm1";
using module "..\Environment\ReadProcessLocation.psm1";

using namespace DoFramework.CLI;
using namespace DoFramework.Data;
using namespace DoFramework.Domain;
using namespace DoFramework.Mappers;
using namespace DoFramework.Logging;
using namespace DoFramework.Services;
using namespace DoFramework.Validators;
using namespace DoFramework.Types;
using namespace DoFramework.Modules;
using namespace DoFramework.Environment;
using namespace System.Collections.Generic;

<#
.SYNOPSIS
Class for creating the CLI function service container within the DoFramework environment.

.DESCRIPTION
The CLIFunctionServiceContainer class is designed to register and configure all
necessary CLI function services within the DoFramework environment. It sets up various
service dependencies and returns an initialized service container.
#>

class CLIFunctionServiceContainer {
    <#
    .SYNOPSIS
    Creates and configures the CLI function service container.

    .DESCRIPTION
    The Create method registers all necessary CLI function services, including
    validators, loggers, mappers, and various CLI functions. It returns an
    initialized service container with all dependencies.
    #>

    static [IServiceContainer] Create() {
        [IServiceContainer] $container = [ServiceContainer]::new();

        $container.RegisterService[IConsoleWrapper, ConsoleWrapper]();
        $container.RegisterService[ILogger, Logger]();
        $container.RegisterService[IValidationErrorWriter, ValidationErrorWriter]();
        $container.RegisterService[CLIArgValidator]();
        $container.RegisterService[RunProcess]();
        $container.RegisterService[ArgMapper]();
        $container.RegisterService[AddProcess]();
        $container.RegisterService[AddModule]();
        $container.RegisterService[AddTest]();
        $container.RegisterService[CreateProject]();
        $container.RegisterService[RemoveModule]();
        $container.RegisterService[RemoveTest]();
        $container.RegisterService[RemoveProcess]();
        $container.RegisterService[RunTests]();
        $container.RegisterService[ReadArgs]();
        $container.RegisterService[GetMethodInfo]();
        $container.RegisterService[CreateProxy]();

        return $container;
    }
}