param(
    $Action,
    [hashtable] $Arguments
)

& {
    param (
        [hashtable] $Parameters
    )

    . "$PSScriptRoot/../../../Common/Scripts/Software.ps1";
    . "$PSScriptRoot/../../../Common/Types/InstallerAction.ps1";
    $base = "$PSScriptRoot/../../../Common/Software/vscode/Main.ps1";

    Start-SoftwareInstaller @Parameters `
        -Installer {
            Install-ChocoPackage vscode -ArgumentList "--params","/NoDesktopIcon";
            Install-ChocoPackage vscodium -ArgumentList "--params","/NoDesktopIcon /AssociateWithFiles";
            refreshenv;
        } `
        -UserConfigurator {
            param(
                $Arguments
            )

            & $base ([InstallerAction]::ConfigureUser) @PSBoundParameters;
        };
} $PSBoundParameters;