oginstaller/non_graf_installer/python-installer/get_release.py

55 lines
1.9 KiB
Python

import os
from git import Repo
from packaging.version import Version
def get_highest_remote_tag(repo_path):
try:
# Abre el repositorio local
repo = Repo(repo_path)
# Asegúrate de que el repositorio tiene un remoto
if not repo.remotes:
return None # No hay remotos configurados
# Obtén el remoto por defecto (origin o el primero disponible)
remote = repo.remotes.origin
# Recupera los tags remotos
remote.fetch(tags=True)
remote_tags = [ref.name.split('/')[-1] for ref in repo.references if ref.path.startswith('refs/tags/')]
if not remote_tags:
return None # No hay tags remotos
# Ordena los tags remotos por versión
tags_sorted = sorted(remote_tags, key=lambda t: Version(t) if t.replace('.', '').isdigit() else Version('0.0.0'), reverse=True)
return tags_sorted[0] if tags_sorted else None
except Exception as e:
print(f"Error al procesar el repositorio {repo_path}: {e}")
return None
def process_selected_repositories(base_path, repo_names):
repo_highest_tags = {}
for repo_name in repo_names:
repo_path = os.path.join(base_path, repo_name)
if os.path.exists(repo_path) and os.path.isdir(os.path.join(repo_path, '.git')):
highest_tag = get_highest_remote_tag(repo_path)
repo_highest_tags[repo_name] = highest_tag
else:
repo_highest_tags[repo_name] = "No es un repositorio Git válido"
return repo_highest_tags
# Ruta base donde están los repositorios locales
base_path = "../"
# Lista de nombres de repositorios específicos
repo_names = [ "ogcore" , "oggui" , "ogboot" , "ogdhcp" , "ogrepository" ]
result = process_selected_repositories(base_path, repo_names)
# Muestra los resultados
for repo_name, tag in result.items():
print(f'{repo_name}:{tag}')