bin/ci: Move get_token_from_default_dir to common

Moved the `get_token_from_default_dir` method to a common module for
shared use between `gitlab_gql.py` and `ci_run_n_monitor.py`. This
migration facilitates better code organization and potential future
reuse.

Signed-off-by: Guilherme Gallo <guilherme.gallo@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/27206>
This commit is contained in:
Guilherme Gallo
2024-01-22 20:10:04 -03:00
parent 50fcea9c34
commit 708a26c607
2 changed files with 24 additions and 15 deletions

View File

@@ -3,16 +3,17 @@
# Authors: # Authors:
# Tomeu Vizoso <tomeu.vizoso@collabora.com> # Tomeu Vizoso <tomeu.vizoso@collabora.com>
# David Heidelberg <david.heidelberg@collabora.com> # David Heidelberg <david.heidelberg@collabora.com>
# Guilherme Gallo <guilherme.gallo@collabora.com>
# #
# SPDX-License-Identifier: MIT # SPDX-License-Identifier: MIT
'''Shared functions between the scripts.''' '''Shared functions between the scripts.'''
import os import os
import time import time
from typing import Optional from pathlib import Path
GITLAB_URL = "https://gitlab.freedesktop.org" GITLAB_URL = "https://gitlab.freedesktop.org"
TOKEN_DIR = Path(os.getenv("XDG_CONFIG_HOME") or Path.home() / ".config")
def pretty_duration(seconds): def pretty_duration(seconds):
@@ -50,6 +51,26 @@ def get_gitlab_project(glab, name: str):
return glab.projects.get(project_path) return glab.projects.get(project_path)
def get_token_from_default_dir() -> str:
"""
Retrieves the GitLab token from the default directory.
Returns:
str: The path to the GitLab token file.
Raises:
FileNotFoundError: If the token file is not found.
"""
token_file = TOKEN_DIR / "gitlab-token"
try:
return str(token_file.resolve())
except FileNotFoundError as ex:
print(
f"Could not find {token_file}, please provide a token file as an argument"
)
raise ex
def read_token(token_arg: Optional[str]) -> str: def read_token(token_arg: Optional[str]) -> str:
"""pick token from args or file""" """pick token from args or file"""
if token_arg: if token_arg:

View File

@@ -9,7 +9,6 @@ from collections import OrderedDict
from copy import deepcopy from copy import deepcopy
from dataclasses import dataclass, field from dataclasses import dataclass, field
from itertools import accumulate from itertools import accumulate
from os import getenv
from pathlib import Path from pathlib import Path
from subprocess import check_output from subprocess import check_output
from textwrap import dedent from textwrap import dedent
@@ -17,6 +16,7 @@ from typing import Any, Iterable, Optional, Pattern, TypedDict, Union
import yaml import yaml
from filecache import DAY, filecache from filecache import DAY, filecache
from gitlab_common import get_token_from_default_dir
from gql import Client, gql from gql import Client, gql
from gql.transport.requests import RequestsHTTPTransport from gql.transport.requests import RequestsHTTPTransport
from graphql import DocumentNode from graphql import DocumentNode
@@ -34,18 +34,6 @@ Dag = dict[str, DagNode]
StageSeq = OrderedDict[str, set[str]] StageSeq = OrderedDict[str, set[str]]
TOKEN_DIR = Path(getenv("XDG_CONFIG_HOME") or Path.home() / ".config")
def get_token_from_default_dir() -> str:
token_file = TOKEN_DIR / "gitlab-token"
try:
return str(token_file.resolve())
except FileNotFoundError as ex:
print(
f"Could not find {token_file}, please provide a token file as an argument"
)
raise ex
def get_project_root_dir(): def get_project_root_dir():