Skip to content

Commit 28bbc17

Browse files
committed
feat: update README_ptBR.md for clarity and enhance project descriptions
1 parent eb6544b commit 28bbc17

1 file changed

Lines changed: 69 additions & 142 deletions

File tree

README_ptBR.md

Lines changed: 69 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Você já deixou um bot, uma API ou um script rodando em segundo plano enquanto
3030

3131
**FortScript resolve isso automaticamente.** Ele pausa seus scripts quando você abre um jogo ou aplicativo pesado, e retoma quando você fecha. Simples assim.
3232

33-
**Multiplaforma** FortScript foi desenvolvido para funcionar em qualquer plataforma seja Windows, Linux ou MacOS.
33+
**Multiplataforma:** O FortScript foi desenvolvido para funcionar em qualquer sistema operacional, seja Windows, Linux ou MacOS.
3434

3535
### Como funciona
3636

@@ -173,7 +173,7 @@ app.run()
173173

174174
> **Dica:** Você pode combinar as duas formas! Argumentos passados no código sobrescrevem os valores do arquivo YAML.
175175

176-
Fortscript está em constante evolução, em próximas versões sera possivel executar projetos de outras linguagens, assim como poder escolher a forma de como o projeto sera iniciado como qual gerenciador de pacotes usar para iniciar o script/projeto.
176+
**Nota:** O FortScript está em constante evolução. Em próximas versões, será possível executar projetos de outras linguagens, além de escolher o gerenciador de pacotes para iniciar cada script/projeto.
177177

178178
### Tipos de projeto/script atualmente suportados
179179

@@ -199,30 +199,7 @@ app = FortScript()
199199
app.run()
200200
```
201201

202-
### Opção 2: Configuração via argumentos (sem arquivo YAML)
203-
204-
Passe todas as configurações diretamente no código:
205-
206-
```python
207-
from fortscript import FortScript
208-
209-
app = FortScript(
210-
projects=[
211-
{"name": "Meu Bot Discord", "path": "./bot/main.py"},
212-
],
213-
heavy_process=[
214-
{"name": "Valorant", "process": "valorant"},
215-
{"name": "League of Legends", "process": "leagueclient"},
216-
],
217-
ram_threshold=90,
218-
ram_safe=80,
219-
log_level="INFO",
220-
)
221-
222-
app.run()
223-
```
224-
225-
### Opção 3: Com callbacks de eventos
202+
### Opção 2: Com callbacks de eventos
226203

227204
Execute funções personalizadas quando os scripts são pausados ou retomados:
228205

@@ -246,56 +223,66 @@ app = FortScript(
246223
app.run()
247224
```
248225

249-
### Opção 4: Configuração completa (todos os argumentos)
226+
### Opção 3: Configuração completa (Python Dinâmico)
250227

251-
Exemplo com todos os parâmetros disponíveis:
228+
Para manter seu código organizado, você pode separar as listas de projetos e processos em variáveis.
252229

253230
```python
254231
from fortscript import FortScript
255232
233+
# 1. Defina seus callbacks
256234
def notificar_pausa():
257235
print("⏸️ Scripts pausados!")
258236
259237
def notificar_retomada():
260238
print("▶️ Scripts retomados!")
261239
240+
# 2. Defina seus projetos
241+
meus_projetos = [
242+
{"name": "Bot Discord", "path": "./bot/main.py"},
243+
{"name": "API Express", "path": "./api/package.json"},
244+
{"name": "Servidor", "path": "./server/app.exe"},
245+
]
246+
247+
# 3. Defina os processos pesados
248+
meus_processos = [
249+
{"name": "GTA V", "process": "gta5"},
250+
{"name": "Cyberpunk 2077", "process": "cyberpunk2077"},
251+
{"name": "Chrome (Pesado)", "process": "chrome"},
252+
]
253+
254+
# 4. Inicialize o FortScript
262255
app = FortScript(
263-
config_path="fortscript.yaml", # Arquivo de configuração (opcional)
264-
projects=[ # Lista de projetos
265-
{"name": "Bot Discord", "path": "./bot/main.py"},
266-
{"name": "API Express", "path": "./api/package.json"},
267-
{"name": "Servidor", "path": "./server/app.exe"},
268-
],
269-
heavy_process=[ # Processos pesados
270-
{"name": "GTA V", "process": "gta5"},
271-
{"name": "Cyberpunk 2077", "process": "cyberpunk2077"},
272-
],
273-
ram_threshold=90, # Pausar se RAM > 90%
274-
ram_safe=80, # Retomar se RAM < 80%
275-
on_pause=notificar_pausa, # Callback ao pausar
276-
on_resume=notificar_retomada, # Callback ao retomar
277-
log_level="DEBUG", # Nível de log
256+
projects=meus_projetos,
257+
heavy_process=meus_processos,
258+
ram_threshold=90, # Pausar se RAM > 90%
259+
ram_safe=80, # Retomar se RAM < 80%
260+
on_pause=notificar_pausa,
261+
on_resume=notificar_retomada,
262+
log_level="DEBUG",
278263
)
279264
280265
app.run()
281266
```
282267

