# homebrew-google-terminal-search

Tap Homebrew do google-terminal-search: um `brew install` no lugar de copiar script à mão

- URL: https://fernando.moretes.com/open-source/homebrew-google-terminal-search

- Markdown: https://fernando.moretes.com/open-source/homebrew-google-terminal-search/guide.md?lang=pt

- GitHub: https://github.com/fernando-moretes/dot-homebrew-google-terminal-search

- Homepage: https://fernando.moretes.com

- Language: Ruby

- Topics: cli, developer-tools, homebrew, homebrew-tap, moretes, package-manager, portfolio, ruby

- Stars: 1

- Forks: 0

- Updated: 2026-09-29T16:36:39Z

---

Este repositório é o tap Homebrew do `google-terminal-search`: uma fórmula Ruby que diz ao `brew` de onde baixar a ferramenta, como conferir o hash e onde colocar o executável no `PATH`.

## Por que um repositório só para distribuir um script

O `google-terminal-search` é um script Bash curto, sem dependências, que abre uma busca no Google a partir do terminal. Ele mora em outro repositório, o [`tool-google-terminal-search`](https://github.com/fernando-moretes/tool-google-terminal-search). Este aqui não tem código da ferramenta: tem só a receita de instalação.

A pergunta que importa não é "dá para instalar sem Homebrew?". Dá: basta copiar o arquivo para `/usr/local/bin` e dar `chmod +x`. A pergunta é **como você atualiza isso daqui a seis meses em três máquinas**. Script copiado à mão não tem versão, não tem hash e não tem `upgrade`. Cada máquina fica numa revisão diferente e ninguém sabe qual.

Com o tap, a versão instalada é a que a fórmula aponta, o download é conferido contra um `sha256` fixo e `brew upgrade` resolve o resto. O custo de manter não é escrever a fórmula, que leva minutos. É lembrar de atualizar `url` e `sha256` a cada release, e é isso que a esteira do repositório existe para tornar rotina.

> **O nome do repositório quebra o atalho do `brew tap`:** `brew tap fernando-moretes/google-terminal-search` procura um repositório chamado `homebrew-google-terminal-search`. Depois da migração para a org, o nome passou a ter o prefixo `dot-`, então o atalho falha. Passe a URL explícita no segundo argumento, como no passo a passo abaixo.

## Instalar e usar

1. **Registrar o tap com a URL explícita**: `brew tap fernando-moretes/google-terminal-search https://github.com/fernando-moretes/dot-homebrew-google-terminal-search`. O `brew` clona o repositório em `$(brew --repository)/Library/Taps/` e passa a enxergar a fórmula.

2. **Instalar a fórmula**: `brew install google-terminal-search`. Se outro tap tiver fórmula com o mesmo nome, qualifique: `brew install fernando-moretes/google-terminal-search/google-terminal-search`.

3. **Conferir o que foi instalado**: `brew info google-terminal-search` mostra versão e origem; `brew list google-terminal-search` lista os arquivos e confirma o nome do executável que entrou no `PATH`.

4. **Buscar**: Segundo o README da ferramenta, o comando é `google` seguido da consulta entre aspas, por exemplo `google "lambda timeout 900 segundos"`.

5. **Atualizar e remover**: `brew update && brew upgrade google-terminal-search` puxa a fórmula nova. Para sair: `brew uninstall google-terminal-search` e `brew untap fernando-moretes/google-terminal-search`.

_Instalação completa em três linhas_

```bash
brew tap fernando-moretes/google-terminal-search \
  https://github.com/fernando-moretes/dot-homebrew-google-terminal-search
brew install google-terminal-search
brew info google-terminal-search
```

## O caminho de um `brew install`

O tap só guarda a receita. O artefato vem do repositório da ferramenta, e o hash na fórmula é o que liga os dois.

### 💻 Máquina local

- Homebrew brew tap / install (compute)
- Executável symlink no PATH (storage)

### 🌐 GitHub: tap

- Fórmula Ruby url + sha256 + install (data)
- Workflows do platform pr-lint, CI, release (ci)

### 🌐 GitHub: ferramenta

- tool-google-terminal-search artefato versionado (external)

### Fluxos

- dev -> brew: brew install
- brew -> formula: lê a receita
- brew -> release: baixa e confere sha256
- brew -> bin: instala
- ci -> formula: valida e versiona

## Como a fórmula funciona

Uma fórmula Homebrew é uma classe Ruby que herda de `Formula`. Quatro campos fazem o trabalho:

- **`url`:** aponta para o artefato de uma versão específica, uma tag ou tarball de release do repositório da ferramenta.
- **`sha256`:** o hash que o download precisa bater. Se o arquivo mudar no servidor, o `brew` aborta antes de executar qualquer coisa.
- **`depends_on`:** o que precisa existir antes. Num script Bash sem dependências, a lista tende a ser vazia.
- **`install`:** onde cada arquivo vai, tipicamente `bin.install`, que copia para a Cellar e cria o symlink no `PATH`.

O `sha256` é o campo que mais importa e o que mais falha em silêncio. Fórmula apontando para `main` sem hash instala o que estiver no branch naquele minuto: duas máquinas que rodaram `brew install` em dias diferentes podem ter scripts diferentes sob a mesma versão. Por isso a fórmula precisa apontar para artefato imutável.

O tap é por natureza de terceiro: o `brew` não audita o conteúdo como faz com o `homebrew-core`. Quem instala confia em quem mantém. Abra o `.rb` antes de instalar; são poucas linhas e é o único jeito de saber o que vai rodar na sua máquina.

## Como o repositório é mantido

O repositório segue as convenções de [`fernandofatech/platform`](https://github.com/fernandofatech/platform), as mesmas de todo o portfólio:

- **Branch:** `<tipo>/<escopo>`, com `feat/`, `fix/`, `chore/` ou `docs/`.
- **Commit e título de PR:** [Conventional Commits](https://www.conventionalcommits.org).
- **Versão:** sai dos commits. Ninguém escreve número de versão à mão.

A esteira (`pr-lint`, CI, segurança e release) vem dos workflows reutilizáveis do `platform`. Corrigir a régua é mudar um arquivo lá, não aqui. Para um repositório deste tamanho isso parece exagero, e seria, se fosse só um. Com dezenas de repositórios pequenos, a régua centralizada é o que impede cada um de ter um CI próprio meio quebrado que ninguém lembra de atualizar.

Antes de abrir PR mexendo na fórmula, rode localmente `brew install --build-from-source google-terminal-search` e `brew audit --strict google-terminal-search`. O `audit` pega o que passa no olho: hash faltando, URL sem HTTPS, campo fora de ordem.

## Perguntas frequentes

### Preciso de Ruby instalado?

Não. A fórmula é Ruby, mas quem a interpreta é o próprio Homebrew, que traz o Ruby dele. A ferramenta instalada é Bash.

### Funciona no Linux?

Em princípio sim, via Homebrew on Linux, já que o script não depende de nada específico de macOS para ser instalado. Não testei em todas as distribuições; se algo falhar, abra uma issue com a saída do `brew doctor`.

### Por que não mandar para o `homebrew-core`?

O `homebrew-core` exige notabilidade e um processo de revisão que não faz sentido para um script pessoal com uma estrela. O tap próprio dá versão e `upgrade` sem essa fila.

## Referências

- [GitHub: fernando-moretes/dot-homebrew-google-terminal-search](https://github.com/fernando-moretes/dot-homebrew-google-terminal-search)
- [GitHub: fernando-moretes/tool-google-terminal-search](https://github.com/fernando-moretes/tool-google-terminal-search)
- [fernando.moretes.com](https://fernando.moretes.com)
- [Homebrew: Taps](https://docs.brew.sh/Taps)
- [Homebrew: Formula Cookbook](https://docs.brew.sh/Formula-Cookbook)
- [Conventional Commits](https://www.conventionalcommits.org)

## Para quem é

Use este tap quando você já trabalha com Homebrew e quer o `google-terminal-search` em mais de uma máquina com a mesma versão e `upgrade` de um comando. Se for uma máquina só e você não pretende atualizar, copiar o script direto do repositório da ferramenta resolve com menos peças. Em qualquer dos casos, leia a fórmula antes: tap de terceiro roda com a sua permissão.

## Links

- [GitHub repository](https://github.com/fernando-moretes/dot-homebrew-google-terminal-search)
- [Homepage](https://fernando.moretes.com)
