view toolfactory/toolfactory.xml @ 1:0183cad9d13b draft

planemo upload
author fubar
date Thu, 22 Feb 2024 10:48:01 +0000
parents
children
line wrap: on
line source

<tool id="toolfactory" name="toolfactory" version="3.0" profile="22.05" >
  <description>Scripts into tools v3.0</description>
  <macros>
      <xml name="dataColumn">
            <param name="param_dataref" type="text" value="" label="Input data name to use as source of data column names"/>
            <param name="param_multiple" type="boolean" truevalue="1" falsevalue="" value = ""
                label="Allow user to make multiple selections" help="default is single selection"/>
            <param name="param_value" type="text" value="" label="Default column value">
          </param>
      </xml>
      <xml name="singleText">
            <param name="param_value" type="text" value="" label="Default text value">
              <sanitizer invalid_char="_">
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
           </param>
      </xml>
      <xml name="singleInt">
            <param name="param_value" type="integer" value="" label="Default integer value" >
          </param>
      </xml>
      <xml name="singleFloat">
            <param name="param_value" type="float" value="" label="Default value">
          </param>
      </xml>
     <xml name="singleBoolean">
            <param name="param_value" type="boolean" value="" label="Default value" />
            <param name="truevalue" type="text" value="True" label="Command line value when True" />
            <param name="falsevalue" type="boolean" value="True" label="Command line value when False" />
      </xml>
      <xml name="selectText">
          <repeat name="selectTexts" title="Add each option to be presented" min="2" default="2"
             help="Each text added here will also have  a value to be emitted on the command line when the text is chosen">
            <param name="select_text" type="text" value="" label="Explanatory text the user will see for this choice" >
              <sanitizer invalid_char="_">
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
          </param>
          <param name="select_value" type="text" value="" label="Value for the command line when the user selects this option">
              <sanitizer invalid_char="_">
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
          </param>
          </repeat>
      </xml>
      <xml name="selectFlag">
          <repeat name="selectFlags" title="Add mutually exclusive flag selection" min="2" default="2"
             help="Supply the corresponding mutually exclusive flag as it should appear on the command line if each option is selected">
            <param name="select_text" type="text" value="" label="Explanatory text the user will see for this choice" >
          </param>
          <param name="select_value" type="text" value="" label="Value for the command line when the user selects this option"
             help="Supply the corresponding mutually exclusive flag as it should appear on the command line if each option is selected">
          </param>
          </repeat>
      </xml>
     <xml name="tool_metadata">
        <param name="tool_version" label="Tool Version - bump this to warn users trying to redo old analyses" type="text"
            help="If you change your script and regenerate the 'same' tool, you should inform Galaxy (and users) by changing (bumping is traditional) this number"/>
        <param name="tool_desc" label="Tool Synopsis" type="text" value=""
            help="Supply a brief tool description for the Galaxy tool menu entry">
         </param>
         <param name="help_text" label="Tool form documentation and help text for users" type="text" area="true"
            value="**What it Does**"
             help="Supply user documentation to appear on the new tool form as reStructured text - http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html" >
              <sanitizer>
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
        </param>
        <repeat name="citations" title="Citation">
                <conditional name="citation_type">
                    <param name="type" type="select" display="radio" label="Citation Type">
                        <option value="doi">DOI</option>
                        <option value="bibtex">BibTeX</option>
                    </param>
                    <when value="doi">
                        <param name="doi" label="DOI" type="text"
                            help="Supply a DOI (e.g. doi: 10.1111/j.1740-9713.2007.00258.x) to be cited when this tool is used in published research." >
                           <sanitizer>
                                <valid initial="string.printable" >
                                </valid>
                           </sanitizer>
                        </param>
                    </when>
                    <when value="bibtex">
                        <param name="bibtex" label="BibTex" type="text" area="true"
                            help="Supply a BibTex entry that should be cited when this tool is used in published research." value="" >
                            <sanitizer>
                                <valid initial="string.printable" >
                                </valid>
                           </sanitizer>
                        </param>
                    </when>
                </conditional>
        </repeat>
     </xml>
     <xml name="io">
     <section name="io" title="Input and output files" expanded="true">
        <repeat name="history_inputs" title="Inputs" min="0"
             help="Input data files to pass on the command line to the executable. USE SMALL SAMPLES for the new tool's test.
             Prompts will form a history item selector as input for users of this new tool">
            <param name="input_files" type="data" format="data" label="Select an input file from your history" multiple="true"
               help="Note that multiple inputs can be selected if this input parameter will allow multiple selections"/>
            <param name="input_formats" type="select" multiple="true" label="Select the datatype(s) that your tool/script accepts as input"
              help="If your datatype is not listed here, it has to be added in galaxy's datatypes_conf.xml" value="tabular">
               <options from_parameter="tool.app.datatypes_registry.upload_file_formats">
                <column name="value" index="0"/>
               </options>
            </param>
            <param name="input_label" type="text" value="" label="This will become the user prompt for the form so please make it informative" >
            </param>
            <param name="input_help" type="text" value="" label="This will become help text on the form." >
            </param>
            <param name="input_CL" type="text" label="Positional: ordinal integer. Argparse: argument name. STDIN if the executable/script expects it"
              help="If you will pass positional parameters, enter the integer ordinal for this parameter. If Argparse style, '--' will be prepended or '-' if
              single character">
            </param>
            <param name="input_required" type="select" label="Input mode - optional, required, repeated optional or 1 or more repeated required.">
                <option value="required" selected="true">Required single input</option>
                <option value="optional">Optional single input</option>
                <option value="required1">Required. 1 or more repeats</option>
                <option value="optional1">Optional. 1 or more repeats</option>
            </param>
        </repeat>
        <repeat name="history_outputs" min="0" title="Outputs"
             help="New history items output by the executable to appear in the user history after the tool runs. The name will become a history item for
             users of the new tool you are making containing one of it's outputs">
            <param name="history_name" type="text" label="Output Name" optional="false"
              help="Name used for this output in history. No spaces. Digits and letters only please. Argparse should look for this name on the command line.">
              <sanitizer invalid_char="_">
                <valid initial="string.ascii_letters,string.digits" >
                    <add value="_" />
                </valid>
              </sanitizer>
            </param>
            <param name="history_label" type="text" label="Output label. Allows template substitution"  value=""
                help="Label used for this output - for example 'Plotlytabular $title on $input_tab.element_identifier' where variable templates are informative." >
              <sanitizer>
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
            </param>
            <param name="history_format" type="select" multiple="false" label="Select the datatype for this output"
              help="If your datatype is not listed here, it has to be added in galaxy's datatypes_conf.xml" value="tabular">
               <options from_parameter="tool.app.datatypes_registry.upload_file_formats">
                <column name="value" index="0"/>
               </options>
            </param>
            <param name="history_CL" type="text"  label="Position"
              help="Positional: ordinal integer or 'STDOUT' if '>' required. Ignored if argparse because output name is used.
              If positional parameters, enter the integer ordinal expected for this parameter. If argparse, ignore unless STDOUT needed" value=""/>
            <param name="history_test" type="text"  label="Output test criteria"
              help="Pass/fail decision criterion for this output compared to test generation. Accepted variants include diff:100, sim_size:100 and sim_size:0.1"
              value="diff:0"/>
            <repeat name="history_whens" title="Optional change_format on this data" min="0" help="ADVANCED option only!! Easy to get wrong!">
              <param name="history_when" type="text"  label="Add a 'when' expression for this output so format can depend on another parameter"
              help="Supply the three key=value pairs needed as shown - no quotes: input=image_format value=small_png format=png" value="">
              </param>
            </repeat>
        </repeat>
        <repeat name="collection_outputs" title="Output Collections" min="0"
             help="New history collections to appear in the user history after the tool runs. Hides outputs not needed for downstream tools such as
              images and intermediate reports." default="0">
            <param name="name" type="text" label="Name"
              help="for new collection with all outputs not individually passed to history outputs. No spaces! Script MUST create and fill a directory
              with the same name and the tool test MUST be overwritten - see the plotter example for hints">
            </param>
            <param name="kind" type="select" multiple="false" label="Select the kind of collection for this output"
              help="">
                <option value="list" selected="true">List</option>
                <option value="paired">Paired</option>
                <option value="list:paired">List of paired</option>
            </param>
            <param name="label"  type="text" label="Collection label. Allows template substitution"  value=""
                help="Label used for this output - for example 'Plotlytabular $title on $input_tab.element_identifier' where variable templates are informative." >
              <sanitizer>
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
            </param>
            <param name="discover" type="text"  label="Discover datasets expression" help="__name_and_ext__ should catch all filenames with extensions"
            value="__name_and_ext__"/>
        </repeat>

        </section>
     </xml>
     <xml name="additparam">
     <section name="addparam" title="Arguments" help="Executable or script settings passed on the command line other than I/O files" expanded="true">
        <param name="edit_params" type="select" display="radio" label="Make these settings on the generated tool form user editable?"
             help="If no, users will NOT be able to alter any additional parameters. If yes, these will appear on the tool form as text fields with no validation or sanitizing">
            <option value="yes" selected="true">Yes, allow user to edit all additional parameters on the generated tool form</option>
            <option value="no">No - use the fixed values for all additional parameters - no user editing</option>
        </param>
        <repeat name="additional_parameters" title="Command Line Parameters" min="0"
             help="Command line settings for the user to pass to the executable. See examples below to see how these can be parsed by scripts in the various languages">
          <param name="param_name" type="text" value="" label="Name for this parameter. Underscore, letters and digits only. No spaces allowed">
            <sanitizer invalid_char="_">
                <valid initial="string.ascii_letters,string.digits">
                    <add value="_"/>
                </valid>
            </sanitizer>
          </param>
          <conditional name="ap_type">
          <param name="param_type" type="select" label="Type for this parameter">
            <option value="text" selected="true">Text string</option>
            <option value="integer">Integer</option>
            <option value="float">Float</option>
            <option value="boolean">Boolean</option>
            <option value="selecttext">Select text string</option>
            <option value="selectflag">Select from a mutually exclusive list of command line flags to pass</option>
            <option value="clflag">Flag - user can set. Only used for argparse parameter passing style</option>
            <option value="datacolumn">Data column - user selects from an input tabular file column name/header values</option>
          </param>
          <when value = "text">
              <expand macro="singleText" />
          </when>
          <when value = "integer">
              <expand macro="singleInt" />
          </when>
          <when value = "float">
              <expand macro="singleFloat" />
          </when>
          <when value = "boolean">
              <expand macro="singleBoolean" />
          </when>
          <when value = "selecttext">
              <expand macro="selectText" />
          </when>
          <when value = "selectflag">
              <expand macro="selectFlag" />
          </when>
          <when value = "clflag">
             <param name="param_value" type="select" value="notset">
                    <option value='notset'>DO NOT set this flag</option>
                    <option value='set'>SET this flag</option>
             </param>
          </when>
          <when value = "datacolumn">
              <expand macro="dataColumn" />
          </when>
          </conditional>
          <param name="param_label" type="text" value="" label="Label for the form">
              <sanitizer>
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
          </param>
          <param name="param_help" type="text" value="" label="Help for this parameter">
              <sanitizer>
                <valid initial="string.printable" >
                </valid>
              </sanitizer>
          </param>
          <param name="param_CL" type="text" label="Positional ordinal | argparse argument name"
              help="Using positional parameters, enter the integer ordinal for this parameter on the command line. Using Argparse style,
              '--' will be prepended on the CL" value="" />
          <param name="param_CLprefixed" type="text" label="Override the generated default argparse name prefix if not empty - eg ----foo if needed"
              help="Some targets like Planemo expect an unadorned action like 'test' before --galaxy_root." value="">
              <sanitizer invalid_char="_">
                <valid initial="string.printable" >
                    <remove value="'" />
                </valid>
              </sanitizer>
          </param>
          <param name="param_repeat" type="boolean" checked="False" truevalue="1"  falsevalue="0"
          label="Allow user to repeat this as many times as needed." />
        </repeat>
        </section>
     </xml>
  </macros>
