Add Printer hook enabling custom user defined file output like -stubs #350
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.
This PR contains a minimal feature set implementing a general hook enabling user defined solutions for:
In a nutshell this PR does two things:
AddPrinter
, which allows the user to define a new command line flag/description, and define a Builder to handle file generation.avo/internal/prnt
package to the new externally exportedavo/printer
package. All former internal references toprnt
now useprinter
instead andinternal/prnt
is eliminated.That's it! I've been using this on my fork for PureGo+CPUID Dispatch and Test generation (driven by
text/template
) for many months, and it has met all of my needs. Here's what setting that up looks like:The "Generation" functions use the newly exported
avo/printer
sub-package to set up the generation code just the way my project needs, and that's it!This is the last PR (in conjunction with #234 and #233) that I need to stop maintaining my own Avo fork. I don't currently require the functionality in #349, but I decided to just do it as a bonus while I had all of the
opcodesextra
state mentally loaded up.Enjoy! And I'm happy to discuss and implement any further suggestions. My goal here was to be minimally disruptive to Avo while providing maximum flexibility to advanced users who need more code generation flexibility.