app: defer system.I revert
All checks were successful
Test / Create distribution (push) Successful in 19s
Test / Run NixOS test (push) Successful in 49s

Just returning an error after a successful call of commit will leave garbage behind with no way for the caller to clean them. This change ensures revert is always called after successful commit with at least per-process state enabled.

Signed-off-by: Ophestra <cat@gensokyo.uk>
This commit is contained in:
2025-02-19 21:05:48 +09:00
parent ef81828e0c
commit 3c80fd2b0f
5 changed files with 152 additions and 147 deletions

View File

@@ -1,6 +1,9 @@
package fst
import "context"
import (
"context"
"time"
)
type App interface {
// ID returns a copy of App's unique ID.
@@ -14,10 +17,15 @@ type App interface {
// RunState stores the outcome of a call to [App.Run].
type RunState struct {
// Start is true if fsu is successfully started.
Start bool
// Time is the exact point in time where the process was created.
// Location must be set to UTC.
//
// Time is nil if no process was ever created.
Time *time.Time
// ExitCode is the value returned by shim.
ExitCode int
// RevertErr is stored by the deferred revert call.
RevertErr error
// WaitErr is error returned by the underlying wait syscall.
WaitErr error
}