Private Async Function CreateRepoAsync(ByVal orgName As String, ByVal repoName As String) As Task
Using http = New HttpClient()
Dim url = $"http://localhost:3000/api/v1/orgs/{orgName}/repos?token={GITEA_TOKEN}"
Dim reqObj = New CreateOrgRepoRequest() With {
.Name = repoName,
.Description = "Planet-Source-Code repo",
.AutoInit = False,
.DefaultBranch = "master",
.PrivateRepo = False
}
Dim json = JsonConvert.SerializeObject(reqObj)
Dim content As HttpContent = New StringContent(json, Encoding.UTF8, "application/json")
Dim resp = Await http.PostAsync(url, content)
If resp.StatusCode <> HttpStatusCode.Created Then
'
' Handle errors (repo already exists, org not found, etc.)
'
End If
End Using
End Function
Private Sub ExecGitCommand(ByVal workDir As String, ByVal params As String)
Dim startInfo = New ProcessStartInfo("git", params)
startInfo.WorkingDirectory = workDir
startInfo.WindowStyle = ProcessWindowStyle.Hidden
Dim prc = Process.Start(startInfo)
prc.WaitForExit()
End Sub
'git init
'git add -A
'git commit -m "Add project files"
'git remote add origin http://localhost:3000/{organization}/Repo1.git
'git push -u origin master
Private Sub PrepareGitRepo(ByVal repoDir As String, ByVal origin As String)
ExecGitCommand(repoDir, "init")
ExecGitCommand(repoDir, "add -A")
ExecGitCommand(repoDir, "commit -m ""Add project files""")
ExecGitCommand(repoDir, $"remote add origin {origin}")
ExecGitCommand(repoDir, "push -u origin master")
End Sub
Private Sub PrepareAndInitGitRepos(ByVal reposRoot As String, ByVal orgName As String)
Dim baseUrl = "http://localhost:3000/{orgName}/"
For Each prjDir In Directory.GetDirectories(reposRoot)
Dim prjName = Path.GetFileName(prjDir)
CreateRepoAsync(orgName, prjName).Wait()
Dim origin = $"{baseUrl}{prjName}.git"
PrepareGitRepo(prjDir, origin)
Next
End Sub