From d8ab00aff06edb92e9c20aefd5b4deaa3e76845d Mon Sep 17 00:00:00 2001 From: Eric Danielson Date: Wed, 5 Mar 2025 13:05:18 -0800 Subject: [PATCH 1/4] Take default component repo, branch, and org from environment variables --- nf_core/components/components_utils.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/nf_core/components/components_utils.py b/nf_core/components/components_utils.py index 3882b7aa1..0e120b24b 100644 --- a/nf_core/components/components_utils.py +++ b/nf_core/components/components_utils.py @@ -1,4 +1,5 @@ import logging +import os import re from pathlib import Path from typing import TYPE_CHECKING, Dict, List, Optional, Tuple, Union @@ -15,9 +16,9 @@ log = logging.getLogger(__name__) # Constants for the nf-core/modules repo used throughout the module files -NF_CORE_MODULES_NAME = "nf-core" -NF_CORE_MODULES_REMOTE = "https://github.com/nf-core/modules.git" -NF_CORE_MODULES_DEFAULT_BRANCH = "master" +NF_CORE_MODULES_NAME = os.environ.get("NF_CORE_MODULES_NAME", "nf-core") +NF_CORE_MODULES_REMOTE = os.environ.get("NF_CORE_MODULES_REMOTE", "https://github.com/nf-core/modules.git") +NF_CORE_MODULES_DEFAULT_BRANCH = os.environ.get("NF_CORE_MODULES_DEFAULT_BRANCH", "master") def get_repo_info(directory: Path, use_prompt: Optional[bool] = True) -> Tuple[Path, Optional[str], str]: From 109291e4f30da7c5bb6111fc69bf5e7140cfb54f Mon Sep 17 00:00:00 2001 From: Eric Danielson Date: Wed, 5 Mar 2025 21:54:03 +0000 Subject: [PATCH 2/4] Add test for using the environment variables --- tests/components/test_components_utils.py | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/components/test_components_utils.py b/tests/components/test_components_utils.py index 19fa388d7..31088f28a 100644 --- a/tests/components/test_components_utils.py +++ b/tests/components/test_components_utils.py @@ -1,3 +1,7 @@ +import importlib +import os +from unittest import mock + import responses import nf_core.components.components_utils @@ -55,3 +59,27 @@ def test_get_biotools_ch_info_warn(self): response = nf_core.components.components_utils.get_biotools_response("bpipe") nf_core.components.components_utils.get_channel_info_from_biotools(response, "test") assert "Could not find an EDAM ontology term for 'test'" in self.caplog.text + + def test_environment_variables_override(self): + """Test environment variables override default values""" + # Define environment variables to mock + mock_env = { + "NF_CORE_MODULES_NAME": "custom-name", + "NF_CORE_MODULES_REMOTE": "https://custom-repo.git", + "NF_CORE_MODULES_DEFAULT_BRANCH": "custom-branch", + } + + # Use mock as a context manager + try: + with mock.patch.dict(os.environ, mock_env): + importlib.reload(nf_core.components.components_utils) + # Check custom values are used + assert nf_core.components.components_utils.NF_CORE_MODULES_NAME == mock_env["NF_CORE_MODULES_NAME"] + assert nf_core.components.components_utils.NF_CORE_MODULES_REMOTE == mock_env["NF_CORE_MODULES_REMOTE"] + assert ( + nf_core.components.components_utils.NF_CORE_MODULES_DEFAULT_BRANCH + == mock_env["NF_CORE_MODULES_DEFAULT_BRANCH"] + ) + finally: + # Restore original values + importlib.reload(nf_core.components.components_utils) From cf27f83a3553ccb22cd866c1613de2aa7081d1a0 Mon Sep 17 00:00:00 2001 From: nf-core-bot Date: Wed, 5 Mar 2025 22:06:35 +0000 Subject: [PATCH 3/4] [automated] Update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 40a25cba0..82fed64b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,7 @@ ### Modules - increase meta index for multiple input channels ([#3463](https://github.com/nf-core/tools/pull/3463)) +- Configure the default module repository, branch, and path from environment variables. ([#3481](https://github.com/nf-core/tools/pull/3481)) ### Subworkflows From b221780cac2968bdbbe355f8f7b6c116ab2d5b27 Mon Sep 17 00:00:00 2001 From: Eric Danielson Date: Wed, 5 Mar 2025 22:20:57 +0000 Subject: [PATCH 4/4] Clean up comments --- tests/components/test_components_utils.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tests/components/test_components_utils.py b/tests/components/test_components_utils.py index 31088f28a..0da8edf8a 100644 --- a/tests/components/test_components_utils.py +++ b/tests/components/test_components_utils.py @@ -62,18 +62,15 @@ def test_get_biotools_ch_info_warn(self): def test_environment_variables_override(self): """Test environment variables override default values""" - # Define environment variables to mock mock_env = { "NF_CORE_MODULES_NAME": "custom-name", "NF_CORE_MODULES_REMOTE": "https://custom-repo.git", "NF_CORE_MODULES_DEFAULT_BRANCH": "custom-branch", } - # Use mock as a context manager try: with mock.patch.dict(os.environ, mock_env): importlib.reload(nf_core.components.components_utils) - # Check custom values are used assert nf_core.components.components_utils.NF_CORE_MODULES_NAME == mock_env["NF_CORE_MODULES_NAME"] assert nf_core.components.components_utils.NF_CORE_MODULES_REMOTE == mock_env["NF_CORE_MODULES_REMOTE"] assert ( @@ -81,5 +78,4 @@ def test_environment_variables_override(self): == mock_env["NF_CORE_MODULES_DEFAULT_BRANCH"] ) finally: - # Restore original values importlib.reload(nf_core.components.components_utils)