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.
Files changed (29) hide show
  1. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/PKG-INFO +1 -1
  2. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/pyproject.toml +1 -1
  3. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/decode_and_execute.py +22 -4
  4. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/LICENSE.md +0 -0
  5. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/README.md +0 -0
  6. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/__init__.py +0 -0
  7. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/__main__.py +0 -0
  8. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/__init__.py +0 -0
  9. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/auth_utils.py +0 -0
  10. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/login.py +0 -0
  11. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/cli/logout.py +0 -0
  12. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/config.py +0 -0
  13. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/main.py +0 -0
  14. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/__init__.py +0 -0
  15. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/container_manager.py +0 -0
  16. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/pipeline/get_jobs.py +0 -0
  17. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/__init__.py +0 -0
  18. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/auth_service.py +0 -0
  19. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/base_directory.py +0 -0
  20. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/executor.py +0 -0
  21. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/request_handler.py +0 -0
  22. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/rich_printer.py +0 -0
  23. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/services/status_updater.py +0 -0
  24. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/__init__.py +0 -0
  25. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/encryption.py +0 -0
  26. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/file_manager.py +0 -0
  27. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/logger.py +0 -0
  28. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/mock.py +0 -0
  29. {scientiflow_cli-0.4.0 → scientiflow_cli-0.4.1}/scientiflow_cli/utils/singularity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scientiflow-cli
3
- Version: 0.4.0
3
+ Version: 0.4.1
4
4
  Summary: CLI tool for scientiflow. This application runs on the client side, decodes pipelines, and executes them in the configured order!
5
5
  License: Proprietary
6
6
  Author: ScientiFlow
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "scientiflow-cli"
3
- version = "0.4.0"
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"
@@ -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
- # Convert list to safe, space-separated string
132
+ # Only modify behavior for lists — safely join them
118
133
  return " ".join(shlex.quote(str(v)) for v in value)
119
- return shlex.quote(str(value)) if isinstance(value, str) else str(value)
120
- t = re.sub(r'\$\{(\w+)\}', replacer, command)
121
- return t
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."""