Add installer build tooling, CI workflow, and cross-platform Lua runtime support - #2
Conversation
ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Free Run ID: 📒 Files selected for processing (5)
📝 WalkthroughWalkthroughThis PR introduces cross-platform installer generation for OpenBeat, including a GitHub Actions workflow to automatically build macOS DMG and Windows EXE installers, a Python build script to package the CLI executable and Fusion modules, Lua script updates for Windows path handling, and documentation for both CI-built installer installation and local developer builds. Changes
Sequence Diagram(s)sequenceDiagram
participant GHA as GitHub Actions
participant Checkout as Repository
participant PyEnv as Python Environment
participant PyInstaller as PyInstaller
participant BuildScript as Build Script
participant FS as File System
participant DMGTool as hdiutil (macOS)
GHA->>Checkout: Checkout repo
GHA->>PyEnv: Setup Python 3.11
PyEnv->>PyEnv: Install project + pyinstaller
GHA->>BuildScript: Run build_installers.py --platform
BuildScript->>BuildScript: Parse version from pyproject.toml
BuildScript->>PyInstaller: Bundle CLI (--onefile)
PyInstaller->>FS: Generate executable
BuildScript->>FS: Copy Fusion payload assets
alt macOS
BuildScript->>FS: Generate install.command script
BuildScript->>DMGTool: Create installer DMG
DMGTool->>FS: Write *.dmg
else Windows
BuildScript->>FS: Generate installer entry script
BuildScript->>PyInstaller: Bundle as openbeat-installer.exe
PyInstaller->>FS: Generate one-file EXE
end
BuildScript->>FS: Write to dist/installers/
GHA->>FS: Upload artifact
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Poem
Note 🎁 Summarized by CodeRabbit FreeYour organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login. Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 767188c1f6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if lowered:match("python%.exe$") or lowered:match("python$") then | ||
| return shell_quote(bin) .. " -m openbeat.cli" |
There was a problem hiding this comment.
Handle python3 in command_prefix as interpreter
The new command_prefix() logic only appends -m openbeat.cli when the executable ends with python or python.exe, but python_bin() now falls back to python3. In any install where OpenBeatConfig.local.lua is missing/invalid and no .venv Python is found, generated commands become "python3" analyze ... / "python3" click-track ..., which makes Python treat analyze as a script path and fail immediately. This is a regression from the previous behavior where fallback always executed the CLI module.
Useful? React with 👍 / 👎.
Motivation
Description
/.github/workflows/build-installers.ymlto build installers formacosandwindowsand upload artifacts namedopenbeat-<platform>-installer.scripts/build_installers.pywhich invokesPyInstallerto produce a single-file CLI binary and then packages a macOS.dmg(install.command) and a Windows installer.exe(single-file PyInstaller wrapper that installs files into the Resolve Fusion folders).resolve/Fusion/Modules/OpenBeat/OpenBeatCommon.luato be cross-platform by normalizing path separators, addingis_windows,path_sep, Windows-safeshell_quote,command_prefix, improvedpython_bindetection (including.venv/Scripts/python.exe), portabletemp_path, and Windows-aware logging paths; switch calls likeanalyze_sourceandrender_click_trackto use the new command prefix.README.mdto document the new installer options and local build steps, and addbuild/anddist/to.gitignoreto avoid committing build artifacts.Testing
Build Installers) which will run onpush,pull_request, andworkflow_dispatchand will perform the automated build steps when triggered.Codex Task
Summary by CodeRabbit
New Features
Documentation