High Level: Previous macro-ing iteration only allowed removal of duplicated XML blocks. This pull requests extends that to allow removal of duplicated cheetah commands and text elsewhere. Modified GATK wrapper to demonstrate macros, cut lines of XML used to implement GATK wrappers from 7325 to 3858.
- Refactored macro processing code out into its own module.
- Implemented unit tests with demonstration and verify each feature.
- Reworked previous macros so they are a specific kind of macro ('xml').
- Added new 'template' macro type to inject variables into cheetah templating system. This allow de-duplication of code in templates.
- Reworked GATK wrappers to demostrate template macros.
- Added new 'token' macro type to allow de-duplication of code in XML attributes and text blocks.
- Reworked GATK citations to demonstrate this token macro type.
A little bird informed me there might not be the desire among the team to put any time into maintaining the GATK tools. If that is the case I would be happy to reissue this pull request without the GATK changes - they are a striking example of the utility of this macro-ing capability but the real testing for correctness is via unit testing lib/galaxy/tools/loader.py, I have roughly zero interest in the actual GATK tools myself.