<div align="center">
  <img src="logo.png" alt="JRA Logo" width="200"/>
</div>

# JustRunAlready — Cross‑Platform App Bundler

Minimal, predictable bundler that stages your built app into a runnable bundle
across Linux, macOS, and Windows. It discovers dependencies, copies what you
ship, patches load paths (RPATH/@rpath/PE), and places assets consistently.
One CLI and one config on every platform.

## Features
- Single CLI and TOML config for Linux/macOS/Windows
- Dependency closure for ELF/Mach‑O/PE (patchelf/install_name_tool aware)
- Canonical layouts (AppDir on Linux, .app on macOS, flat on Windows)

## Examples

Basic example:
```toml
[app]
name = "MyApp"
staging_root = "install"
binary = "bin/myapp"

[layout.linux]
appdir = "AppDir"
bin_dir = "usr/bin"
lib_dir = "usr/lib"
rpath = ["$ORIGIN", "$ORIGIN/../lib"]

[layout.macos]
app_bundle = "install/MyApp.app"
frameworks_dir = "Contents/Frameworks"
qml_dir = "Contents/Resources/qml"
rpath = ["@executable_path/../Frameworks"]

[layout.windows]
bin_dir = "bin"
qml_dir = "bin/qml"

include = ["lib/*.so", "lib/*.dylib"]
```

Qt Example (plugins + QML)
```toml
[app]
name = "Index"
staging_root = "install"
binary = "bin/index"

[layout.linux]
appdir = "AppDir"
bin_dir = "usr/bin"
lib_dir = "usr/lib"
plugin_dirs = ["usr/bin/plugins/index"]
qml_dir = "usr/qml"
rpath = ["$ORIGIN", "$ORIGIN/../lib", "$ORIGIN/plugins/index"]

[layout.macos]
app_bundle = "install/Index.app"
frameworks_dir = "Contents/Frameworks"
plugins_dir = "Contents/PlugIns/index"
qml_dir = "Contents/Resources/qml"
rpath = ["@executable_path/../Frameworks"]

[layout.windows]
bin_dir = "bin"
plugin_dirs = ["bin/plugins/index"]
qml_dir = "bin/qml"

[qt]
plugins_dir = "/opt/Qt/6.7.3/gcc_64/plugins"

[qt.keep_plugins]
platforms = ["xcb", "cocoa", "windows"]
sqldrivers = ["sqlite"]

[qt.prune_plugins]
sqldrivers = ["odbc", "psql", "mimer"]

include = ["bin/plugins/index/*"]
```

## CLI

Bundle up your built project:

```
jra bundle --config jra.toml [--platform auto|linux|macos|windows] [--dry-run] [--verbose]
```

(Optionally) verify nothing is missing:
```
jra verify --config jra.toml [--platform linux|macos|windows]
```
