I was wanting to do this today to add `ruby@2.6` and it's a social
rather than technical requirement (i.e. we don't want users to mess
with their homebrew/core unless they know what they are doing) so allow
overriding with `HOMEBREW_DEVELOPER` set.
Turn the output versioned formula from the form "name@version" to
"name-version", then following by appending the specific version
after it.
This solution ensures that separate extracted versions of a formulae
can exist alongside each other (e.g. 'python-2@2.7.17' and
'python-2@2.7.16').
Work around ronn's inability to nest indents within list items by modifying its output to add a line break and indent after lines ending with a colon that aren't a list item's first line. This allows `brew.1.md.erb` to join the commands' help text without extra line breaks, which avoids the issue where kramdown was turning any command specs containing pipe characters into tables in the HTML output.
If the formula to be retrieved was just version-bumped in the most
recent commit (HEAD), we would've ended up grabbing the second-most
recent version.
Instead, if the file already exists in tree at the current commit,
just construct the formula from that to get the version (for naming
purposes) and copy the file outright to its new location.
Also gsub! some particular formula contents to work around older
formulae ("brewkit" isn't around anymore, and url is expected to
be a method, not an instance variable).
- Removed use of FormulaVersions - it's generally too brittle for our uses. We
now interface directly with the Git repo via utils/git and monkeypatch the
formula loading process where needed.
- Really old formulae (that specify fields as instance vars instead of methods)
still need more work to be supported; they don't work here quite yet.
- Properly handles deleted/removed formulae from Homebrew/homebrew-core.
Additional work is still needed to search through Homebrew/legacy-homebrew if
this functionality is desired.
- Rework command line options
- Make specifying a version optional
- Remove stdout option and require a tap to be specified
- Do not allow user to extract into homebrew/core
- Rework new class name generation to use existing Formulary tools