Um comando para obter explicações simples e fáceis com o Gemini CLI

6 min

language: ja bn en es hi pt ru zh-cn zh-tw

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....

Related Posts