- Parse PPD translation strings and decode hex escapes (e.g. CD<2F>DVD -> CD/DVD) - Populate InspectorView media type and tray dropdowns with human-readable titles while preserving computer-readable choice codes - Fix empty-array nil coalescing bug in InspectorView preventing empty tray and media type popups - Support OEM vendor PPD keywords (Canon CNIJMediaType/CNIJMediaSupply, Epson EPIJ_FdSo) - Add dual-identity lookup in PrintEngine and InspectorView for robust choice code vs title resolution - Add comprehensive PPDOptionsTests and CLI test runner Closes #1, Closes #2
47 lines
1.2 KiB
Bash
Executable File
47 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Pack vendor-iccery/ (all archs present) into one zip for ICCery to drop into
|
|
# src-tauri/targetprint/ — matching their macos-x86_64 / macos-aarch64 layout.
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
PREFIX="${1:-TargetPrint-vendor-iccery}"
|
|
SRC="$ROOT/build/release-assets/vendor-iccery"
|
|
test -d "$SRC"
|
|
|
|
README="$SRC/README.md"
|
|
cat > "$README" <<'EOF'
|
|
# TargetPrint — vendor into ICCery
|
|
|
|
Drop this directory into ICCery as `src-tauri/targetprint/`:
|
|
|
|
```
|
|
src-tauri/targetprint/
|
|
macos-x86_64/TargetPrint.app
|
|
macos-aarch64/TargetPrint.app
|
|
macos-universal/TargetPrint.app
|
|
```
|
|
|
|
Launch from the Rust side (fire-and-forget, SPEC §16):
|
|
|
|
```rust
|
|
let app = bundled_targetprint_app(); // path to TargetPrint.app/Contents/MacOS/TargetPrint
|
|
Command::new(app)
|
|
.arg("--job")
|
|
.arg(&job_json_path)
|
|
.spawn()?;
|
|
```
|
|
|
|
Pick the folder that matches the ICCery bundle being built
|
|
(`macos-x86_64` / `macos-aarch64`), or ship `macos-universal` in every macOS build.
|
|
|
|
Do not sandbox TargetPrint; it must call `cupsGetPPD`.
|
|
EOF
|
|
|
|
OUT="$ROOT/build/release-assets/${PREFIX}.zip"
|
|
rm -f "$OUT"
|
|
(
|
|
cd "$ROOT/build/release-assets"
|
|
ditto -c -k --keepParent vendor-iccery "$OUT"
|
|
)
|
|
echo "==> $OUT"
|