ProductivityTools.CloneGithubRepositories.psm1
function CloneRepository($sshurl, $directoryName) { git clone $sshurl $directoryName } function CloneRepositories($repositories) { foreach ($repository in $repositories) { $repoName = $repository.name #Write-Host $repoName; if ($repoName -eq ".github") { $repoName=$repository.full_name.replace('/','') } if ($(Test-Path $repoName) -eq $true) { Write-Host "Directory $repoName exists. - Skipping." -ForegroundColor Yellow } else { $sshurl = $repository.ssh_url CloneRepository $sshurl $repoName Write-Host "Repository $repoName cloned" -ForegroundColor Green } } } function GetRepositories($token) { $GitHubUri = "https://api.github.com/user/repos" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $i = 1; do { $paginateduri = $GitHubUri + "?page=" + $i Write-Host "Requesting repositories with address $paginateduri" -ForegroundColor DarkGreen $repos = Invoke-WebRequest -Uri $paginateduri -Headers @{"Authorization" = "Bearer $token" } $repositories = $repos | ConvertFrom-Json CloneRepositories $repositories $i++ }while ($repositories.Count -gt 0) } function Clone-GithubRepositories($TargetDirectory, $Token) { Push-Location if ((Test-Path $TargetDirectory) -eq $false) { New-Item $TargetDirectory -ItemType Directory } cd $TargetDirectory GetRepositories $Token Pop-Location } Export-ModuleMember Clone-GithubRepositories |