Compare commits
1 commit
until-dest
...
main
Author | SHA1 | Date | |
---|---|---|---|
3ac7ac846c |
1 changed files with 52 additions and 0 deletions
52
migrate_gt_to_fj.exs
Normal file
52
migrate_gt_to_fj.exs
Normal file
|
@ -0,0 +1,52 @@
|
|||
Mix.install([
|
||||
{:req, "~> 0.5.10"}
|
||||
]);
|
||||
|
||||
forgejo_token = System.get_env("FORGEJO_TOKEN")
|
||||
gitea_token = System.get_env("GITEA_TOKEN")
|
||||
gt_host = System.get_env("GITEA_HOST")
|
||||
fj_host = System.get_env("FORGEJO_HOST")
|
||||
gt_uid = System.get_env("GITEA_UID")
|
||||
|
||||
defmodule Forgejo do
|
||||
require Req
|
||||
|
||||
def migrate_all(uid, gt_host, gt_token, fj_host, fj_token) do
|
||||
url = "#{gt_host}/api/v1/repos/search"
|
||||
params = %{"uid" => uid}
|
||||
|
||||
case Req.get!(url, params: params, headers: %{"Authorization" => "bearer #{gt_token}"} ) do
|
||||
%{status: 200, body: body} ->
|
||||
repos = body["data"]
|
||||
for repo <- repos do
|
||||
migrate(repo, host, gt_token, fj_host, fj_token)
|
||||
end
|
||||
|
||||
{:error, error} ->
|
||||
IO.puts("Error fetching repos: #{inspect(error)}")
|
||||
end
|
||||
end
|
||||
|
||||
def migrate(repo, gt_token, fj_host, fj_token) do
|
||||
clone = repo["clone_url"]
|
||||
name = repo["name"]
|
||||
private? = repo["private"]
|
||||
|
||||
migration = %{
|
||||
"private" => private?,
|
||||
"clone_addr" => clone,
|
||||
"auth_token" => gt_token,
|
||||
"pull_requests" => true,
|
||||
"lfs" => true,
|
||||
"releases" => true,
|
||||
"repo_name" => name,
|
||||
"repo_owner" => "caleb",
|
||||
"service" => "gitea"
|
||||
} |> :json.encode()
|
||||
|
||||
Req.post!("#{fj_host}/api/v1/repos/migrate", body: migration, headers: %{"Authorization" => "bearer #{fj_token}", "Content-Type" => "application/json"} )
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Forgejo.migrate_all(gt_uid, gt_host, gitea_token, fj_host, forgejo_token)
|
Loading…
Add table
Reference in a new issue