Metadata-Version: 2.4
Name: dstack-yaml-manager
Version: 0.1.4
Summary: A Terminal User Interface for managing dstack YAML configurations
Home-page: https://github.com/dstack-mgmt/dstack-mgmt-tool
Author: dstack Management Tool Contributors
Author-email: 
Project-URL: Bug Reports, https://github.com/dstack-mgmt/dstack-mgmt-tool/issues
Project-URL: Source, https://github.com/dstack-mgmt/dstack-mgmt-tool
Project-URL: Documentation, https://github.com/dstack-mgmt/dstack-mgmt-tool#readme
Keywords: dstack yaml tui management terminal cli
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Utilities
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Environment :: Console
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: textual>=0.38.0
Requires-Dist: rich>=13.0.0
Requires-Dist: PyYAML>=6.0
Provides-Extra: dev
Requires-Dist: pytest>=7.0.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# dstack Management Tool

A powerful Terminal User Interface (TUI) for managing dstack YAML configurations with virtual file storage, note-taking, and intelligent state restoration.

## Features

🌳 **Virtual File Tree** - Organize dstack YAML files by type (Task, Service, Fleet, Server) and custom groups  
📝 **Note Taking** - Add markdown notes to any file with auto-save functionality  
💾 **SQLite Storage** - All files and metadata stored in a local database  
🔄 **State Restoration** - Automatically restore your session when switching between directories  
⚡ **Fast Navigation** - Keyboard shortcuts for all operations  
📋 **Smart Clipboard** - Copy file paths and dstack commands with Ctrl+A  
🎯 **File Management** - Add, delete, and organize files with confirmation dialogs  

## Installation

Install via pip:

```bash
pip install dstack-yaml-manager
```

Or install from source:

```bash
git clone <repository-url>
cd dstack-mgmt-tool
pip install -e .
```

## Configuration

On first run, the tool automatically creates a configuration file at `~/.dstack-mgmt/config.yml`:

```yaml
database:
  path: ~/.dstack-mgmt/dstack_manager.db
  auto_backup: true
  backup_count: 5
ui:
  auto_save_notes: true
  auto_save_delay: 1.0
  restore_state: true
paths:
  default_workspace: ~/
  scan_hidden_dirs: false
```

## Usage

### Basic Usage

```bash
# Launch in current directory
dstack-yaml-manager

# Launch in specific directory
dstack-yaml-manager ~/my-dstack-project

# Show configuration
dstack-yaml-manager --config

# Reset configuration to defaults
dstack-yaml-manager --reset-config
```

### Keyboard Shortcuts

| Key | Action |
|-----|--------|
| `Ctrl+X` | Smart quit (saves state and exits) |
| `Ctrl+N` | Add new file to database |
| `Ctrl+G` | Create new custom group |
| `Ctrl+R` | Refresh file tree |
| `Ctrl+A` | Navigate to file (copy paths/commands) |
| `Ctrl+S` | Save current note |
| `Ctrl+U` | Rename selected file or group |
| `Delete` / `Ctrl+D` | Delete selected file/group |
| `Escape` | Exit note editing mode |
| `Tab` | Auto-complete file paths |
| `↑↓←→` | Navigate tree and scroll preview |

### File Organization

Files are automatically grouped by type:
- **Task** - `*.task.dstack.yml`
- **Service** - `*.service.dstack.yml` 
- **Fleet** - `*.fleet.dstack.yml`
- **Server** - `*.server.dstack.yml`
- **Unknown** - Other `.dstack.yml` files

You can also create custom groups and assign files to them.

### Note Taking

Click on the **Note** tab to add markdown notes to any selected file. Notes are:
- Auto-saved as you type (1-second delay)
- Manually saved with `Ctrl+S`
- Stored in the SQLite database
- Persistent across sessions

### State Restoration

The tool automatically saves and restores your session state including:
- Selected file and active tab
- Expanded tree nodes
- Last working directory

## Database Location

By default, the database is stored at `~/.dstack-mgmt/dstack_manager.db`. You can change this in the configuration file.

## Development

Install development dependencies:

```bash
pip install -e ".[dev]"
```

Run tests:

```bash
pytest
```

Format code:

```bash
black dstack_mgmt/
```

## License

MIT License - see LICENSE file for details.

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## Requirements

- Python 3.8+
- textual >= 0.38.0
- rich >= 13.0.0
- PyYAML >= 6.0