283-
### Opção 5: Via CLI (terminal)
268+
### Opção 4: Via CLI (terminal)
284269

285-
Ideal para uso pessoal, sem escrever código
270+
Ideal para uso rápido ou testes básicos.
286271

287272
```bash
288273
fort
289274
```
290275

291-
> **Nota:** A CLI atualmente executa o FortScript a partir do `src\fortscript\cli\fortscript.yaml` o que não seria o ideal. Em versões futuras as configurações serão guardadas globalmente e comandos adicionais como `fort add` serão adicionados.
276+
> **Atenção:** Atualmente, a CLI busca as configurações no arquivo interno do pacote (`src/fortscript/cli/fortscript.yaml`), o que limita a personalização local via CLI. Para projetos reais, recomenda-se o uso via script Python (Opções 1 a 3) até que o suporte a configurações locais na CLI seja implementado.
292277

293278
---
294279

295280
## Exemplo Prático: Modo Gaming
296281

297282
Imagine que você é um desenvolvedor que roda scripts de trabalho (bots, APIs, automações) durante o dia, mas quer jogar à noite sem que o PC fique travando.
298283

284+
Neste exemplo, usaremos a lista de jogos integrada (`GAMES`) do FortScript para não precisar configurar cada jogo manualmente.
285+
299286
### Estrutura do projeto
300287

301288
```text
@@ -306,147 +293,87 @@ meu_projeto/
306293
├── api_local/
307294
│ ├── node_modules/
308295
│ └── package.json # API Express rodando localmente
309-
├── automacao/
310-
│ └── backup.exe # Script de backup automático
311-
├── fortscript.yaml
312-
└── modo_gaming.py
313-
```
314-
315-
### Arquivo `fortscript.yaml`
316-
317-
```yaml
318-
projects:
319-
- name: "Bot Discord"
320-
path: "./bot_discord/main.py"
321-
- name: "API Local"
322-
path: "./api_local/package.json"
323-
- name: "Backup Automático"
324-
path: "./automacao/backup.exe"
325-
326-
heavy_processes:
327-
- name: "GTA V"
328-
process: "gta5"
329-
- name: "Cyberpunk 2077"
330-
process: "cyberpunk2077"
331-
- name: "Valorant"
332-
process: "valorant"
333-
- name: "League of Legends"
334-
process: "leagueclient"
335-
- name: "CS2"
336-
process: "cs2"
337-
- name: "Fortnite"
338-
process: "fortnite"
339-
- name: "Apex Legends"
340-
process: "r5apex"
341-
342-
ram_threshold: 85
343-
ram_safe: 75
344-
log_level: "INFO"
296+
└── modo_gaming.py # Seu script gerenciador
345297
```
346298

347-
### Arquivo `modo_gaming.py` (versão completa com todos os argumentos)
299+
### Arquivo `modo_gaming.py`
348300

