Metadata-Version: 2.4
Name: mozapp
Version: 0.1.3
Summary: TUI Package and ISO Manager with JSON repository support
Author: MozApp Team
Requires-Dist: httpx>=0.25.0
Requires-Dist: rich>=13.0.0
Requires-Dist: textual>=0.70.0
Description-Content-Type: text/markdown

# MozApp - Wine & Application Package Manager

**MozApp** is a unified Python CLI and Textual TUI package manager built on top of [CheapWine](https://github.com/HeapHeapHooray/cheapwine) and [Maestro-Plus](https://github.com/HeapHeapHooray/maestro-plus). It provides non-interactive and interactive workflows for downloading, mounting, and installing Windows applications, VST plugins, ISO images, and package archives inside a managed Wine prefix environment. Made with Gemini ! 🚀

---

## 🌟 Key Features

- 🍷 **CheapWine & Maestro-Plus Integration**: Built-in environment isolation under `~/.mozapp/cheapwine` with direct command passthrough (`run`, `wine`, `winetricks`, `env`, `tui`, `chocolatey`, `export`, etc.).
- 🛡️ **Guarded Initialisation (`mozapp init`)**: Fetches and executes the maestro-plus setup script in-place inside `~/.mozapp/cheapwine`. Command execution is guarded until initialization completes successfully, with automated cleanup on failure or `--force` reset.
- 📀 **Automated ISO Mounting & Silent Installation (`install_local_ni_iso`)**:
  - Mounts ISO files via `udisksctl` with `-o unhide`.
  - Links to `~/.mozapp/iso_mount_point`.
  - Detects top-level `.exe` installers and executes silent setup (`/s SILENT=TRUE`) via CheapWine.
- ⚡ **Google Drive Virus Warning Bypass**: Automatically detects Google Drive "file is too large to scan" HTML warning pages, extracts session tokens (`confirm=t`, `uuid`), and streams the true binary payload.
- 🔗 **Workspace Prefix Mounting**: Automatically mounts `cheapwine/.cheapwine` to `workspace/.cheapwine` during package installations.
- 📦 **Batch Repository & Direct CLI Installation**:
  - `mozapp install_package <repo_name>` / `mozapp install_iso <repo_name>` installs all items in a repository.
  - Omission of arguments opens the interactive Textual TUI with default table keyboard focus.
- 🖥️ **Interactive Textual TUI**: Live filtering, markdown details, progress bars, and keyboard shortcuts (`Enter`, `b`, `q`).

---

## 📁 Directory Structure (`~/.mozapp`)

All MozApp data and prefixes are isolated in `~/.mozapp`:

| Path | Description |
| :--- | :--- |
| `~/.mozapp/config.json` | Central configuration containing repository sources & sentinel state |
| `~/.mozapp/cheapwine/` | Wine prefix directory & cheapwine binary execution context |
| `~/.mozapp/workspace/` | Package archive extraction & build workspace |
| `~/.mozapp/isos/` | Downloaded ISO image storage |
| `~/.mozapp/iso_mount_point/` | Active ISO mountpoint target |

---

## 🚀 Quick Start & Installation

### Installation
Install MozApp in editable mode:
```bash
uv pip install -e .
```

### Initialisation
Before running any application management commands, initialize the CheapWine prefix context:
```bash
mozapp init
```
*To force re-initialization and clear the existing cheapwine directory, run `mozapp init --force`.*

---

## 📖 Command Reference

### 🎛️ Interactive TUI
```bash
# Open TUI for package repositories
mozapp install_package

# Open TUI for ISO repositories
mozapp install_iso
```

### 📦 Non-Interactive Package & ISO Installation
```bash
# Install a single package from a repository
mozapp install_package "Official Packages" "Sample Package"

# Install ALL packages from a repository
mozapp install_package "Official Packages"

# Install a single ISO from a repository
mozapp install_iso "Google Drive ISO Repo" "Nucleus Lite Edition"

# Install ALL ISOs from a repository
mozapp install_iso "Google Drive ISO Repo"
```

### 💿 Local ISO Mounting & Silent Installation
```bash
# Unmount existing ISO, mount local file via udisksctl (-o unhide), and run silent installer
mozapp install_local_ni_iso /path/to/installer.iso
```

### 🍷 CheapWine & Registered Application Forwarding
MozApp forwards Wine commands directly to `cheapwine` with `WINEPREFIX=~/.mozapp/cheapwine`:
```bash
# Run a registered application or arbitrary Windows executable
mozapp run "Native Access"
mozapp run ./installer.exe

# List registered Wine applications
mozapp list_apps

# Run wine / winetricks inside local prefix
mozapp wine cfg
mozapp winetricks corefonts
```

### 🛠️ Repository Configuration Management
```bash
# List configured repositories or remote repo items
mozapp list
mozapp list package "Official Packages"
mozapp list iso "Google Drive ISO Repo"

# Add a package or ISO repository
mozapp add_repo package "Custom Repos" "https://example.com/packages.json"
mozapp add_repo iso "Custom ISOs" "https://example.com/isos.json"

# Remove a repository
mozapp remove_repo package "Custom Repos"
```

---

## 📝 Configuration (`config.json`)

Example configuration file located at `~/.mozapp/config.json`:

```json
{
  "initialized": true,
  "package_repos": [
    {
      "name": "Official Packages",
      "url": "https://raw.githubusercontent.com/mozapp/sample-repo/main/packages.json"
    }
  ],
  "iso_repos": [
    {
      "name": "Official ISOs",
      "url": "https://raw.githubusercontent.com/mozapp/sample-repo/main/isos.json"
    }
  ]
}
```

---

## 🧪 Testing

Run the full pytest suite:
```bash
pytest
```
