Implement tool upgrade assistant. #18728
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Inspect a tool's XML file and provide advice on upgrading to new tool versions. It is implemented as library code in tool_util for integration with Planemo in the future but I've added a script here to run it on the command-line directly. It can also output in JSON for integration with external tools such as the galaxy language server.
I sat down to write a tool profile version upgrader to try to advance #18679... but I realized in light of macros it is impossible to do without implementing a whole new set of abstractions to track where parts of the tool XML definition are coming from. I both like my current abstractions and think those ones would be obnoxious 😆😅. Instead, I have settled for a tool that will provide advice on upgrading the tool based on its XML. It can point out things that will need to be fixed, things to consider but cannot be determined with a runtime, and things that you don't need to worry about (little bits of that planemo-green-serotonin where it makes sense).
If someone thinks they can write a tool upgrader that deals with macros or can convince ChatGPT to do it - I think having all these test cases and all the semantic data in terms of upgrade codes, messages, and such will be helpful I am sure.
How to test the changes?
License