<requirements>
     <requirement type="package" version="3.10.12">python</requirement>
     <requirement type="package" version="0.5.3">galaxyxml</requirement>
     <requirement type="package" version="1.2.0">bioblend</requirement>
     <requirement type="package" version="0.75.20">planemo</requirement>
     <requirement type="package" version="0.10.10">ephemeris</requirement>
</requirements>

<command detect_errors="exit_code"><![CDATA[
#import os
#set dev_env = os.environ.get('GALAXY_DEVELOPMENT_ENVIRONMENT', '0') == '1'
#if not $__user_email__
  #set useremail = 'admin@galaxy.this'
#else
  #set useremail = $__user_email__
#end if
#if not $dev_env and ( $__user_email__ not in $__admin_users__ )
   python3 $__tool_directory__/toolfactory.py --bad_user $__user_email__
#else
      python3 $__tool_directory__/toolfactory.py
    #if len(str($cl_options.cl_suffix)) > 0
--cl_suffix "$clsuffix"
    #end if
    #if len(str($cl_options.cl_prefix)) > 0
--cl_prefix "$clprefix"
    #end if
    #if len(str($cl_options.cl_override)) > 0
--cl_override "$commandoverride"
    #end if
    #if len(str($cl_options.test_override)) > 0
--test_override "$testoverride"
    #end if
    #if $deps.packages > "":
        --packages "$deps.packages"
    #end if
    #if $deps.usescript.choosescript == "yes"
--script_path "$runscript"
--sysexe "$deps.usescript.scriptrunner"
    #end if
--tool_name "$tool_name"  --user_email "$useremail" --citations "$citeme"  --parampass "$io_param.ppass.parampass"
--tool_desc "$tool_desc"
--tool_version "$tool_version"
--help_text "$helpme"
    #if $io_param.ppass.parampass != '0'
       #if str($io_param.ppass.addparam.edit_params) == "yes"
--edit_additional_parameters
       #end if
       #for $apar in $io_param.ppass.addparam.additional_parameters
          #if $apar.ap_type.param_type=="selecttext"
--selecttext_parameters '{"name":"$apar.param_name", "label":"$apar.param_label", "help":"$apar.param_help",
"type":"$apar.ap_type.param_type","CL":"$apar.param_CL","override":"$apar.param_CLprefixed","value": [
         #for $i,$st in enumerate($apar.ap_type.selectTexts):
           "$st.select_value"
           #if ($i < (len($apar.ap_type.selectTexts)-1)):
           ,
           #end if
         #end for
         ], "texts": [
         #for $i,$st in enumerate($apar.ap_type.selectTexts):
         "$st.select_text"
          #if ($i < (len($apar.ap_type.selectTexts)-1)):
           ,
           #end if

         #end for
         ]
         }'
        #else if $apar.ap_type.param_type=="selectflag"
--selectflag_parameters '{"name":"$apar.param_name", "label":"$apar.param_label", "help":"$apar.param_help",
"type":"$apar.ap_type.param_type","CL":"$apar.param_CL","override":"$apar.param_CLprefixed","value": [
         #for $i,$st in enumerate($apar.ap_type.selectFlags):
           "$st.select_value"
           #if ($i < (len($apar.ap_type.selectFlags)-1)):
           ,
           #end if
         #end for
         ], "texts": [
         #for $i,$st in enumerate($apar.ap_type.selectFlags):
         "$st.select_text"
          #if ($i < (len($apar.ap_type.selectFlags)-1)):
           ,
           #end if

         #end for
         ]
         }'
         #else if $apar.ap_type.param_type=="datacolumn"
