pub async fn handle_build(config: &Config, app_id: &str) -> Result<()>Expand description
Runs the [artifact].script declared by an app preset (shine app artifact apply <app-id>).
Unlike post_upgrade hooks (which are a background side effect of shine upgrade and
swallow failures so one broken hook doesn’t abort the whole upgrade), this is a single
explicit user action: script failures propagate as a real error, and output streams live
instead of being captured, so the user can see a build fail as it happens.