<tool id="autobigs-cli" name="AutoBIGS.CLI" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
	<description>Automated MLST typing from PubMLST and InstitutPasteur.</description>
	<macros>
		<token name="@TOOL_VERSION@">0.5.0</token>
		<token name="@VERSION_SUFFIX@">0</token>
    	<import>autobigs-cli_macros.xml</import>
	    <expand macro="bio_tools"/>
	</macros>

	<requirements>
		<requirement type="package" version="@TOOL_VERSION@">autobigs-cli</requirement>
	</requirements>

	<command detect_errors="exit_code"><![CDATA[
			#if $mode.operation == "info":
				#if $select_info.retrieved == "schema":
					autoBIGS info $selected_schema --csv $info_out
				#else if $select_info.retrieved == "databases":
					autoBIGS info --retrieve-bigsdbs --csv $info_out
				#end if
			#else if $mode.operation == "st":
				autoBIGS st "$fastas" "$seqdefdb" $schema "$mlst_profiles_output"
			#end if
	]]></command>
	<inputs>
		<conditional name="mode">
			<param name="operation" label="Operation" type="select">
				<option value="info">Retrieve Database Information</option>
				<option value="st">Perform Sequence Typing</option>
			</param>
			<when value="info">
				<conditional name="select_info">
					<param name="retrieved" label="Schema or Database List" type="select">
						<option value="schema">Available Schemas for Database</option>
						<option value="databases">Available Databases</option>
					</param>
					<when value="schema">
						<repeat name="schemas" title="Schemas" min="1">
							<param name="selected_schema" argument="--retrieve-bigsdb-schemas" label="Retrieve schemas for" type="integer" min="0"/>
						</repeat>
					</when>
					<when value="databases">

					</when>
				</conditional>
			</when>
			<when value="st">
				<param name="fastas" label="FASTA files" type="data" format="fasta,fas,fa,fna,ffn,faa,mpfa,frn"/>
				<param name="seqdefdb" label="BIGSdb SeqDef Name" type="text" optional="false"/>
				<param name="schema" label="BIGSdb SeqDef Schema ID" type="integer" min="0"/>
				<param name="stop_on_fail" argument="--sof" label="Stop on failure to match" value="false" type="boolean"/>
			</when>
		</conditional>
	</inputs>
	<outputs>
		<data name="mlst_profiles_output" label="${tool.name} on ${on_string}" format="csv">
			<filter>mode['operation'] == "st"</filter>
		</data>
		<data name="info_out" label="${tool.name} supported databases/schemas" format="csv">
			<filter>mode['operation'] == "info"</filter>
		</data>
	</outputs>
    <tests>
        <test expect_num_outputs="1">
            <param name="operation" value="st" />
            <param name="fastas" value="tohama_I_bpertussis_wgs.fasta" />
            <param name="seqdefdb" value="pubmlst_bordetella_seqdef" />
            <param name="schema" value="3" />
            <output name="mlst_profiles_output" file="tohama_I_bpertussis_wgs_typed.csv" ftype="csv" />
        </test>
        <test expect_num_outputs="1">
            <param name="operation" value="info" />
            <param name="retrieved" value="databases" />
            <output name="info_out">
				<assert_contents>
					<has_line line="BIGSdb Names,Source"/>
					<has_line line="pubmlst_bordetella_seqdef,https://bigsdb.pasteur.fr/api"/>
				</assert_contents>
			</output>
        </test>
    </tests>
	<help><![CDATA[

usage: autoBIGS info [-h] [--retrieve-bigsdbs] [--retrieve-bigsdb-schemas LIST_BIGSDB_SCHEMAS [LIST_BIGSDB_SCHEMAS ...]]

Fetches the latest BIGSdb MLST database definitions.

options:
  -h, --help            show this help message and exit
  --retrieve-bigsdbs    Lists all known BIGSdb MLST databases (fetched from known APIs and cached).
  --retrieve-bigsdb-schemas SCHEMA_IDS
                        Lists the known schema IDs for a given BIGSdb sequence definition database name. The name, and then the ID of the schema is given.

usage: autoBIGS st [-h] [--exact] [--stop-on-fail] fastas [fastas ...] seqdefdb schema out

Returns MLST exact profile matches.

positional arguments:
  fastas                The FASTA files to process. Multiple can be listed.
  seqdefdb              The BIGSdb seqdef database to use for typing.
  schema                The BIGSdb seqdef database schema ID (integer) to use for typing.
  out                   The output CSV name (.csv will be appended).

options:
  -h, --help            show this help message and exit
  --stop-on-fail, -sof  Should the algorithm stop in the case there are no matches (or partial matches when
                        expecting exact matches).


	]]></help>
    <citations>
        <citation type="bibtex">
@book{Deng2025RealYHD,
title = {Syph-and-VPD-Lab/autoBIGS.cli},
url = {https://github.com/Syph-and-VPD-Lab/autoBIGS.cli},
author = {Deng, Harrison},
date = {2025-01-24},
year = {2025},
month = {1},
day = {24},
}
        </citation>
    </citations>
</tool>