--additional_parameters '{"name": "$apar.param_name", "value": "$apar.ap_type.param_value", "label": "$apar.param_label", "help": "$apar.param_help",
"type": "$apar.ap_type.param_type","CL": "$apar.param_CL","override": "$apar.param_CLprefixed", "repeat": "$apar.param_repeat", "multiple": "$apar.ap_type.param_multiple",
 "dataref": "$apar.ap_type.param_dataref"}'
         #else:
--additional_parameters '{"name": "$apar.param_name", "value": "$apar.ap_type.param_value", "label": "$apar.param_label", "help": "$apar.param_help",
"type": "$apar.ap_type.param_type","CL": "$apar.param_CL","override": "$apar.param_CLprefixed", "repeat": "$apar.param_repeat"}'
         #end if
       #end for
    #end if
    #for $intab in $io_param.ppass.io.history_inputs
--input_files '{"name": "$intab.input_files", "CL": "$intab.input_CL", "format": "$intab.input_formats", "label": "$intab.input_label",
"help": "$intab.input_help", "required": "$intab.input_required"}'
    #end for
    #for $otab in $io_param.ppass.io.history_outputs
         #if str($otab.history_label) > ""
    --output_files '{"name": "$otab.history_name", "format": "$otab.history_format", "CL": "$otab.history_CL", "test": "$otab.history_test", "label": "$otab.history_label"
         #else
    --output_files '{"name": "$otab.history_name", "format": "$otab.history_format", "CL": "$otab.history_CL", "test": "$otab.history_test"
         #end if
         #if $otab.history_whens
         , "when": [
            #for $i, $hw in enumerate($otab.history_whens)
              "$hw.history_when"
              #if ($i < (len($otab.history_whens)-1))
           ,
              #end if
            #end for
          ]
          #end if
     }'
    #end for
    #for $collect in $io_param.ppass.io.collection_outputs
