Um comando para obter explicações simples e fáceis com o Gemini CLI
Olá, sou um inútil.
Há muito tempo não nos vemos. Estava acumulando energia. Brincadeira, só estava procrastinando. Desculpe.
Bem, é uma pequena dica, mas o Gemini CLI foi lançado, o que é uma alegria para os entusiastas da CLI.
Eu apenas adicionei isso ao meu .bashrc.
ghelp() {
(echo "これを説明して" ; cat $1 ) | gemini
}
Não é nada demais, mas agora é mais fácil porque não preciso mais passar pelo navegador para que o LLM explique o código.
Por exemplo, com isso:
[curljs]
thepassenger:[haturatu]:~/git/curljs$ ghelp curl.js
Este código é um script Node.js que usa a biblioteca [Puppeteer](https://pptr.dev/) para obter o conteúdo de uma página web especificada.
Abaixo, explicamos o que cada parte do código faz.
1. **`const puppeteer = require('puppeteer');`**
* Carrega a biblioteca Puppeteer. Esta biblioteca é usada para controlar os navegadores Chrome ou Chromium programaticamente.
2. **`(async () => { ... })();`**
* Esta é uma "função assíncrona autoexecutável". Ao envolver todo o código em uma função assíncrona, o uso da palavra-chave `await` é habilitado internamente. `await` é necessário para aguardar a conclusão de processos demorados (como iniciar o navegador ou carregar uma página).
3. **`const url = process.argv[2];`**
* Armazena o terceiro argumento passado pela linha de comando na variável `url`.
* Exemplo: Se você executar `node script.js https://example.com`, `process.argv[2]` conterá `https://example.com`.
4. **`if (!url) { ... }`**
* Se a URL não for especificada, exibe uma mensagem de erro e encerra o script com `process.exit(1)`.
5. **`const browser = await puppeteer.launch({ headless: true });`**
* Inicia uma nova instância do navegador.
* `headless: true` é uma configuração para executar o navegador em segundo plano sem exibir a interface do usuário (tela). Se você quiser ver o navegador em ação para depuração, defina como `false`.
6. **`const page = await browser.newPage();`**
* Abre uma nova aba (página) no navegador iniciado.
7. **`await page.goto(url, { waitUntil: 'networkidle2' });`**
* Navega para a URL especificada.
* `waitUntil: 'networkidle2'` é uma opção importante para aguardar o carregamento da página. Isso aguarda até que não haja novas conexões de rede por 500 milissegundos após o número de conexões de rede ser igual ou inferior a duas. É útil para exibir corretamente sites modernos (como SPAs) que carregam conteúdo dinamicamente via JavaScript.
8. **`await new Promise(resolve => setTimeout(resolve, 5000));`**
* Após o carregamento da página, aguarda por mais 5 segundos.
* Isso é inserido como um tempo de espera adicional para aguardar animações que não são concluídas apenas com `networkidle2`, ou conteúdo que aparece após uma operação específica.
9. **`const html = await page.content();`**
* Obtém o conteúdo HTML completo da página. Isso inclui todos os elementos HTML gerados dinamicamente por JavaScript.
10. **`console.log(html);`**
* Imprime o HTML obtido no console.
11. **`await browser.close();`**
* Fecha a instância do navegador e libera os recursos. Se você esquecer de fazer isso, o processo pode continuar em execução.
### Resumo
Este script executa o processo de **"obter o conteúdo HTML final de uma página web da URL especificada na linha de comando, após a execução completa do JavaScript, e exibi-lo na saída padrão"**.
Este é um método muito útil para obter informações de sites (como SPAs) que são renderizados dinamicamente com JavaScript e que não podem ser obtidos com uma simples requisição HTTP (por exemplo, para web scraping).
Ele gera a saída assim.
Bem, é só isso....