changeset 56:68fbdbe35f08 draft

author fubar
date Tue, 20 Oct 2020 03:20:32 +0000
parents dcf59d4e4515
children d21517a36db8
files toolfactory/.shed.yml toolfactory/ toolfactory/images/dynamicScriptTool.png toolfactory/ toolfactory/rgToolFactory2.xml toolfactory/test-data/input1_sample toolfactory/test-data/output2_sample toolfactory/test-data/pyrevpos.python toolfactory/test-data/test1_log.txt toolfactory/test-data/toolfactory_pyrevpos_tgz_sample toolfactory/
diffstat 11 files changed, 71 insertions(+), 411 deletions(-) [+]
line wrap: on
line diff
--- a/toolfactory/.shed.yml	Mon Aug 31 00:20:27 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-name: toolfactory
-owner: fubar
-description: ToolFactory - tool to make Galaxy tools ready for the toolshed
-long_description: |
-    ToolFactory - turn executable packages and R/python/perl/bash scripts into ordinary Galaxy tools
-    Creating re-usable tools from scripts: The Galaxy Tool Factory Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team 
-    Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573
-type: tool_dependency_definition
-- Tool Generators
--- a/toolfactory/	Mon Aug 31 00:20:27 2020 -0400
+++ b/toolfactory/	Tue Oct 20 03:20:32 2020 +0000
@@ -137,7 +137,29 @@
 The Docker container is the best way to use the TF because it is preconfigured
 to automate new tool testing and has a built in local toolshed where each new tool
-is uploaded. It is easy to install without Docker, but you will need to make some 
+is uploaded. If you grab the docker container, it should just work. 
+If you build the container, there are some things to watch out for. Let it run for 10 minutes
+or so once you build it - check with top until conda has finished fussing. Once everything quietens
+down, find the container with
+```docker ps```
+and use
+```docker exec [containername] supervisorctl restart galaxy:```
+That colon is not a typographical mistake.
+Not restarting after first boot seems to leave the job/worflow system confused and the workflow
+just will not run properly until Galaxy has restarted.
+Login as with password "password". Feel free to change it once you are logged in. 
+There should be a companion toolshed at localhost:9090. The history should have some sample data for
+the workflow.
+Run the workflow and make sure the right dataset is selected for each of the input files. Most of the 
+examples use text files so should run, but the bwa example needs the right ones to work properly.
+When the workflow is finished, you will have half a dozen examples to rerun and play with. They have also 
+all been tested and installed so you should find them in your tool menu under "Generated Tools"
+It is easy to install without Docker, but you will need to make some 
 configuration changes (TODO write a configuration). You can install it most conveniently using the
 administrative "Search and browse tool sheds" link. Find the Galaxy Main
 toolshed at and search for the toolfactory
Binary file toolfactory/images/dynamicScriptTool.png has changed
--- a/toolfactory/	Mon Aug 31 00:20:27 2020 -0400
+++ b/toolfactory/	Tue Oct 20 03:20:32 2020 +0000
@@ -208,24 +208,14 @@
-            if self.args.runmode == "Executable":
-                if self.args.script_path:
-                    aCL(self.executeme)
-                    aCL(self.sfile)
-                    aXCL(self.executeme)
-                    aXCL("$runme")
-                else:
-                    aCL(self.executeme)  # this little CL will just run
-                    aXCL(self.executeme)
+            if self.args.script_path:
+                aCL(self.executeme)
+                aCL(self.sfile)
+                aXCL(self.executeme)
+                aXCL("$runme")
-                if self.args.script_path:
-                    aCL(self.executeme)
-                    aCL(self.sfile)
-                    aXCL(self.executeme)
-                    aXCL("$runme")
-                else:
-                    aCL(self.executeme)  # this little CL will just run
-                    aXCL(self.executeme)
+                aCL(self.executeme)  # this little CL will just run
+                aXCL(self.executeme)
         self.elog = os.path.join(self.repdir, "%s_error_log.txt" % self.tool_name)
         self.tlog = os.path.join(self.repdir, "%s_runner_log.txt" % self.tool_name)
@@ -531,9 +521,9 @@
         Hmmm. How to get the command line into correct order...
         if self.command_override:
-            self.newtool.command_line_override = self.command_override  # config file
+            self.newtool.command_override = self.command_override  # config file
-            self.newtool.command_line_override = self.xmlcl
+            self.newtool.command_override = self.xmlcl
         if self.args.help_text:
             helptext = open(self.args.help_text, "r").readlines()
             safertext = [html_escape(x) for x in helptext]
