Changes to the man page are made in `header.1.md`, `footer.1.md`, or the
documentation comment block in the respective command file. Remove old
Markdown file to reduce confusion, now that it is no longer needed (and
not even used by `brew man`).
Since edf000e4cd30c3626ccc28c52ed32f2d84a200dd `zsh` completions are in
`share/zsh/site-functions/_brew`, making this path a part of Homebrew.
Hide it from `brew list --unbrewed` to reduce confusion/noise.
Currently, brew audit --strict includes the name of the tap when calculating the
length of a formula's description. This makes it difficult to pass the audit for
formulas in taps with lengthy names. In #47033 @jawshooah called out head-only
or devel-only taps specifically, but this is an issue elsewhere. For example:
homebrew/versions/elasticsearch20: Distributed search & analytics engine (72)
This commit updates audit.rb to use formula.name rather than formula.full_name.
Closes#47033 -- Audit shouldn't include tap name in description length
Old logic doesn't include revision. This fixes that, and passes the
whole formula prefix path to avoid duplicating the path-construction
logic.
Closes#80.
Signed-off-by: Andrew Janke <andrew@apjanke.net>
- add `HOMEBREW_PRODUCT` global variable
- only differentiate between `/usr/local` and `non-/usr/local` Homebrew
prefixes to avoid sharing sensitive user information
- note if e.g. build errors are occurring under CI
- Add `HOMEBREW_NO_ANALYTICS` variable (this will be how people opt-out
when this is enabled for everyone)
- Add `HOMEBREW_ANALYTICS_DEBUG` variable to output all the analytics
that are sent
- Move Bash analytics code to `Library/Homebrew/utils/analytics.sh`
- Add documentation for our analytics and why/what/when/how and opt-out
- Only official Homebrew commands are reported
- Ruby analytics are now reported in a forked, background process
Use both an in-class and a `.git/config` cache for this so we can ensure
that the `Tap#private?` check is fast. Also, make sure this cache value
is set both when initially installing and updating a tap.
Thanks to @xu-cheng for most of the implementation here.
Also, slightly tweak the behavior of `brew update` in this case so that
it doesn't print annoying output and still allows the `brew edit` flow
for people with `HOMEBREW_DEVELOPER` set.
Don't exit with a non-zero status code just because an internal command
happens to be undocumented. Also print the generic help in these cases
to provide some help (including a reference to the man page).
This is also used by `brew <cmd> --help`. The basic idea is to have the
documentation as a top level comment in each command file. To find these
comments, they have to be like this `#:`.
This is also used by the `brew man` command to keep the documentation
DRY, and for that there are now a header and footer for the man page.
Fix style of previously omitted `check_for_bad_install_name_tool`
method to be in line with changes made in #49.
Closes#56.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
Guard clauses instead of if/unless blocks make the checks easier to
understand and reduce nesting, thus improving overall readability.
This includes the following additional minor changes:
- Make indentation of commands consistent inside diagnostic messages.
- Fix minor typos and inconsistent punctuation in diagnostic messages.
- Fix here documents to always start with `<<-EOS.undent` on a new line,
followed by the message (indented once), followed by `EOS` (at the
same level like `<<-EOS.undent`).
- Always separate the check logic (and guard clauses) from the following
message by a single empty line (for consistency and readability).
- Standardize on `message` as the variable name when diagnostic messages
need to be constructed from multiple parts.
- Where easily possible, adapt check logic to stay within 80-column
limit, use more expressive variable names, and break down long
expressions into multiple statements with intermediate results.
Closes#49.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
Using `git` from `Formula#install` can cause an exec bomb if used in a
formula with `env :userpaths` because that causes both `Library/ENV/4.3`
and `Library/ENV/scm` to be in PATH, both of which contain a `git`
binary that is the same SCM wrapper. Those will mutually exec each other
indefinitely as they fail to detect that they are the same wrapper.
Extend the exec-bomb protection to check the paths after all symbolic
links have been expanded to prevent this situation.
Fixes#43.
FixesHomebrew/homebrew-core#133.
FixedHomebrew/homebrew-core#143.
Closes#46.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
This can happen when `HOMEBREW_CURL` is set to brewed curl, but during
`brew resinstall curl`, brewed curl's symlink is temporary
unlinked.
So let's fallback to /usr/bin/curl in this case.
`uname -p` seems to be less useful on Linux (Debian 8 yields `unknown`),
thus prefer `uname -m` on those systems to determine the processor type.
Closes#35.
Signed-off-by: Martin Afanasjew <martin@afanasjew.de>
On Linux (and other non-OS X platforms), `HOMEBREW_OS_VERSION` was
*always* replaced with the product name, leading to less useful user
agent. E.g., on a reasonably up-to-date Debian system:
Linuxbrew/0.9.9 (Linux; unknown Linuxbrew)
With this fix the user agent is instead (first if `lsb_release` is
available and outputs something, second otherwise):
Linuxbrew/0.9.9 (Linux; unknown Debian GNU/Linux 8.3 (jessie))
Linuxbrew/0.9.9 (Linux; unknown 3.16.0-4-amd64)
We're not sure this is working as it was intended to, and the primary
end product so far has been making every Ruby 1.8.7 build, which is the Ruby
we use on Mavericks for compatibility, take 5-15 minutes longer per build
than 2.x Rubies.
Cumulatively this is responsible for the vast majority of CI slowness over the
last couple months as Mavericks plays catch-up and everything else waits for it
to do so.
We may revisit this in future, but for now the harm is greater than the "risk".
This technically reverts 7b26c585c2.