--collection '{"name": "$collect.name", "kind": "$collect.kind", "discover": "$collect.discover", "label": "$collect.label"}'
    #end for
--tfcollection 'toolgen'
--tested_tool_out "$untested_tool"
--nftest
--galaxy_root "$__root_dir__"
--toolfactory_dir "$__tool_directory__"
    #if $cl_options.xtracond.needxtra == "yes"
       #for $x in $cl_options.xtracond.xtra_files
--xtra_file '{"fpath":"$x", "fname":"$x.element_identifier"}'
      #end for
    #end if
#end if
]]>
</command>
 <configfiles>
  <configfile name="runscript">
${deps.usescript.dynScript}
 </configfile>
 <configfile name="commandoverride">
#if len(str($cl_options.cl_override).strip()) > 1:
${cl_options.cl_override}
#end if
 </configfile>
 <configfile name="testoverride">
#if len(str($cl_options.test_override).strip()) > 1:
${cl_options.test_override}
#end if
 </configfile>
<configfile name="clprefix">
#if len(str($cl_options.cl_prefix).strip()) > 1:
${cl_options.cl_prefix}
#end if
 </configfile>
 <configfile name="clsuffix">
#if len(str($cl_options.cl_suffix).strip()) > 1:
${cl_options.cl_suffix}
#end if
 </configfile>
 <configfile name="helpme">
