hflow 0.1.0

A lightweight concurrent task progress manager for CLI applications.
Documentation
# hflow

**hflow** is a lightweight, thread-safe task orchestration library for Rust CLI applications. It provides a hierarchical structure to manage and visualize sequential task groups with real-time feedback.

## Features

* **Thread-Safe Execution**: Utilizes atomic-like synchronization using `Arc<Mutex<T>>` for state management across threads.
* **Hierarchical Task Management**: Organizes work into `ExecutionUnit`, `TaskGroup`, and `ProgressManager` for granular control.
* **Real-time Visual Feedback**: Built-in terminal spinner and status indicators with ANSI escape sequences for line clearing.
* **Automatic Error Handling**: Integrated process termination on unit failure to ensure system integrity during critical deployments.

## Architecture

The library follows a three-tier hierarchy:

1. **ProgressManager**: The top-level orchestrator that manages multiple groups.
2. **TaskGroup**: A collection of units that are executed sequentially within the group's context.
3. **ExecutionUnit**: The atomic unit of work that executes a provided closure in a dedicated background thread.

## Installation

Add the following to your `Cargo.toml`:

```toml
[dependencies]
hflow = { git = "https://github.com/cvalendb/hflow" }
colored = "2.1"

```

## Usage Example

The following example demonstrates how to set up a multi-stage deployment process:

```rust
use hflow::{ProgressManager, TaskGroup, ExecutionUnit, ExecutionStatus};
use std::thread;
use std::time::Duration;

fn main() {
    let mut manager = ProgressManager::new();

    // Group 1: System Initialization
    let mut init_group = TaskGroup::new();
    
    let check_perms = ExecutionUnit::new(
        "Verifying administrator permissions".to_string(),
        |status| {
            thread::sleep(Duration::from_secs(2));
            let mut guard = status.lock().unwrap();
            *guard = ExecutionStatus::Completed;
        }
    );

    init_group.add_unit(check_perms);
    manager.add_group(init_group);

    // Group 2: Network Configuration
    let mut net_group = TaskGroup::new();
    
    let setup_firewall = ExecutionUnit::new(
        "Configuring firewall rules".to_string(),
        |status| {
            thread::sleep(Duration::from_secs(3));
            let mut guard = status.lock().unwrap();
            *guard = ExecutionStatus::Completed;
        }
    );

    net_group.add_unit(setup_firewall);
    manager.add_group(net_group);

    // Start orchestration
    manager.start();
}

```

## Technical Specifications

* **Concurrency Model**: Each `ExecutionUnit` spawns a standard thread for non-blocking logic execution.
* **Terminal UI**: Refresh rate is set to 100ms to balance visual fluidity and CPU overhead.
* **State Management**: Uses `Option::take()` to move closures safely into threads without compromising struct integrity.
? Es ideal para presentar en un portafolio o en el repositorio de **hsupport**. Si necesitas que agregue una sección de "Troubleshooting" o "Contributing", me dices.