@@ -608,7 +598,7 @@
     def run(self):
         generate test outputs by running a command line
-        won't work if command or test override in play - planemo is the 
+        won't work if command or test override in play - planemo is the
         easiest way to generate test outputs for that case so is
         automagically selected
@@ -617,32 +607,24 @@
         scl = " ".join(
         err = None
         if self.args.parampass != "0":
-            ste = open(self.elog, "wb")
+            if os.path.exists(self.elog):
+                ste = open(self.elog, "a")
+            else:
+                ste = open(self.elog, "w")
             if self.lastclredirect:
                 sto = open(self.lastclredirect[1], "wb")  # is name of an output file
-                sto = open(self.tlog, "wb")
+                if os.path.exists(self.tlog):
+                    sto = open(self.tlog, "a")
+                else:
+                    sto = open(self.tlog, "w")
-                    bytes(
-                        "## Executing Toolfactory generated command line = %s\n" % scl,
-                        "utf8",
-                    )
+                        "## Executing Toolfactory generated command line = %s\n" % scl
             p =, shell=False, stdout=sto, stderr=ste)
-            tmp_stderr = open(self.elog, "rb")
-            err = ""
-            buffsize = 1048576
-            try:
-                while True:
-                    err += str(
-                    if not err or len(err) % buffsize != 0:
-                        break
-            except OverflowError:
-                pass
-            tmp_stderr.close()
             retval = p.returncode
         else:  # work around special case - stdin and write to stdout
             sti = open(self.infiles[0][IPATHPOS], "rb")
@@ -695,7 +677,7 @@
-        p =, shell=True)
+        p =, shell=False)
         print("Ran", " ".join(cll), "got", p.returncode)
         return p.returncode
