diff --git a/CHANGELOG.md b/CHANGELOG.md index a6c3fe4a..7000cc9b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ ## lifebit-ai/cloudos-cli: changelog +## v2.90.1 (2026-05-06) + +### Patch + +- Fixes `--array-parameter` for multiple occurrences + ## v2.90.0 (2026-04-29) ### Feat diff --git a/cloudos_cli/_version.py b/cloudos_cli/_version.py index 43a85d05..a49332fb 100644 --- a/cloudos_cli/_version.py +++ b/cloudos_cli/_version.py @@ -1 +1 @@ -__version__ = '2.90.0' +__version__ = '2.90.1' diff --git a/cloudos_cli/bash/cli.py b/cloudos_cli/bash/cli.py index 2639ecf0..c70eb68d 100644 --- a/cloudos_cli/bash/cli.py +++ b/cloudos_cli/bash/cli.py @@ -341,6 +341,7 @@ def run_bash_job(ctx, is_flag=True) @click.option('-a', '--array-parameter', multiple=True, + required=True, help=('A single parameter to pass to the job call only for specifying array columns. ' + 'It should be in the following form: parameter_name=array_file_column_name. E.g.: ' + '-a --test=value or -a -test=value or -a test=value or -a =value (for no prefix). ' + diff --git a/cloudos_cli/jobs/job.py b/cloudos_cli/jobs/job.py index 58b434a4..78175467 100644 --- a/cloudos_cli/jobs/job.py +++ b/cloudos_cli/jobs/job.py @@ -469,8 +469,8 @@ def convert_nextflow_to_json(self, # array file specific parameters (from --array-parameter) if array_parameter is not None and len(array_parameter) > 0: - ap_param = Job.split_array_file_params(array_parameter, workflow_type, array_file_header) - workflow_params.append(ap_param) + ap_params = Job.split_array_file_params(array_parameter, workflow_type, array_file_header) + workflow_params.extend(ap_params) elif array_file_header is not None and (array_parameter is None or len(array_parameter) == 0): raise ValueError('At least one array file column must be added to the parameters') @@ -889,8 +889,8 @@ def split_array_file_params(array_parameter, workflow_type, array_file_header): Returns ------- - dict - A dictionary containing processed parameter details, including: + list + A list of dictionaries, each containing processed parameter details, including: - prefix (str): The prefix for the parameter (e.g., "--" or "-"). - name (str): The name of the parameter with leading dashes stripped. - parameterKind (str): The kind of parameter, set to "arrayFileColumn". @@ -902,7 +902,7 @@ def split_array_file_params(array_parameter, workflow_type, array_file_header): ValueError If an array parameter does not contain a '=' character or is improperly formatted. """ - ap_param = dict() + ap_params = [] for ap in array_parameter: ap_split = ap.split('=') if len(ap_split) < 2: @@ -917,10 +917,11 @@ def split_array_file_params(array_parameter, workflow_type, array_file_header): "name": ap_name.lstrip('-'), "parameterKind": "arrayFileColumn", "columnName": ap_value, - "columnIndex": next((item["index"] for item in array_file_header if item["name"] == "id"), 0) + "columnIndex": next((item["index"] for item in array_file_header if item["name"] == ap_value), 0) } + ap_params.append(ap_param) - return ap_param + return ap_params def docker_workflow_param_processing(self, param, project_name): """