Lib/get_git_repo.psm1

<#
    .SYNOPSIS
        Get NAF Repo
 
    .DESCRIPTION
        Get NAF Repo
 
    .NOTES
        Author : hillesheim@n-dimensions.de
        Version : 1.8
        DateLastChanged : 2024-11-11
#>
 

Using Module .\helper_common.psm1; 

Write-Host "Load nested module 'get_git_repo' (1.8) ... "; 

#region DECLARATION
    
    #region TYPES
    #endregion

    #region VARIABLES_USER

    [String] $gitLocalRepoFolder = "C:\_NAF"; 
    # [String] $gitAccessToken = "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";
        
    #endregion

    #region VARIABLES_SYSTEM

    [String] $gitRepoUrl = "https://github.com/lukashillesheim2/NAF"; 
    [String] $gitUserName = "lukashillesheim2"; 
    [String] $gitUserMail = "hillesheim@lh-itc.de"; 

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

    #endregion

#endregion

#region FUNCTIONS_PUBLIC

Function Get-GitRepo {

    # Select job
    $enumJobSteps_GetRepo = "JobSteps_GetRepo" -as [System.Type]; 
    [JobSteps_GetRepo[]] $selection = `
    Show-EnumSelection `
            -Enum $enumJobSteps_GetRepo `
            -Default $defaultJobSteps_GetRepo `
            -Title "Job Steps: Please Select"
    Write-Host ("Selected job steps: "); 
    $selection `
        | ForEach-Object {
            Write-Host ("- {0}" -f $_); 
        }   

    # Open script editor
    If ($selection -contains [JobSteps_GetRepo]::OpenScriptEditor) {
        Open-ScriptEditor `
            -Filepath $psScriptFilePath 
    }

    # Device auth
    If ($selection -contains [JobSteps_GetRepo]::GhSetDeviceAuth) {
        Write-Host ("The local device is to be authenticated by github client ... "); 
        gh auth login --git-protocol https --web; 
        # gh auth login;
    }
    
    # Set git config
    If ($selection -contains [JobSteps_GetRepo]::SetGitConfig) {
        Write-Host ("Set git configuration ... "); 
        Write-Host ("- User name: {0} " -f $gitUserName); 
        Write-Host ("- Mail: {0} " -f $gitUserMail); 
        
        git config --global user.name $gitUserName; 
        git config --global user.email $gitUserMail; 
    }

    # Clone repository
    If ($selection -contains [JobSteps_GetRepo]::GhCloneRepository) {
        Write-Host ("Clone repository ... "); 
        # .\git.exe clone $gitRepoUrl $gitLocalRepoFolder;
        gh gist clone $gitRepoUrl $gitLocalRepoFolder; 
    }

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

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

#endregion

#region FUNCTIONS_PRIVATE

#endregion

#region EXPORT

Export-ModuleMember -Function 'Get-GitRepo'

#endregion