@@ -717,17 +699,14 @@
-                "--galaxy_python_version",
-                "3.6",
-            cll = ["planemo", "test", "--galaxy_python_version",
-                "3.6", "--galaxy_root",
+            cll = ["planemo", "test", "--galaxy_root",
         p =
-                cll, shell=True, cwd=self.tooloutdir, stderr=tout, stdout=tout
+                cll, shell=False, cwd=self.tooloutdir, stderr=tout, stdout=tout
         if genoutputs:
             with os.scandir(self.testdir) as outs:
@@ -815,7 +794,7 @@
             shutil.copyfile(pth, dest)
     def makeToolTar(self):
-        """ move outputs into test-data and prepare the tarball 
+        """ move outputs into test-data and prepare the tarball
         for p in self.outfiles:
             src = p[ONAMEPOS]
@@ -883,7 +862,6 @@
     a("--parampass", default="positional")
     a("--tfout", default="./tfout")
     a("--new_tool", default="new_tool")
-    a("--runmode", default=None)
     a("--galaxy_url", default="http://localhost:8080")
     a("--galaxy_api_key", default="fakekey")
     a("--toolshed_url", default="http://localhost:9009")
--- a/toolfactory/rgToolFactory2.xml	Mon Aug 31 00:20:27 2020 -0400
+++ b/toolfactory/rgToolFactory2.xml	Tue Oct 20 03:20:32 2020 +0000
@@ -1,5 +1,5 @@
-<tool id="rgTF2" name="toolfactory" version="3.00" profile="16.04" >
-  <description>Scripts into tools</description>
+<tool id="rgTF2" name="toolfactory" version="2.00" profile="16.04" >
+  <description>Scripts into tools v2</description>
      <xml name="tool_metadata">
          <param name="tool_version" label="Tool Version - bump this to warn users trying to redo old analyses" type="text" value="0.01"
@@ -130,13 +130,14 @@
-      <requirement type="package">planemo</requirement>
-       <requirement type="package">galaxyxml</requirement>
-       <requirement type="package">lxml</requirement>
-       <requirement type="package">ephemeris</requirement>
-       <requirement type="package">bioblend</requirement>
+       <requirement type="package" version="0.72.0" >planemo</requirement>
+       <requirement type="package" >bioblend</requirement>
+       <requirement type="package" >galaxyxml</requirement>
+       <requirement type="package" >ephemeris</requirement>
   <command ><![CDATA[
 #import os
 #set dev_env = os.environ.get('GALAXY_DEVELOPMENT_ENVIRONMENT', '0') == '1'
@@ -185,6 +186,7 @@
      #for $otab in $ppass.history_outputs:
 --output_files "$otab.history_name~~~$otab.history_format~~~$otab.history_CL~~~$otab.history_test"
      #end for
  #end if
--- a/toolfactory/test-data/input1_sample	Mon Aug 31 00:20:27 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-*WARNING before you start*
- Install this tool on a private Galaxy ONLY
- Please NEVER on a public or production instance
-Updated august 2014 by John Chilton adding citation support
-Updated august 8 2014 to fix bugs reported by Marius van den Beek
-Please cite the resource at
-if you use this tool in your published work.
-**Short Story**
-This is an unusual Galaxy tool capable of generating new Galaxy tools.
-It works by exposing *unrestricted* and therefore extremely dangerous scripting
-to all designated administrators of the host Galaxy server, allowing them to
-run scripts in R, python, sh and perl over multiple selected input data sets,
-writing a single new data set as output.
-*You have a working r/python/perl/bash script or any executable with positional or argparse style parameters*
-It can be turned into an ordinary Galaxy tool in minutes, using a Galaxy tool.
-**Automated generation of new Galaxy tools for installation into any Galaxy**
-A test is generated using small sample test data inputs and parameter settings you supply.
-Once the test case outputs have been produced, they can be used to build a
-new Galaxy tool. The supplied script or executable is baked as a requirement
-into a new, ordinary Galaxy tool, fully workflow compatible out of the box.
-Generated tools are installed via a tool shed by an administrator
-and work exactly like all other Galaxy tools for your users.
-**More Detail**
-To use the ToolFactory, you should have prepared a script to paste into a
-text box, or have a package in mind and a small test input example ready to select from your history
-to test your new script.
-```planemo test rgToolFactory2.xml --galaxy_root ~/galaxy --test_data ~/galaxy/tools/tool_makers/toolfactory/test-data``` works for me
-There is an example in each scripting language on the Tool Factory form. You
-can just cut and paste these to try it out - remember to select the right
-interpreter please. You'll also need to create a small test data set using
-the Galaxy history add new data tool.
-If the script fails somehow, use the "redo" button on the tool output in
-your history to recreate the form complete with broken script. Fix the bug
-and execute again. Rinse, wash, repeat.
-Once the script runs sucessfully, a new Galaxy tool that runs your script
-can be generated. Select the "generate" option and supply some help text and
-names. The new tool will be generated in the form of a new Galaxy datatype
-*toolshed.gz* - as the name suggests, it's an archive ready to upload to a
-Galaxy ToolShed as a new tool repository.
-Once it's in a ToolShed, it can be installed into any local Galaxy server
-from the server administrative interface.
-Once the new tool is installed, local users can run it - each time, the script
-that was supplied when it was built will be executed with the input chosen
-from the user's history. In other words, the tools you generate with the
-ToolFactory run just like any other Galaxy tool,but run your script every time.
-Tool factory tools are perfect for workflow components. One input, one output,
-no variables.
-*To fully and safely exploit the awesome power* of this tool,
-Galaxy and the ToolShed, you should be a developer installing this
-tool on a private/personal/scratch local instance where you are an
-admin_user. Then, if you break it, you get to keep all the pieces see
-This is a Galaxy tool. You can install it most conveniently using the
-administrative "Search and browse tool sheds" link. Find the Galaxy Main
-toolshed at and search for the toolfactory
-repository. Open it and review the code and select the option to install it.
-If you can't get the tool that way, the xml and py files here need to be
-copied into a new tools
-subdirectory such as tools/toolfactory Your tool_conf.xml needs a new entry
-pointing to the xml
-file - something like::
-  <section name="Tool building tools" id="toolbuilders">
-    <tool file="toolfactory/rgToolFactory.xml"/>
-  </section>
-If not already there,
-please add:
-<datatype extension="toolshed.gz" type="galaxy.datatypes.binary:Binary"
-mimetype="multipart/x-gzip" subclass="True" />
-to your local data_types_conf.xml.
-**Restricted execution**
-The tool factory tool itself will then be usable ONLY by admin users -
-people with IDs in admin_users in universe_wsgi.ini **Yes, that's right. ONLY
-admin_users can run this tool** Think about it for a moment. If allowed to
-run any arbitrary script on your Galaxy server, the only thing that would
-impede a miscreant bent on destroying all your Galaxy data would probably
-be lack of appropriate technical skills.
-**What it does** 
-This is a tool factory for simple scripts in python, R and
-perl currently. Functional tests are automatically generated. How cool is that.
-LIMITED to simple scripts that read one input from the history. Optionally can
-write one new history dataset, and optionally collect any number of outputs
-into links on an autogenerated HTML index page for the user to navigate -
-useful if the script writes images and output files - pdf outputs are shown
-as thumbnails and R's bloated pdf's are shrunk with ghostscript so that and
-imagemagik need to be available.
-Generated tools can be edited and enhanced like any Galaxy tool, so start
-small and build up since a generated script gets you a serious leg up to a
-more complex one.
-**What you do**
-You paste and run your script, you fix the syntax errors and
-eventually it runs. You can use the redo button and edit the script before
-trying to rerun it as you debug - it works pretty well.
-Once the script works on some test data, you can generate a toolshed compatible
-gzip file containing your script ready to run as an ordinary Galaxy tool in
-a repository on your local toolshed. That means safe and largely automated
-installation in any production Galaxy configured to use your toolshed.
-**Generated tool Security**
-Once you install a generated tool, it's just
-another tool - assuming the script is safe. They just run normally and their
-user cannot do anything unusually insecure but please, practice safe toolshed.
-Read the code before you install any tool. Especially this one - it is really scary.
-**Send Code**
-Patches and suggestions welcome as bitbucket issues please?
-Creating re-usable tools from scripts: The Galaxy Tool Factory
-Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team
-Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573
-Copyright Ross Lazarus 2010
-ross lazarus at g mail period com
-All rights reserved.
-Licensed under the LGPL
-**Obligatory screenshot**
--- a/toolfactory/test-data/output2_sample	Mon Aug 31 00:20:27 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,165 +0,0 @@
-*trats uoy erofeb GNINRAW*
-YLNO yxalaG etavirp a no loot siht llatsnI 
-ecnatsni noitcudorp ro cilbup a no REVEN esaelP 
-troppus noitatic gnidda notlihC nhoJ yb 4102 tsugua detadpU
-keeB ned nav suiraM yb detroper sgub xif ot 4102 8 tsugua detadpU
-ta ecruoser eht etic esaelP
-.krow dehsilbup ruoy ni loot siht esu uoy fi
-**yrotS trohS**
-.sloot yxalaG wen gnitareneg fo elbapac loot yxalaG lausunu na si sihT
-gnitpircs suoregnad ylemertxe erofereht dna *detcirtsernu* gnisopxe yb skrow tI
-ot meht gniwolla ,revres yxalaG tsoh eht fo srotartsinimda detangised lla ot
-,stes atad tupni detceles elpitlum revo lrep dna hs ,nohtyp ,R ni stpircs nur
-.tuptuo sa tes atad wen elgnis a gnitirw
-*sretemarap elyts esrapgra ro lanoitisop htiw elbatucexe yna ro tpircs hsab/lrep/nohtyp/r gnikrow a evah uoY*
-.loot yxalaG a gnisu ,setunim ni loot yxalaG yranidro na otni denrut eb nac tI
-**yxalaG yna otni noitallatsni rof sloot yxalaG wen fo noitareneg detamotuA**
-.ylppus uoy sgnittes retemarap dna stupni atad tset elpmas llams gnisu detareneg si tset A
-a dliub ot desu eb nac yeht ,decudorp neeb evah stuptuo esac tset eht ecnO
-tnemeriuqer a sa dekab si elbatucexe ro tpircs deilppus ehT .loot yxalaG wen
-.xob eht fo tuo elbitapmoc wolfkrow ylluf ,loot yxalaG yranidro ,wen a otni
-rotartsinimda na yb dehs loot a aiv dellatsni era sloot detareneG
-.sresu ruoy rof sloot yxalaG rehto lla ekil yltcaxe krow dna
-**liateD eroM**
-a otni etsap ot tpircs a deraperp evah dluohs uoy ,yrotcaFlooT eht esu oT
-yrotsih ruoy morf tceles ot ydaer elpmaxe tupni tset llams a dna dnim ni egakcap a evah ro ,xob txet
-.tpircs wen ruoy tset ot
-em rof skrow ```atad-tset/yrotcafloot/srekam_loot/sloot/yxalag/~ atad_tset-- yxalag/~ toor_yxalag-- lmx.2yrotcaFlooTgr tset omenalp```
-uoY .mrof yrotcaF looT eht no egaugnal gnitpircs hcae ni elpmaxe na si erehT
-thgir eht tceles ot rebmemer - tuo ti yrt ot eseht etsap dna tuc tsuj nac
-gnisu tes atad tset llams a etaerc ot deen osla ll'uoY .esaelp reterpretni
-.loot atad wen dda yrotsih yxalaG eht
-ni tuptuo loot eht no nottub "oder" eht esu ,wohemos sliaf tpircs eht fI
-gub eht xiF .tpircs nekorb htiw etelpmoc mrof eht etaercer ot yrotsih ruoy
-.taeper ,hsaw ,esniR .niaga etucexe dna
-tpircs ruoy snur taht loot yxalaG wen a ,yllufssecus snur tpircs eht ecnO
-dna txet pleh emos ylppus dna noitpo "etareneg" eht tceleS .detareneg eb nac
-epytatad yxalaG wen a fo mrof eht ni detareneg eb lliw loot wen ehT .seman
-a ot daolpu ot ydaer evihcra na s'ti ,stseggus eman eht sa - *zg.dehsloot*
-.yrotisoper loot wen a sa dehSlooT yxalaG
-revres yxalaG lacol yna otni dellatsni eb nac ti ,dehSlooT a ni s'ti ecnO
-.ecafretni evitartsinimda revres eht morf
-tpircs eht ,emit hcae - ti nur nac sresu lacol ,dellatsni si loot wen eht ecnO
-nesohc tupni eht htiw detucexe eb lliw tliub saw ti nehw deilppus saw taht
-eht htiw etareneg uoy sloot eht ,sdrow rehto nI .yrotsih s'resu eht morf
-.emit yreve tpircs ruoy nur tub,loot yxalaG rehto yna ekil tsuj nur yrotcaFlooT
-,tuptuo eno ,tupni enO .stnenopmoc wolfkrow rof tcefrep era sloot yrotcaf looT
-.selbairav on
-,loot siht fo *rewop emosewa eht tiolpxe ylefas dna ylluf oT*
-siht gnillatsni repoleved a eb dluohs uoy ,dehSlooT eht dna yxalaG
-na era uoy erehw ecnatsni lacol hctarcs/lanosrep/etavirp a no loot
-ees seceip eht lla peek ot teg uoy ,ti kaerb uoy fi ,nehT .resu_nimda
-eht gnisu yltneinevnoc tsom ti llatsni nac uoY .loot yxalaG a si sihT
-niaM yxalaG eht dniF .knil "sdehs loot esworb dna hcraeS" evitartsinimda
-yrotcafloot eht rof hcraes dna /ude.usp.xb.2g.dehsloot//:sptth ta dehsloot
-.ti llatsni ot noitpo eht tceles dna edoc eht weiver dna ti nepO .yrotisoper
-eb ot deen ereh selif yp dna lmx eht ,yaw taht loot eht teg t'nac uoy fI
-sloot wen a otni deipoc
-yrtne wen a sdeen lmx.fnoc_loot ruoY yrotcafloot/sloot sa hcus yrotceridbus
-lmx eht ot gnitniop
-::ekil gnihtemos - elif
->"sredliubloot"=di "sloot gnidliub looT"=eman noitces<  
->/"lmx.yrotcaFlooTgr/yrotcafloot"=elif loot<    
-,ereht ydaerla ton fI
-:dda esaelp
-"yraniB:yranib.sepytatad.yxalag"=epyt "zg.dehsloot"=noisnetxe epytatad<
->/ "eurT"=ssalcbus "pizg-x/trapitlum"=epytemim
-.lmx.fnoc_sepyt_atad lacol ruoy ot
-**noitucexe detcirtseR**
-- sresu nimda yb YLNO elbasu eb neht lliw flesti loot yrotcaf loot ehT
-YLNO .thgir s'taht ,seY** ini.igsw_esrevinu ni sresu_nimda ni sDI htiw elpoep
-ot dewolla fI .tnemom a rof ti tuoba knihT **loot siht nur nac sresu_nimda
-dluow taht gniht ylno eht ,revres yxalaG ruoy no tpircs yrartibra yna nur
-ylbaborp dluow atad yxalaG ruoy lla gniyortsed no tneb tnaercsim a edepmi
-.slliks lacinhcet etairporppa fo kcal eb
-**seod ti tahW**
-dna R ,nohtyp ni stpircs elpmis rof yrotcaf loot a si sihT
-.taht si looc woH .detareneg yllacitamotua era stset lanoitcnuF .yltnerruc lrep
-nac yllanoitpO .yrotsih eht morf tupni eno daer taht stpircs elpmis ot DETIMIL
-stuptuo fo rebmun yna tcelloc yllanoitpo dna ,tesatad yrotsih wen eno etirw
-- etagivan ot resu eht rof egap xedni LMTH detarenegotua na no sknil otni
-nwohs era stuptuo fdp - selif tuptuo dna segami setirw tpircs eht fi lufesu
-dna taht os tpircstsohg htiw knurhs era s'fdp detaolb s'R dna slianbmuht sa
-.elbaliava eb ot deen kigamegami
-trats os ,loot yxalaG yna ekil decnahne dna detide eb nac sloot detareneG
-a ot pu gel suoires a uoy steg tpircs detareneg a ecnis pu dliub dna llams
-.eno xelpmoc erom
-**od uoy tahW**
-dna srorre xatnys eht xif uoy ,tpircs ruoy nur dna etsap uoY
-erofeb tpircs eht tide dna nottub oder eht esu nac uoY .snur ti yllautneve
-.llew ytterp skrow ti - gubed uoy sa ti nurer ot gniyrt
-elbitapmoc dehsloot a etareneg nac uoy ,atad tset emos no skrow tpircs eht ecnO
-ni loot yxalaG yranidro na sa nur ot ydaer tpircs ruoy gniniatnoc elif pizg
-detamotua ylegral dna efas snaem tahT .dehsloot lacol ruoy no yrotisoper a
-.dehsloot ruoy esu ot derugifnoc yxalaG noitcudorp yna ni noitallatsni
-**ytiruceS loot detareneG**
-tsuj s'ti ,loot detareneg a llatsni uoy ecnO
-rieht dna yllamron nur tsuj yehT .efas si tpircs eht gnimussa - loot rehtona
-.dehsloot efas ecitcarp ,esaelp tub erucesni yllausunu gnihtyna od tonnac resu
-.yracs yllaer si ti - eno siht yllaicepsE .loot yna llatsni uoy erofeb edoc eht daeR
-**edoC dneS**
-?esaelp seussi tekcubtib sa emoclew snoitseggus dna sehctaP
-yrotcaF looT yxalaG ehT :stpircs morf sloot elbasu-er gnitaerC
-maeT yxalaG ehT ;nnameiZ kraM ;ipsaK ynotnA ;surazaL ssoR
-375stb/scitamrofnioib/3901.01 :iod ;2102 scitamrofnioiB
-0102 surazaL ssoR thgirypoC
-moc doirep liam g ta surazal ssor
-.devreser sthgir llA
-LPGL eht rednu desneciL
-**tohsneercs yrotagilbO**
--- a/toolfactory/test-data/pyrevpos.python	Mon Aug 31 00:20:27 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,13 +0,0 @@
-# reverse order of text by row
-import sys
-inp = sys.argv[1]
-outp = sys.argv[2]
-i = open(inp,'r').readlines()
-o = open(outp,'w')
-for row in i:
-   rs = row.rstrip()
-   rs = list(rs)
-   rs.reverse()
-   o.write(''.join(rs))
--- a/toolfactory/test-data/test1_log.txt	Mon Aug 31 00:20:27 2020 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-## Executing Toolfactory generated command line = python /tmp/pyrevposq5dmcdy1.python /tmp/tmpqrksf8sd/files/5/b/9/dataset_5b952a86-87df-44ad-a415-ea549f3f0cee.dat output2
Binary file toolfactory/test-data/toolfactory_pyrevpos_tgz_sample has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolfactory/	Tue Oct 20 03:20:32 2020 +0000
@@ -0,0 +1,16 @@
+# using the galaxy venv this seems to work
+. /galaxy_venv/bin/activate
+python scripts/tool_shed/ -c config/tool_shed.yml --config-section tool_shed
+# eeesh. /etc/galaxy is where the actual galaxy.yml lives - despite other configs being where they might be expected
+# fix tool_shed.yml to and admin email
+# add tgz to datatypes :(
+# need to source a venv in /export/tool_deps/toolfactorydeps/0.01/fubar/toolfactorydeps/9e9428fe9134/
+# as nothing was done by the setup_virtualenv step apparently.
+# gcc and friends for planemo pip installation
+# File "/galaxy-central/lib/galaxy/tool_util/verify/", line 595, in <listcomp>
+#   test_user = [user for user in all_users if user["email"] == email][0]
+# add local to tool_sheds_conf.xml
+# <tool_sheds>
+#    <tool_shed name="local" url="http://localhost:9009"/>
+# mercurial > 5.5!!