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}')