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:
@@ -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:
|
||||||
|
@@ -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():
|
||||||
|
Reference in New Issue
Block a user