349301
```python
350302
import os
351-
from fortscript import FortScript
303+
from fortscript import FortScript, GAMES
352304
353-
# Caminhos dos projetos
305+
# Caminhos dos projetos (usando os.path para compatibilidade)
354306
base_dir = os.path.dirname(os.path.abspath(__file__))
355307
bot_path = os.path.join(base_dir, "bot_discord", "main.py")
356308
api_path = os.path.join(base_dir, "api_local", "package.json")
357-
backup_path = os.path.join(base_dir, "automacao", "backup.exe")
358309
359-
# Projetos que serão gerenciados
310+
# Lista de projetos para gerenciar
360311
meus_projetos = [
361312
{"name": "Bot Discord", "path": bot_path},
362313
{"name": "API Local", "path": api_path},
363-
{"name": "Backup Automático", "path": backup_path},
364314
]
365315
366-
# Jogos e aplicativos pesados
367-
meus_jogos = [
368-
{"name": "GTA V", "process": "gta5"},
369-
{"name": "Cyberpunk 2077", "process": "cyberpunk2077"},
370-
{"name": "Valorant", "process": "valorant"},
371-
{"name": "League of Legends", "process": "leagueclient"},
372-
{"name": "CS2", "process": "cs2"},
373-
{"name": "Fortnite", "process": "fortnite"},
374-
{"name": "Apex Legends", "process": "r5apex"},
375-
{"name": "Premiere Pro", "process": "premiere"},
376-
{"name": "After Effects", "process": "afterfx"},
316+
# Combinando a lista de jogos padrão com processos personalizados
317+
# GAMES já inclui GTA, Valorant, CS2, LOL, Fortnite, etc.
318+
meus_processos_pesados = GAMES + [
319+
{"name": "Editor De Vídeo", "process": "premiere"},
320+
{"name": "Compilador C++", "process": "cl"}
377321
]
378322
379-
380323
def ao_pausar():
381-
"""Executado quando os scripts são pausados."""
382324
print("=" * 50)
383325
print("🎮 MODO GAMING ATIVADO!")
384326
print("Seus scripts foram pausados para liberar recursos.")
385-
print("Bom jogo! 🚀")
386327
print("=" * 50)
387-
# Aqui você pode: enviar notificação, webhook Discord, etc.
388-
389328
390329
def ao_retomar():
391-
"""Executado quando os scripts são retomados."""
392330
print("=" * 50)
393-
print("💻 MODO TRABALHO ATIVADO!")
394-
print("Jogo fechado. Retomando seus scripts...")
395-
print("De volta ao trabalho! 📊")
331+
print("💻 MODO TRABALHO - Retomando seus scripts...")
396332
print("=" * 50)
397-
# Aqui você pode: reconectar serviços, enviar log, etc.
398-
399333
400-
# Inicializa o FortScript com TODOS os argumentos disponíveis
334+
# Inicializa o FortScript
401335
app = FortScript(
402-
config_path="fortscript.yaml", # Arquivo de configuração base (opcional)
403-
projects=meus_projetos, # Lista de projetos para gerenciar
404-
heavy_process=meus_jogos, # Lista de processos pesados
405-
ram_threshold=85, # Pausar se RAM ultrapassar 85%
406-
ram_safe=75, # Retomar apenas quando RAM < 75%
407-
on_pause=ao_pausar, # Função callback ao pausar
408-
on_resume=ao_retomar, # Função callback ao retomar
409-
log_level="DEBUG", # Nível de log (DEBUG para ver tudo)
336+
projects=meus_projetos,
337+
heavy_process=meus_processos_pesados,
338+
ram_threshold=85,
339+
ram_safe=75,
340+
on_pause=ao_pausar,
341+
on_resume=ao_retomar,
410342
)
411343
412-
413344
if __name__ == "__main__":
414-
print("🎯 FortScript: Modo Gaming")
415-
print("Monitorando sistema... Abra um jogo para testar!")
416-
print("-" * 50)
345+
print("🎯 FortScript: Modo Gaming Iniciado")
417346
app.run()
418347
```
419348

420349
### Como funciona
421350

