""" Build helpers for the Prole installer (root-level package). UI-agnostic command composition for the Prole macOS app build. """ from __future__ import annotations from pathlib import Path import tkinter as tk from tkinter import ttk, scrolledtext from . import main as inst_main from . import screen as ui def get_build_command(project_root: Path, env: str | None) -> str: """Return the Prole app build command with an env comment suffix. Example output: cd "/path/to/repo" && ./prole-app/build.sh build # Dev """ env_label = (env or "Dev").strip().title() prole_root = str(project_root) return f"cd \"{prole_root}\" && ./prole-app/build.sh build # {env_label}" # ---------------- Screen (UI) helpers ---------------- def create_build_page(app): """Create the Build page UI and register it via installer.main.""" f = ttk.Frame(app.page_area) f.place(x=0, y=0, relwidth=1, relheight=1) ttk.Label(f, text='Build', style='Title.TLabel').pack(anchor='w', padx=24, pady=(24, 6)) ttk.Label(f, text='Choose a target and build the artifacts.', style='Body.TLabel').pack(anchor='w', padx=24) wrap = ttk.Frame(f) wrap.pack(anchor='w', padx=24, pady=12) ttk.Label(wrap, text='Target Environment:', style='Body.TLabel').pack(side='left') app.deploy_env_var = tk.StringVar(value='Dev') ttk.Combobox(wrap, textvariable=app.deploy_env_var, values=['Dev', 'Service', 'Prod'], state='readonly', width=18).pack(side='left', padx=10) # Build output console app.build_output = scrolledtext.ScrolledText(f, height=12, bg='#fafafa', fg='#1d1d1f') app.build_output.pack(fill='both', expand=True, padx=24, pady=12) inst_main.register_page(app, 'build', f) return f