Initial commit: Add term-flow project
This commit is contained in:
237
.README.md
Normal file
237
.README.md
Normal file
@@ -0,0 +1,237 @@
|
||||
# Term Flow
|
||||
|
||||
A CLI tool that records terminal sessions and generates ASCII flowcharts/visualizations. Perfect for documenting workflows, creating tutorials, and visualizing git histories.
|
||||
|
||||
## Features
|
||||
|
||||
- **Session Recording**: Record terminal sessions interactively or from shell history
|
||||
- **Flowchart Generation**: Generate ASCII and Mermaid diagrams from recorded sessions
|
||||
- **Git Visualization**: Visualize git workflows and commit histories
|
||||
- **Pattern Detection**: Automatically detect common command patterns
|
||||
- **Session Comparison**: Compare multiple terminal sessions side by side
|
||||
- **Export Options**: Export to various formats including ASCII, JSON, and Mermaid
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pip install termflow
|
||||
```
|
||||
|
||||
Or from source:
|
||||
|
||||
```bash
|
||||
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/term-flow.git
|
||||
cd term-flow
|
||||
pip install -e .
|
||||
```
|
||||
|
||||
## Quick Start
|
||||
|
||||
### Record a Session
|
||||
|
||||
```bash
|
||||
# Interactive recording
|
||||
termflow record
|
||||
|
||||
# Record from shell history
|
||||
termflow record --from-history --count 100
|
||||
|
||||
# Record with custom name
|
||||
termflow record my-session-name
|
||||
```
|
||||
|
||||
### List Recorded Sessions
|
||||
|
||||
```bash
|
||||
termflow list
|
||||
```
|
||||
|
||||
### Visualize a Session
|
||||
|
||||
```bash
|
||||
# Visualize latest session as ASCII
|
||||
termflow visualize session
|
||||
|
||||
# Visualize with specific style
|
||||
termflow visualize session --style detailed --format ascii
|
||||
|
||||
# Visualize as Mermaid diagram
|
||||
termflow visualize session --format mermaid -o session.mmd
|
||||
```
|
||||
|
||||
### Visualize Git Workflow
|
||||
|
||||
```bash
|
||||
# Visualize current git repository
|
||||
termflow visualize git
|
||||
|
||||
# Export git visualization
|
||||
termflow visualize git --format mermaid -o git-graph.mmd
|
||||
```
|
||||
|
||||
### Compare Sessions
|
||||
|
||||
```bash
|
||||
# Compare two sessions
|
||||
termflow compare --sessions 1 2
|
||||
|
||||
# Compare all sessions
|
||||
termflow compare --all
|
||||
```
|
||||
|
||||
### Export a Session
|
||||
|
||||
```bash
|
||||
# Export to JSON
|
||||
termflow export session --session-id 1 --format json -o session.json
|
||||
|
||||
# Export to ASCII
|
||||
termflow export session --format ascii -o session.txt
|
||||
```
|
||||
|
||||
## Commands
|
||||
|
||||
### record
|
||||
|
||||
Record a terminal session.
|
||||
|
||||
```bash
|
||||
termflow record [NAME] [OPTIONS]
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--interactive/--no-interactive`: Run in interactive mode (default: True)
|
||||
- `--from-history`: Record from shell history
|
||||
- `--count`: Number of history commands to record (default: 50)
|
||||
- `--output, -o`: Output file for session export
|
||||
|
||||
### visualize
|
||||
|
||||
Visualize a session or git workflow.
|
||||
|
||||
```bash
|
||||
termflow visualize <source> [OPTIONS]
|
||||
```
|
||||
|
||||
Sources:
|
||||
- `session`: Visualize a recorded session
|
||||
- `git`: Visualize git workflow
|
||||
|
||||
Options:
|
||||
- `--session-id, -s`: Session ID to visualize
|
||||
- `--style`: Visualization style (compact, detailed, minimal)
|
||||
- `--format, -f`: Output format (ascii, mermaid)
|
||||
- `--output, -o`: Output file
|
||||
- `--analyze/--no-analyze`: Include pattern analysis (default: True)
|
||||
|
||||
### compare
|
||||
|
||||
Compare terminal sessions.
|
||||
|
||||
```bash
|
||||
termflow compare [OPTIONS]
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--sessions`: Session IDs to compare (e.g., --sessions 1 2)
|
||||
- `--all`: Compare all sessions
|
||||
|
||||
### export
|
||||
|
||||
Export a session to file.
|
||||
|
||||
```bash
|
||||
termflow export <source> [OPTIONS]
|
||||
```
|
||||
|
||||
Options:
|
||||
- `--session-id, -s`: Session ID to export
|
||||
- `--format`: Export format (json, ascii, mermaid)
|
||||
- `--output, -o`: Output file (required)
|
||||
|
||||
### list
|
||||
|
||||
List all recorded sessions.
|
||||
|
||||
```bash
|
||||
termflow list
|
||||
```
|
||||
|
||||
### show
|
||||
|
||||
Show details of a specific session.
|
||||
|
||||
```bash
|
||||
termflow show <session_id>
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
Term Flow can be configured using environment variables:
|
||||
|
||||
| Variable | Description | Default |
|
||||
|----------|-------------|---------|
|
||||
| `TERMFLOW_HOME` | Configuration directory | `~/.termflow` |
|
||||
| `TERMFLOW_DB` | Database path | `~/.termflow/sessions.db` |
|
||||
| `TERMFLOW_GIT_CACHE` | Git cache directory | `~/.termflow/git_cache` |
|
||||
| `TERMFLOW_STYLE` | Default visualization style | `detailed` |
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
termflow/
|
||||
├── __main__.py # CLI entry point
|
||||
├── core/
|
||||
│ ├── session.py # Session data model
|
||||
│ ├── recorder.py # Session recording logic
|
||||
│ └── database.py # SQLite database management
|
||||
├── commands/
|
||||
│ ├── record.py # Record command
|
||||
│ ├── visualize.py # Visualize command
|
||||
│ ├── compare.py # Compare command
|
||||
│ └── export.py # Export command
|
||||
├── parsers/
|
||||
│ ├── git_parser.py # Git log parsing
|
||||
│ └── pattern_analyzer.py # Command pattern detection
|
||||
├── exporters/
|
||||
│ ├── ascii_generator.py # ASCII flowchart generation
|
||||
│ ├── mermaid_generator.py # Mermaid diagram generation
|
||||
│ └── graphviz_exporter.py # Graphviz export
|
||||
└── utils/
|
||||
└── config.py # Configuration management
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Setup
|
||||
|
||||
```bash
|
||||
git clone https://7000pct.gitea.bloupla.net/7000pctAUTO/term-flow.git
|
||||
cd term-flow
|
||||
pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
### Running Tests
|
||||
|
||||
```bash
|
||||
pytest tests/ -v
|
||||
```
|
||||
|
||||
### Code Formatting
|
||||
|
||||
```bash
|
||||
ruff check .
|
||||
ruff format .
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Run tests and linting
|
||||
5. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see LICENSE file for details.
|
||||
Reference in New Issue
Block a user