Skip to content

Commit ab2792e

Browse files
committed
feat: Add CLI module with configuration, update project structure, and refresh documentation.
1 parent 60c553e commit ab2792e

8 files changed

Lines changed: 118 additions & 28 deletions

File tree

README.md

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ A process supervisor with execution control based on system resource state.
33

44
[English](README.md) | [Português](README_ptBR.md)
55

6+
## Table of Contents
7+
- [1. The Library](#1-the-library)
8+
- [Installation](#installation)
9+
- [Quick Start](#quick-start)
10+
- [Why use the library?](#why-use-the-library)
11+
- [Usage Examples](#usage-examples)
12+
- [Configuration Options](#configuration-options)
13+
- [2. CLI](#2-cli)
14+
- [Roadmap & Features](#roadmap--features)
15+
- [Contributing](#contributing)
16+
- [License](#license)
17+
618
**FortScript** is a Python Process Manager, based on RAM monitoring and OS process detection, that automatically starts, pauses, and terminates applications using reactive resource consumption policies.
719

820
---
@@ -11,6 +23,11 @@ A process supervisor with execution control based on system resource state.
1123

1224
FortScript can be integrated into any Python project as a library to manage child processes and monitor system health.
1325

26+
### Installation
27+
```bash
28+
pip install fortscript
29+
```
30+
1431
### Quick Start
1532
```python
1633
from fortscript import FortScript
@@ -27,18 +44,27 @@ app.run()
2744
- **Resource Monitoring**: Built-in hooks for RAM usage and process activity.
2845
- **Multi-Runtime**: Supports Python, Node.js (pnpm), and native Executables.
2946

30-
### Usage Examples
31-
3247
#### 1. Managing Independent Modules
3348
You can use FortScript as a central controller for various scripts scattered across your system.
3449

3550
**config.yaml**:
3651
```yaml
52+
# List of projects to be managed
3753
projects:
3854
- name: "Trading Bot"
3955
path: "C:/Users/Dev/Finance/bot.py"
4056
- name: "Server Monitor"
4157
path: "C:/Users/Dev/Server/monitor.js"
58+
59+
# Processes that, when detected, will pause your projects
60+
heavy_processes:
61+
- name: "Fortnite"
62+
process: "fortnite"
63+
- name: "Video Editor"
64+
process: "resolve"
65+
66+
# RAM usage percentage threshold to trigger safe shutdown
67+
ram_threshold: 90
4268
```
4369
4470
#### 2. Integration in Larger Projects
@@ -54,21 +80,34 @@ def start_services():
5480
manager.run()
5581
```
5682

83+
### Configuration Options
84+
85+
The `config.yaml` file supports the following fields:
86+
87+
| Field | Description | Type | Default |
88+
| :--- | :--- | :--- | :--- |
89+
| `projects` | List of applications to manage. Each item needs a `name` and `path`. | List | `[]` |
90+
| `heavy_processes` | List of processes that trigger a pause. Each item needs a `name` and `process` (substring of the executable name). | List | `[]` |
91+
| `ram_threshold` | Maximum RAM usage percentage allowed before stopping scripts. | Integer | `80` |
92+
5793
---
5894

5995
## 2. CLI
6096

6197
The CLI is an interface designed for a broad audience, allowing for easy process management.
6298

63-
> **Note:** The CLI is currently in development. It will soon be available directly via `pip`.
64-
65-
- **Configuration**: The initialization file paths for your scripts are located in `cli/config.yaml`.
66-
- **Future**: Soon, it will be possible to add the main initialization script to the CLI by running a single command inside the project folder.
67-
6899
### Usage
100+
If you are developing locally:
69101
```bash
70-
uv run cli/cli.py
102+
uv run fort
71103
```
104+
After installation, simply run:
105+
```bash
106+
fort
107+
```
108+
109+
- **Configuration**: The CLI looks for a `config.yaml` file in the same directory as the script.
110+
- **Auto-detection**: Soon, it will be possible to add the main initialization script to the CLI by running a single command inside the project folder.
72111

73112
---
74113

@@ -80,8 +119,8 @@ The following list tracks the progress of our features and future implementation
80119
- [x] **RAM Usage Monitoring**: Automatic triggers based on memory percentage.
81120
- [x] **Unified Script Runner**:
82121
- [x] Native Executables (`.exe`)
83-
- [x] Python Scripts (`.py`)
84-
- [x] JavaScript/TypeScript Projects (`package.json`)
122+
- [ ] Python Scripts (`.py`)
123+
- [ ] JavaScript/TypeScript Projects (`package.json`)
85124
- [ ] **System Integration**:
86125
- [ ] Auto-start with Windows/Linux.
87126
- [ ] System Tray (Icon) support for background operation.
@@ -103,4 +142,3 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
103142
---
104143

105144
Developed with ❤️ by [WesleyyDev](https://github.com/WesleyQDev)
106-
>>>>>>> v02

README_ptBR.md

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,19 @@
22

33
Um supervisor de processos com controle de execução baseado no estado dos recursos do sistema.
44

5-
[English](README.md) | [Português](README_PT-BR.md)
5+
[English](README.md) | [Português](README_ptBR.md)
6+
7+
## Sumário
8+
- [1. A Biblioteca](#1-a-biblioteca)
9+
- [Instalação](#instalação)
10+
- [Início Rápido](#início-rápido)
11+
- [Por que usar a biblioteca?](#por-que-usar-a-biblioteca)
12+
- [Exemplos de Uso](#exemplos-de-uso)
13+
- [Opções de Configuração](#opções-de-configuração)
14+
- [2. CLI](#2-cli)
15+
- [Roadmap & Funcionalidades](#roadmap--funcionalidades)
16+
- [Contribuição](#contribuição)
17+
- [Licença](#licença)
618

719
**FortScript** é um Process Manager em Python, baseado em monitoramento de RAM e detecção de processos do sistema operacional, que inicia, pausa e encerra aplicações automaticamente usando políticas reativas de consumo de recursos.
820

@@ -12,6 +24,11 @@ Um supervisor de processos com controle de execução baseado no estado dos recu
1224

1325
O FortScript pode ser integrado em qualquer projeto Python como uma biblioteca para gerenciar processos filhos e monitorar a saúde do sistema.
1426

27+
### Instalação
28+
```bash
29+
pip install fortscript
30+
```
31+
1532
### Início Rápido
1633
```python
1734
from fortscript import FortScript
@@ -28,18 +45,27 @@ app.run()
2845
- **Monitoramento de Recursos**: Hooks integrados para uso de RAM e atividade de processos.
2946
- **Multi-Runtime**: Suporta Python, Node.js (pnpm) e Executáveis nativos.
3047

31-
### Exemplos de Uso
32-
3348
#### 1. Gerenciando Módulos Independentes
3449
Você pode usar o FortScript como um controlador central para vários scripts espalhados pelo seu sistema.
3550

3651
**config.yaml**:
3752
```yaml
53+
# Lista de projetos a serem gerenciados
3854
projects:
3955
- name: "Bot de Trade"
4056
path: "C:/Users/Dev/Finance/bot.py"
4157
- name: "Monitor de Servidor"
4258
path: "C:/Users/Dev/Server/monitor.js"
59+
60+
# Processos que, quando detectados, pausarão seus projetos
61+
heavy_processes:
62+
- name: "Fortnite"
63+
process: "fortnite"
64+
- name: "Editor de Vídeo"
65+
process: "resolve"
66+
67+
# Limite de porcentagem de uso de RAM para acionar o desligamento seguro
68+
ram_threshold: 90
4369
```
4470
4571
#### 2. Integração em projetos maiores
@@ -55,21 +81,34 @@ def iniciar_servicos():
5581
gerenciador.run()
5682
```
5783

84+
### Opções de Configuração
85+
86+
O arquivo `config.yaml` suporta os seguintes campos:
87+
88+
| Campo | Descrição | Tipo | Padrão |
89+
| :--- | :--- | :--- | :--- |
90+
| `projects` | Lista de aplicações para gerenciar. Cada item precisa de `name` e `path`. | Lista | `[]` |
91+
| `heavy_processes` | Lista de processos que ativam a pausa. Cada item precisa de `name` e `process` (parte do nome do executável). | Lista | `[]` |
92+
| `ram_threshold` | Porcentagem máxima de uso de RAM permitida antes de parar os scripts. | Inteiro | `80` |
93+
5894
---
5995

6096
## 2. CLI
6197

6298
A CLI é uma interface projetada para um público amplo, permitindo o gerenciamento fácil de processos.
6399

64-
> **Nota:** A CLI está atualmente em desenvolvimento. Em breve estará disponível diretamente via `pip`.
65-
66-
- **Configuração**: Os paths dos arquivos de inicialização dos seus scripts ficam localizados em `cli/config.yaml`.
67-
- **Futuro**: Em breve, será possível adicionar o script principal de inicialização à CLI executando apenas um comando dentro da pasta do projeto.
68-
69100
### Uso
101+
Se você estiver desenvolvendo localmente:
70102
```bash
71-
uv run cli/cli.py
103+
uv run fort
72104
```
105+
Após a instalação, basta executar:
106+
```bash
107+
fort
108+
```
109+
110+
- **Configuração**: A CLI procura por um arquivo `config.yaml` no mesmo diretório do script.
111+
- **Auto-detecção**: Em breve, será possível adicionar o script principal de inicialização à CLI executando apenas um comando dentro da pasta do projeto.
73112

74113
---
75114

@@ -80,9 +119,9 @@ A lista a seguir acompanha o progresso de nossas funcionalidades e futuras imple
80119
- [x] **Monitorar Processos Pesados**: Detecção de aplicativos que consomem muitos recursos.
81120
- [x] **Monitorar Uso de Memória RAM**: Gatilhos automáticos baseados na porcentagem de memória.
82121
- [x] **Executor de Scripts Unificado**:
83-
- [x] Executáveis nativos (`.exe`)
122+
- [ ] Executáveis nativos (`.exe`)
84123
- [x] Scripts Python (`.py`)
85-
- [x] Projetos JavaScript/TypeScript (`package.json`)
124+
- [ ] Projetos JavaScript/TypeScript (`package.json`)
86125
- [ ] **Integração com o Sistema**:
87126
- [ ] Iniciar automaticamente com o Windows/Linux.
88127
- [ ] Suporte a System Tray (ícone na barra de tarefas) para operação em segundo plano.

pyproject.toml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,34 @@
11
[project]
22
name = "fortscript"
33
version = "0.2.0"
4-
description = "Ferramenta para automação e controle de processos, otimizada para economizar memória e processamento do sistema."
4+
authors = [
5+
{ name="Wesley Queiroz" },
6+
]
7+
description = "A process supervisor with execution control based on system resource state."
58
readme = "README.md"
69
requires-python = ">=3.12"
10+
license = "MIT"
11+
license-files = ["LICEN[CS]E*"]
712
dependencies = [
813
"psutil>=7.1.3",
914
"pyyaml>=6.0.3",
1015
"rich>=14.2.0",
1116
]
1217

18+
classifiers = [
19+
"Programming Language :: Python :: 3",
20+
"License :: OSI Approved :: MIT License",
21+
"Operating System :: OS Independent",
22+
]
23+
1324
[project.scripts]
1425
fort = "fortscript.cli.cli:main"
1526

16-
[tool.setuptools]
17-
packages = ["fortscript"]
18-
include-package-data = true
27+
[project.urls]
28+
Repository = "https://github.com/WesleyQDev/fortscript"
29+
30+
1931

20-
[tool.setuptools.package-data]
21-
"fortscript.cli" = ["*.yaml"]
32+
[build-system]
33+
requires = ["uv_build >= 0.9.17, <0.10.0"]
34+
build-backend = "uv_build"

0 commit comments

Comments
 (0)