npm package: @helper.js/console
Description: Uma package desenvolvida para facilitar a vida dos devs.
Author: Lucas46521
Latest version: 1.0.0

# helper.console

A Node.js package for running shell commands interactively or programmatically with support for logging, worker threads, and customizable warning controls.

## Installation

Install the package via npm:

```bash
 npm install helper.console
```

## Features

- Execute comandos shell programaticamente ou interativamente.
- Suporte para threads de trabalho para gerenciar a execução simultânea de comandos.
- Registro configurável em um arquivo fora de `node_modules`.
- Controle global de avisos para comandos que exigem muitos recursos ou problemas de permissão.
- Saída de terminal colorida para melhor experiência do usuário.

## Code Usage

Use a classe `Console` para executar comandos programaticamente:

```javascript
const { Console } = require('helper.console');

// Cria uma instância com configurações personalizadas
const console1 = new Console()
  .MaxWorkers(3) // Define o máximo de worker/comandos simultâneos (aumenta a carga de processamento)
  .setLogging({ 
    enabled: true, // Ativa o arquivo de log
    location: './logs/command_log.txt', // Define o local e nome do arquivo
    restartable: false // Define se esse arquivo será resetado a cada reinício do console. (Útil em projetos com painel Pterodactyl)
  })
  .warns(true); // Ativa ou desativa os avisos recebidos durante o uso de comandos como: "Este comando pode usar muitos recursos e levar muito tempo para ser executado!"

// Envia um comando para o console (usando a instância criada e seguindo as configurações da mesma)
async function runCommand() {
  const result = await console1.runEntry('ls -la');
  if (result.error) {
    console.error(result.error);
  } else {
    console.log(result.output);
  }
}

runCommand();
```

## Interactive Usage

Inicia uma sessão de console interativa:

```javascript
const { Console } = require('helper.console');

const console1 = new Console()
  .setLogging({ enabled: true, location: './logs/command_log.txt' })
  .warns(true);

console1.init();
```

Digite os comandos no prompt interativo. Use `exit` para fechar a sessão.

## Static Method

Execute um comando com as configurações padrão:

```javascript
const { Console } = require('helper.console');

async function runStaticCommand() {
  const result = await Console.runEntry('echo "Hello, World!"');
  console.log(result.output || result.error);
}

runStaticCommand();
```

## Configuration

- **`MaxWorkers(count)`**: Define o número máximo de workers simultâneos (deve ser um número positivo).
- **`setLogging(options)`**: Configura o arquivo de log:
  - `enabled`: Boolean para ativar/desativar o log (default: `true`).
  - `location`: Caminho para o arquivo de log (default: `command_log.txt`).
  - `restartable`: Se `true`, limpa o arquivo de log no primeiro uso (default: `false`).
- **`warns(enabled)`**: Ativa ou desativa todos os avisos de comando. `true` exibe os avisos, `false` os oculta.

## Log File Location

O arquivo de log (padrão: `command_log.txt`) é criado na raiz do projeto ou no caminho especificado em `setLogging`. Ele é armazenado fora de `node_modules` para garantir que os logs persistam entre instalações.

## Requirements

- Node.js >= 14.0.0

## License

MIT License. See [LICENSE](LICENSE) for details.

## Contributing

Contributions are welcome! Please open an issue or submit a pull request on the [GitHub repository](https://github.com/your-repo/helper.console).

## Support

For issues or questions, open an issue on the [GitHub repository](https://github.com/your-repo/helper.console).