1
Fork 0
mirror of https://github.com/RGBCube/GitHub2Forgejo synced 2025-07-25 04:07:44 +00:00

Some cleaning up

This commit is contained in:
RGBCube 2024-05-28 16:02:40 +03:00
parent f157b3c077
commit 6b96755546
Signed by: RGBCube
SSH key fingerprint: SHA256:CzqbPcfwt+GxFYNnFVCqoN5Itn4YFrshg1TrnACpA5M

View file

@ -29,31 +29,33 @@ def main [] {
let strategy = $env | get -i STRATEGY | or-default { [ Mirrored Cloned ] | input list $"(ansi cyan)Should the repos be mirrored, or just cloned once?(ansi reset)" } | str downcase let strategy = $env | get -i STRATEGY | or-default { [ Mirrored Cloned ] | input list $"(ansi cyan)Should the repos be mirrored, or just cloned once?(ansi reset)" } | str downcase
let force_sync = $env | get -i FORCE_SYNC | or-default { [ "Yup, delete them" Nope ] | input list $"(ansi yellow)Should mirrored repos that don't have a GitHub source anymore be deleted?(ansi reset)" } | $in != "Nope" let force_sync = $env | get -i FORCE_SYNC | or-default { [ "Yup, delete them" Nope ] | input list $"(ansi yellow)Should mirrored repos that don't have a GitHub source anymore be deleted?(ansi reset)" } | $in != "Nope"
def get-repos [page_nr: number] { let github_repos = do {
if $github_token != "" { def get-repos-at [page_nr: number] {
(http get $"https://api.github.com/user/repos?per_page=100&page=($page_nr)" if $github_token != "" {
-H [ Authorization $"token ($github_token)" ]) (http get $"https://api.github.com/user/repos?per_page=100&page=($page_nr)"
} else { -H [ Authorization $"token ($github_token)" ])
http get $"https://api.github.com/users/($github_user)/repos?per_page=100?page=($page_nr)" } else {
exit http get $"https://api.github.com/users/($github_user)/repos?per_page=100?page=($page_nr)"
exit
}
} }
}
mut github_repos = [] mut repos = []
mut github_repo_page_nr = 1 mut page_nr = 1
loop { loop {
let next_repos = get-repos $github_repo_page_nr let next = get-repos-at $page_nr
$github_repos = ($github_repos | append $next_repos) $repos = ($repos | append $next)
if ($next_repos | length) >= 100 { if ($next | length) >= 100 {
$github_repo_page_nr += 1 $page_nr += 1
} else { } else {
break break
}
} }
}
$github_repos = ($github_repos | filter { get owner.login | $in == $github_user }) $repos | filter { get owner.login | $in == $github_user }
}
# Delete mirrored repos that do not exist on GitHub. # Delete mirrored repos that do not exist on GitHub.
if $force_sync { if $force_sync {
@ -67,10 +69,10 @@ def main [] {
let gitea_not_on_github = ($gitea_mirrored_repos | filter { not ($in.name in $github_repo_names) }) let gitea_not_on_github = ($gitea_mirrored_repos | filter { not ($in.name in $github_repo_names) })
$gitea_not_on_github | each {|repo| $gitea_not_on_github | each {|gitea_repo|
print --no-newline $"(ansi red)Deleting ($gitea_url)/($repo.full_name) because the mirror source doesn't exist on GitHub anymore...(ansi reset)" print --no-newline $"(ansi red)Deleting ($gitea_url)/($gitea_repo.full_name) because the mirror source doesn't exist on GitHub anymore...(ansi reset)"
(http delete $"($gitea_url)/api/v1/repos/($repo.full_name)" (http delete $"($gitea_url)/api/v1/repos/($gitea_repo.full_name)"
-H [ Authorization $"token ($gitea_token)" ]) -H [ Authorization $"token ($gitea_token)" ])
print $" (ansi green)Success!(ansi reset)" print $" (ansi green)Success!(ansi reset)"
@ -78,14 +80,14 @@ def main [] {
} }
# Mirror repos that do exist on GitHub to Gitea. # Mirror repos that do exist on GitHub to Gitea.
$github_repos | each {|repo| $github_repos | each {|github_repo|
let url = if not $repo.private { let github_repo_url = if not $github_repo.private {
$repo.html_url $github_repo.html_url
} else { } else {
$"https://($github_token)@github.com/($github_user)/($repo.name)" $"https://($github_token)@github.com/($github_user)/($github_repo.name)"
} }
print --no-newline $"(ansi blue)($strategy | str capitalize | str replace "ed" "ing") ([ public private ] | get ($repo.private | into int)) repository ($url) to ($gitea_url)/($gitea_user)/($repo.name)...(ansi reset)" print --no-newline $"(ansi blue)($strategy | str capitalize | str replace "ed" "ing") ([ public private ] | get ($github_repo.private | into int)) repository ($github_repo_url) to ($gitea_url)/($gitea_user)/($github_repo.name)...(ansi reset)"
let response = ( let response = (
http post $"($gitea_url)/api/v1/repos/migrate" http post $"($gitea_url)/api/v1/repos/migrate"
@ -93,16 +95,17 @@ def main [] {
-t application/json -t application/json
-H [ Authorization $"token ($gitea_token)" ] -H [ Authorization $"token ($gitea_token)" ]
{ {
clone_addr: $url clone_addr: $github_repo_url
mirror: ($strategy != "cloned") mirror: ($strategy != "cloned")
private: $repo.private private: $github_repo.private
repo_owner: $gitea_user repo_owner: $gitea_user
repo_name: $repo.name repo_name: $github_repo.name
} }
) )
let error_message = ($response | get -i message) let error_message = ($response | get -i message)
if ($error_message != null and $error_message =~ "already exists") { if ($error_message != null and $error_message =~ "already exists") {
print $" (ansi yellow)Already mirrored!(ansi reset)" print $" (ansi yellow)Already mirrored!(ansi reset)"
} else if ($error_message != null) { } else if ($error_message != null) {