Skip to content

bufferring/Daywatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Daywatch ⏱️

Daywatch es un Gestor de Tareas de Mantenimiento Institucional multiplataforma, diseñado con una arquitectura limpia (Patrón Estrategia) y una hermosa Interfaz de Usuario de Terminal (TUI).

Permite programar y administrar rutinas de mantenimiento sin lidiar directamente con los complejos comandos de los planificadores de cada sistema operativo. Daywatch traduce tus configuraciones a tareas nativas de Windows o Linux de forma completamente transparente.


✨ Características Principales

  • Multiplataforma Real:
    • En Linux / WSL, se integra nativamente con el demonio cron.
    • En Windows, utiliza schtasks para registrar las tareas en el Programador de Tareas. Compatible incluso con consolas heredadas como la de Windows 7.
  • Interfaz Atractiva (TUI): Construida sobre prompt_toolkit, ofrece menús interactivos, formularios guiados y una paleta de colores moderna (Catppuccin Mocha).
  • Plantillas de Mantenimiento Integradas:
    • 🗑️ Limpieza Profunda de Archivos Temporales (.tmp, .log, caché).
    • 💾 Respaldo de Documentos Administrativos.
    • 🔄 Reinicio para Liberación de Memoria.
    • 📜 Ejecución de Scripts Personalizados (Soporte inteligente para .sh, .bat y .ps1 saltándose restricciones de políticas de ejecución).
  • Ejecución Ad-Hoc: Posibilidad de ejecutar rutinas de mantenimiento de forma inmediata en segundo plano ("Ejecutar ahora mismo"), sin dejar rastro en el historial de tareas programadas.
  • Persistencia Ligera: Los metadatos de las tareas se guardan de forma segura en ~/.daywatch/tareas.json.

🏗️ Arquitectura del Sistema

El núcleo de Daywatch está diseñado utilizando el Patrón Estrategia (Strategy Pattern) para aislar la lógica de la interfaz gráfica de la interacción con el Sistema Operativo subyacente:

  • GestorTareasBase: Clase abstracta que define el contrato y maneja la persistencia en formato JSON.
  • GestorCron: Estrategia implementada para sistemas POSIX (Linux/macOS) que genera y registra sintaxis de crontab.
  • GestorTaskScheduler: Estrategia para entornos NT (Windows) que emite subcomandos para la herramienta CLI schtasks.
  • Inyección de Dependencias: El archivo main.py detecta el SO en tiempo de ejecución, instancia la estrategia correcta y la inyecta a la TUI para que la consuma.

🚀 Instalación y Uso

1. Prerrequisitos

  • Python 3.8 o superior.
  • En Linux/Ubuntu: Asegurarse de tener el paquete python3-venv instalado.

2. Configurar Entorno Virtual

# Crear entorno virtual (Recomendado)
python3 -m venv .venv

# Activar en Linux/WSL/macOS
source .venv/bin/activate

# Activar en Windows (PowerShell)
.\.venv\Scripts\activate

3. Instalar

# Instalar el paquete en modo editable y descargar dependencias (prompt_toolkit)
pip install -e .

4. Ejecutar

Inicia la interfaz gráfica interactiva simplemente escribiendo en tu consola:

daywatch

(Alternativa: python -m daywatch)


📂 Estructura del Proyecto

daywatch/
├── pyproject.toml         # Empaquetado y metadatos (Solo prompt_toolkit)
├── test_backend.py        # Pruebas unitarias de la arquitectura backend
└── daywatch/
    ├── main.py            # Punto de entrada y detección de SO
    ├── modelos.py         # Clases base, Enums y entidades del sistema
    ├── plantillas.py      # Catálogo de rutinas y comandos (Linux/Win)
    ├── gestores/
    │   ├── base.py        # Patrón Estrategia: Clase base
    │   ├── cron.py        # Patrón Estrategia: Motor Linux
    │   └── schtasks.py    # Patrón Estrategia: Motor Windows
    └── ui/
        ├── app.py         # Menú principal de la TUI y Acerca De
        ├── estilos.py     # Tema visual (Catppuccin Mocha)
        ├── formulario.py  # Asistente de creación de tareas
        └── lista_tareas.py# Vista tabular y gestor de eliminación

🛠️ Aspectos Técnicos Destacados

  • Bypass de PowerShell: En Windows, si se carga un archivo .ps1, la aplicación reescribe la orden para invocar powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden, evitando que la tarea falle silenciosamente por restricciones de seguridad.
  • Manejo de Comillas Múltiples: Escaneo inteligente de rutas obtenidas del portapapeles ("Copy as path") para evitar conflictos sintácticos de doble comilla en Windows al interactuar con cmd.
  • Seguridad en Limpieza: Uso de comandos no destructivos para limpieza de temporales, utilizando banderas (2>nul o 2>/dev/null) para evitar fallos catastróficos por colisiones con archivos abiertos por otros procesos en memoria.

About

Gestor de tareas del Sistema Operativo, tanto GNU/Linux como Windows

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages