Lib/git_init_env.psm1

<#
    .SYNOPSIS
        Initialize Git Environment
 
    .DESCRIPTION
        Initialize Git Environment. Preparation script for downloading the NAF repo. Includes all git related
        software for cloning.
 
    .NOTES
        Author : hillesheim@n-dimensions.de
        Version : 2.5
        DateLastChanged : 2023-09-22
#>
 

# Import-Module .\git_helper.psm1;

Write-Host "Load module 'git_init_env' ... "; 

#region begin DECLARATION
    
    #region begin TYPES
    #endregion

    #region begin USER_VARIABLES
        
    #endregion

    #region begin SYSTEM_VARIABLES

    [String] $psScriptFilePath = $MyInvocation.MyCommand.Definition; 
    [String] $psScriptFolderPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent; 
        
    #endregion

#endregion

#region begin FUNCTIONS

Function Initialize-GitEnv {

    # Select job
    $enumJobSteps_InitGitEnv = "JobSteps_InitGitEnv" -as [System.Type]; 
    [JobSteps_InitGitEnv[]] $selection = `
        Enter-Selection `
            -Enum $enumJobSteps_InitGitEnv `
            -Default $defaultJobSteps_InitGitEnv `
            -Title "Job Steps: Please Select"
    Write-Host ("Selected job steps: "); 
    $selection `
        | ForEach-Object {
            Write-Host ("- {0}" -f $_); 
        }   

    # Edit script
    If ($selection -contains [JobSteps_InitGitEnv]::OpenScriptEditor) {
        Open-ScriptEditor `
            -Filepath $psScriptFilePath 
    }
 
    # Install choco, allow global confirmation
    If ($selection -contains [JobSteps_InitGitEnv]::InstallChoco) {
        Write-Host ("- Install choco, allow global confirmation ... " ); 
        [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; 
        iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
        choco feature enable -n allowGlobalConfirmation; 
    }
    
    # Install git
    If ($selection -contains [JobSteps_InitGitEnv]::InstallGit) {
        Write-Host ("- Install git ... " ); 
        choco install git;         
    }

    # Install github desktop
    If ($selection -contains [JobSteps_InitGitEnv]::InstallGithubDesktop) {
        Write-Host ("- Install github desktop ... " ); 
        choco install github-desktop; 
    }

    # Install github client
    If ($selection -contains [JobSteps_InitGitEnv]::InstallGithubClient) {
        Write-Host ("- Install github client ... " ); 
        choco install gh; 
    }   

    # Install PowerShell 7
    If ($selection -contains [JobSteps_InitGitEnv]::InstallPowerShell7) {
        Write-Host ( "- Install 'PowerShell 7' ... " );  
        choco install powershell-core; 
    }   

    # Install VS Code
    If ($selection -contains [JobSteps]::InstallVsCode) {
        Write-Host ("- Install VS Code ... " ); 
        choco install vscode; 
    }
    
    # Restart
    If ($selection -contains [JobSteps_InitGitEnv]::Restart) {
        Write-Host ("- Restart ... " ); 
        Restart-Computer -Force; 
    }    

    # Abort
    If($selection -contains [JobSteps_InitGitEnv]::Abort) {
        Return; 
    }

    # Run another job
    $userInput = Read-Host("Run another job (y|n)? Press ENTER for 'y'"); 
    If("" -eq $userInput ){
        Initialize-GitEnv; 
    }

}

#endregion