${help_text}
 </configfile>
 <configfile name="citeme">

#for $citation in $citations:
    #if $citation.citation_type.type == "bibtex":
        **ENTRY**bibtex
        ${citation.citation_type.bibtex}
    #else
        **ENTRY**doi
        ${citation.citation_type.doi}
    #end if
#end for

 </configfile>
  </configfiles>
  <inputs>
   <param name="tool_name" type="text" value="my_tool"   label="New tool ID and title for outputs"
         help="Toolshed repository name so lower case, digits and underscores only. Choose thoughtfully to avoid namespace clashes with other tool writers.">
        <sanitizer invalid_char="_">
            <valid initial="string.ascii_lowercase,string.digits">
                <add value="_"/>
            </valid>
        </sanitizer>
    </param>

    <section name="deps" title="Dependencies, optional script and script interpreter" expanded="true">

    <param name="packages" type="text" value="" label="Conda dependencies as package name[:version, name:version...].
    These will always be available when this tool executes" help="Use =[ver] or :[ver] for specific version - 'bwa=0.17.0'.
    Default is latest. Will be used every time the tool is (re)run. Only Conda is currently supported"  />

    <conditional name="usescript">
        <param name="choosescript" type="select" display="radio" label="Supply a script for a dependency (e.g. python/R/bash) or a system executable such as Bash"
        help = "For script interpreters like Python or bash, parameters and i/o specified below must match script's expectations - i
        f you pass parameters, the script must deal with them">
            <option value="no">No script required for this tool - just pass parameters on the command line to the first dependency listed above</option>
            <option value="yes" selected="true">Yes, a script is ready to be pasted below</option>
        </param>
        <when value="no">
            <param name="dynScript" type="hidden"  value="" />
            <param name="scriptrunner" type="hidden"  value="" />
        </when>
        <when value="yes">
            <param name="scriptrunner" type="text" value=""   label="Interpreter for the script - eg bash or python. Can be one of the dependencies named
            above or a system executable" help="Scripts are interpreted by the executable named here. For conda r-base, 'Rscript --vanilla' or for
            conda planemo, 'planemo test' for example">
            </param>
            <param name="dynScript" type="text" area="True" value="" label="Script for executable above to interpret. It can be one of the Conda dependency names"
             help="Script must handle all i/o and parameters as specified below using the parameters and passing method chosen below">
              <sanitizer>
                 <valid initial="string.printable"/>
              </sanitizer>
             </param>
        </when>
    </conditional>
    </section>
    <section name="io_param" title="Data file input, output and settings forming the executable or script command line" expanded="true">
    <conditional name="ppass">
        <param name="parampass"  type="select" display="radio" label="Command line parameter passing method to use">
            <option value="argparse" selected="true">Argparse: passed in the form of --clname value</option>
            <option value="embed">Script has Cheetah templates for parameters embedded into the code</option>
            <option value="embednfmod">Specialised embed with nf-core module pixie dust</option>
            <option value="positional">Positional: Passed in the order of positional ordinals ...foo.bam bar.idx zot.xls</option>
            <option value="0">Tool reads selected input file from STDIN and writes STDOUT with no parameters</option>
        </param>
        <when value="argparse">
            <expand macro="io" />
            <expand macro="additparam" />
        </when>
                <when value="embed">
            <expand macro="io" />
            <expand macro="additparam" />
        </when>
        <when value="embednfmod">
            <expand macro="io" />
            <expand macro="additparam" />
        </when>
        <when value="positional">
            <expand macro="io" />
            <expand macro="additparam" />
        </when>
        <when value="0">
             <expand macro="io"/>
        </when>
    </conditional>
    </section>
    <section name="cl_options" title="ADVANCED DIY MANUAL REPLACEMENT OPTIONS: Test or command line prefix, suffix or DIY command line" expanded="false" >
    <param name="cl_prefix" type="text"  area="True" value="" label="Prefix for generated command line. Useful for bash pre processing.
    Use override below to replace completely"
            help="';' separated bash commands can be used here for pre processing like renaming or copying datasets for the script -
            added at start of autogenerated command line">
            <sanitizer>
                 <valid initial="string.printable" />
            </sanitizer>
    </param>
    <param name="cl_suffix" type="text" area="True" value="" label="Suffix for generated command line. Useful for bash post processing.
    Use override below to replace completely"
            help="';' separated bash commands can be used here for post processing - added at end of autogenerated command line" >
            <sanitizer>
                 <valid initial="string.printable" />
            </sanitizer>
    </param>
    <param name="cl_override" type="text" area="True" label="Optional. Human wrought command element override XML/template - e.g. for bwa"
     help="For arbitrary and artfull command lines. All i/o and parameters must be passed. Leave blank unless needed. Not for the faint of heart" value="">
      <sanitizer>
         <valid initial="string.printable"/>
      </sanitizer>
     </param>
    <param name="test_override" type="text" area="True" label="Optional. Human wrought test element override XML/template - e.g. for bwa"
     help="For arbitrary and artfull scripts. Leave blank unless needed. Not for the faint of heart" value="">
      <sanitizer>
         <valid initial="string.printable" />
      </sanitizer>
    </param>
    <conditional name="xtracond">
        <param name="needxtra" type="select" display="radio" label="Specific files from the history must be available in the tool directory"
        help = "If you need a java .jar file or special data file for your script to be able to access, upload it to the history and select it here">
            <option value="no" selected="true">No special files need to be available in the tool directory for the script to use</option>
            <option value="yes">Yes - some special files must be copied into the tool directory</option>
        </param>
        <when value="no">
                <param name="xtra_files" type="hidden" value="" />
        </when>
        <when value="yes">
            <param name="xtra_files" type="data" format="data" label="Select all files from your history to add to tool directory for the script to use" multiple="true"
               help="If your script needs access to a .jar or other specific permanent resource, upload it before building, so you can select it here.
               All those selected history items will be added to the tool directory. That path is available at execution as $__tool_directory__, for use in the command section.
               These need to be expanded and used as parameters for the script where needed: $__tool_directory__/BlastTools.jar for example"/>
        </when>
    </conditional>
    </section>
    <expand macro="tool_metadata" />
    <param name="useremail"  type="hidden" value="" />
    <param name="script_path"  type="hidden" value="" />
  </inputs>
  <outputs>
     <collection name="toolgen" type="list" label="${tool_name} generated components">
      <discover_datasets pattern="__name_and_ext__" directory="toolgen" visible="false"/>
    </collection>
      <data name="untested_tool" format="tgz" label = "${tool_name}_toolshed_archive"/>
  </outputs>
  <tests>
        <test>
            <param name="useremail" value="admin.galaxy.here" />
            <param name="input_files" value="input1_sample" />
            <param name="input_CL" value="1" />
            <param name="input_formats" value="txt" />
            <param name="input_label" value="input" />
            <param name="input_help" value="help" />
            <param name="tool_name" value="pyrevpos" />
            <param name="parampass" value="positional" />
            <param name="tool_version" value="0.01" />
            <param name="tool_desc" value="positional reverse" />
            <param name="help_text" value="help text goes here" />
            <param name="packages" value="python" />
            <param name="history_name" value="output2" />
            <param name="history_format" value="txt" />
            <param name="history_CL" value="2" />
            <param name="dynScript" value="import sys; inp = sys.argv[1]; outp = sys.argv[2]; inlist = open(inp,'r').readlines();
            o = open(outp,'w'); rs = [''.join(list(reversed(x.rstrip()))) for x in inlist]; o.write('\n'.join(rs)); o.close()" />
            <param name="choosescript" value="yes" />
            <param name="script_path" value="$runscript" />
            <output name="untested_tool" file="pyrevpos_not_tested.toolshed_sample"  ftype="tgz" compare="sim_size" delta_frac="0.1" />
        </test>
  </tests>
  <help>

