Merge pull request 'feature: agrego implementacion de github remote api' (#2) from feature/add-github-remote-api into main

Reviewed-on: #2
This commit is contained in:
jt
2026-07-09 00:28:52 +00:00
2 changed files with 30 additions and 5 deletions
+2 -1
View File
@@ -47,7 +47,8 @@ El comando solicitará 2 opciones:
automáticamente. Por el momento, se soportan los siguientes remotos:
- [x] Bitbucket
- [ ] Github: planeado
- [x] Github
- [x] Gitea
La configuración del remoto requiere tener un Access Token para poder crear los PRs automáticamente.
El mismo se puede crear desde el repositorio al que se quiere dar acceso: *"Repository settings" >
+28 -4
View File
@@ -1,9 +1,10 @@
import requests
from git_flow import GitFlowError
from git_flow.remote.base import RemoteAPI
class GithubRemoteAPI(RemoteAPI):
API_ENDPOINT = "https://github.com"
API_ENDPOINT = "https://api.github.com/repos"
def create_pull_request(
self,
@@ -13,10 +14,33 @@ class GithubRemoteAPI(RemoteAPI):
description: str | None = None,
close_source_branch: bool = True
) -> str:
raise GitFlowError("not implemented yet!")
response = requests.post(
self.get_endpoint("/pulls"),
headers=self.get_headers(),
json={
"title": title,
"body": description,
"head": source,
"base": destination,
},
)
if response.ok:
return "PR creado exitosamente: " + response.json()["html_url"]
else:
raise GitFlowError("Ocurrió un error al crear el PR: " + response.text)
def create_tag(self, tag: str, commit: str) -> str:
raise GitFlowError("not implemented yet!")
response = requests.post(
self.get_endpoint("/git/refs"),
headers=self.get_headers(),
json={"ref": f"refs/tags/{tag}", "sha": commit},
)
if response.ok:
return "Tag creado exitosamente: " + tag
else:
raise GitFlowError("Ocurrió un error al crear el tag: " + response.text)
def get_endpoint(self, resource: str) -> str:
return GithubRemoteAPI.API_ENDPOINT
return f"{GithubRemoteAPI.API_ENDPOINT}/{self.repository}{resource}"