scientiflow-cli 0.4.0__tar.gz → 0.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/PKG-INFO +1 -1
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/pyproject.toml +1 -1
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/decode_and_execute.py +22 -4
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/LICENSE.md +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/README.md +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/__init__.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/__main__.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/__init__.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/auth_utils.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/login.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/logout.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/config.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/main.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/__init__.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/container_manager.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/get_jobs.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/__init__.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/auth_service.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/base_directory.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/executor.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/request_handler.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/rich_printer.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/status_updater.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/__init__.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/encryption.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/file_manager.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/logger.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/mock.py +0 -0
- {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/singularity.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "scientiflow-cli"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.1"
|
|
4
4
|
description = "CLI tool for scientiflow. This application runs on the client side, decodes pipelines, and executes them in the configured order!"
|
|
5
5
|
authors = ["ScientiFlow <scientiflow@gmail.com>"]
|
|
6
6
|
license = "Proprietary"
|
{scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/decode_and_execute.py
RENAMED
|
@@ -109,16 +109,34 @@ class PipelineExecutor:
|
|
|
109
109
|
except Exception as e:
|
|
110
110
|
print(f"[ERROR] Failed to update terminal output: {e}")
|
|
111
111
|
|
|
112
|
+
# def replace_variables(self, command: str) -> str:
|
|
113
|
+
# """Replace placeholders like ${VAR} with environment values."""
|
|
114
|
+
# return re.sub(r'\$\{(\w+)\}', lambda m: self.environment_variables.get(m.group(1), m.group(0)), command)
|
|
115
|
+
|
|
116
|
+
# def replace_variables(self, command: str) -> str:
|
|
117
|
+
# def replacer(match):
|
|
118
|
+
# key = match.group(1)
|
|
119
|
+
# value = self.environment_variables.get(key, match.group(0))
|
|
120
|
+
# if isinstance(value, list):
|
|
121
|
+
# # Convert list to safe, space-separated string
|
|
122
|
+
# return " ".join(shlex.quote(str(v)) for v in value)
|
|
123
|
+
# return shlex.quote(str(value)) if isinstance(value, str) else str(value)
|
|
124
|
+
# replaced_command = re.sub(r'\$\{(\w+)\}', replacer, command)
|
|
125
|
+
# return replaced_command
|
|
126
|
+
|
|
112
127
|
def replace_variables(self, command: str) -> str:
|
|
113
128
|
def replacer(match):
|
|
114
129
|
key = match.group(1)
|
|
115
130
|
value = self.environment_variables.get(key, match.group(0))
|
|
116
131
|
if isinstance(value, list):
|
|
117
|
-
#
|
|
132
|
+
# ✅ Only modify behavior for lists — safely join them
|
|
118
133
|
return " ".join(shlex.quote(str(v)) for v in value)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
134
|
+
# ✅ For strings, keep old behavior (no quoting)
|
|
135
|
+
return value if isinstance(value, str) else str(value)
|
|
136
|
+
|
|
137
|
+
replaced_command = re.sub(r'\$\{(\w+)\}', replacer, command)
|
|
138
|
+
return replaced_command
|
|
139
|
+
|
|
122
140
|
|
|
123
141
|
def execute_command(self, command: str):
|
|
124
142
|
"""Run the command in the terminal, display output in real-time, and log the captured output."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/container_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|