**Details and attribution**
(see GTF_)

**Local Admins ONLY**
Only users with emails in the local admin_user configuration setting in config/galaxy.yml can run this tool.

**If you find a bug**
Please raise an issue, or even better, submit a pull request fixing it, on the github repository GTF_

**What it does**
This tool contains an automated code generator, and creates normal, workflow compatible Galaxy tools as Toolshed ready archives. The
new tool is immediately installed and available for use - a page refresh will be needed to see the new tool in the "Local" tool section.

Generated tools can use existing Conda packages. These become requirements for optional scripts pasted into this tool form.
Pasted scripts *cannot be adjusted* by the downstream user.

Any number of parameters can be built into the new tool form for passing in to the script or executable at runtime.
These can be editable by the downstream user or baked in.

A new tarball compatible with any Galaxy toolshed is created in your history, including a test based on the supplied default parameter
values and input history datasets.

.. class:: warningmark

**Note to system administrators**
This tool offers *NO* built in protection against malicious scripts. It should only be installed on private/personnal Galaxy instances.
Admin_users will have the power to do anything they want as the Galaxy user if you install this tool.

.. class:: warningmark

**Use on public servers**  is STRONGLY discouraged for obvious reasons

The tools generated by this tool will run just as securely as any other normal installed Galaxy tool but like any other new tools,
should always be checked carefully before installation. We recommend that you follow the good code hygiene practices associated with safe toolshed practices.


Paper_

*Licensing*

Copyright Ross Lazarus May 2012
Licensed under the MIT_ licence.

.. _MIT: https://mit-license.org/
.. _GTF:  https://github.com/fubar2/galaxy_tf_overlay
.. _Paper: https://academic.oup.com/bioinformatics/article/28/23/3139/192853


  </help>
  <citations>
    <citation type="doi">10.1093/bioinformatics/bts573</citation>
  </citations>
</tool>