422351
1. **Inicie o script:** `python modo_gaming.py`
423-
2. **Abra qualquer jogo da lista** (GTA V, Valorant, etc.)
352+
2. **Abra qualquer jogo** (GTA V, Valorant, etc.) ou abra o Premiere.
424353
3. **FortScript automaticamente:**
425-
- Detecta o jogo
426-
- Pausa o Bot Discord, API e Backup
427-
- Executa a função `ao_pausar()` (mostra mensagem de gaming)
428-
4. **Feche o jogo**
354+
- Detecta o processo.
355+
- Pausa o Bot Discord e a API.
356+
- Exibe a mensagem de "MODO GAMING".
357+
4. **Feche o jogo.**
429358
5. **FortScript automaticamente:**
430-
- Detecta que o jogo fechou
431-
- Aguarda a RAM estabilizar abaixo de 75%
432-
- Retoma todos os scripts
433-
- Executa a função `ao_retomar()` (mostra mensagem de trabalho)
359+
- Detecta o fechamento.
360+
- Aguarda a RAM baixar de 75%.
361+
- Retoma todos os scripts.
434362

435363
---
436364

437365
## Roadmap
438-
> Se tiver uma ideia você pode sugerir novas funcionalidades criando uma `issue`
366+
> Se tiver uma ideia, você pode sugerir novas funcionalidades criando uma `issue`.
439367

440368
### Biblioteca
441369

442-
- [ ] **Funções customizadas**: Gerenciar funções Python criando treadhs.
443-
- [ ] **Condições por Projeto** permitir que um projeto específico só pause se um aplicativo específico abrir. Exemplo: "Pausar o script do bot apenas se o Cyberpunk2077 abrir, mas deixar o Bot do Discord rodando".
444-
- [ ] Tentar fazer um encerramento amigavel do script antes de usar um terminate()
445-
- [ ] Tratamento de Processos Mortos: Se um script que o FortScript iniciou fechar sozinho (erro ou crash), a biblioteca ainda vai achar que ele está rodando até o próximo ciclo. Seria bom verificar se o processo ainda está "alive" periodicamente.
446-
- [ ]bstração de Projetos (Refatoração): Atualmente, o
447-
start_scripts
448-
tem um if/elif gigante para detectar o tipo de arquivo. Seria muito mais elegante ter classes separadas: PythonProject, NodeProject, ExeProject, todas herdando de uma classe base Project. Assim, adicionar um novo tipo (como Go ou Docker) seria apenas criar uma nova classe.
449-
- Type Hinting: Adicione dicas de tipo em todos os métodos para melhorar o intellisense para quem for usar sua biblioteca. Exm: def load_config(self, path: str) -> dict:.
370+
- [ ] **Funções Customizadas**: Gerenciar funções Python criando threads separadas.
371+
- [ ] **Condições por Projeto**: Permitir que um projeto específico só pause se um aplicativo específico abrir.
372+
- [ ] **Encerramento Amigável**: Tentar um encerramento gracioso (SIGINT/CTRL+C) antes de forçar o término do processo.
373+
- [ ] **Tratamento de Processos Mortos**: Verificar periodicamente se os processos iniciados ainda estão vivos.
374+
- [ ] **Abstração de Projetos**: Refatorar para classes (`PythonProject`, `NodeProject`) facilitando a adição de novas linguagens.
375+
- [ ] **Type Hinting**: Melhorar a tipagem em todos os métodos para melhor suporte em IDEs.
376+
450377
### CLI
451378

452379
- [ ] **System Tray**: Rodar minimizado na bandeja do sistema.
@@ -455,13 +382,13 @@ start_scripts
455382
- `fort list` - Listar projetos configurados
456383
- `fort remove <name>` - Remover projeto
457384

458-
459385
---
460386

461387
## Funcionalidades Atuais
462388

463389
- [x] Pausa automática ao detectar aplicativos pesados
464390
- [x] Pausa automática por limite de RAM
391+
- [x] Lista integrada com +150 jogos e apps (`from fortscript import GAMES`)
465392
- [x] Retomada com histerese (ram_safe vs ram_threshold)
466393
- [x] Suporte a scripts Python com detecção de `.venv`
467394
- [x] Suporte a projetos Node.js via `npm run start`

0 commit comments

Comments
 (0)