Important
Read the docs: https://developer.apple.com/documentation/professional_video_applications/fxplug/building_an_fxplug_plug-in_from_an_xcode_template
Note
Host applications (Motion/Final Cut) autodetect the plugin that was built
Apply the built plugin
Test plug-in's parameters
Convert project to generator
Save and publish:
Final cut autodetects the published Generator (or Effect/Title/Transition)
After you build the Xcode project, there should be a process that you can tail logs for.
Assuming a plugin named FXPlug_my-plugin
Find PIDs via pgrep
or Activity Monitor
homer:~ $ pgrep FXPlug
22485
22897
homer:~ $ log stream --process 22485 --process 22897
Filtering the log data using "processIdentifier == 22485 OR processIdentifier == 22897"
Timestamp Thread Type Activity PID TTL
2024-05-12 11:56:56.065051-0400 0x1a0c363 Activity 0xa4259c 22485 0 FXPlug_my-plugin: (RunningBoardServices) didChangeInheritances
2024-05-12 11:56:56.065184-0400 0x1a0c363 Default 0xa4259c 22485 0 FXPlug_my-plugin: (RunningBoardServices) [com.apple.runningboard:connection] Gained inheritances: {(
<RBSInheritance| environment:(none) name:com.apple.frontboard.visibility origID:430-397-174112 0>
)}
2024-05-12 11:57:00.647883-0400 0x1a0cc51 Default 0xa4bda2 22897 0 FXPlug_my-plugin XPC Service: (FxPlug) Unable to perform selector:Selector for parameter ID: 2. It appears the plug-in does not implement this selector.
Tip
Below is a one-liner that gets all process logs that match process name "FXPlug"
Why? This is handy because your process name is stable, but the PID's are random.
homer:~ $ log stream --predicate "processIdentifier IN {$(pgrep FXPlug | xargs | tr ' ' ',')}"
Use log stream --process <PID>
https://github.com/nicklockwood/SwiftFormat