Created
May 18, 2021 13:58
-
-
Save cardil/120788c677bf6b02c9f2029a05081468 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
func waitForUser() pkgupgrade.BackgroundOperation { | |
file, err := homedir.Expand( | |
fmt.Sprintf("~/.cache/waitForUser-%s.sock", uuid.NewString()), | |
) | |
ensure.NoError(err) | |
var mod time.Time | |
check := func() (bool, error) { | |
res, err := os.Stat(file) | |
if err != nil { | |
return false, err | |
} | |
return res.ModTime().After(mod), nil | |
} | |
setup := func(c pkgupgrade.Context) { | |
f, err := os.Create(file) | |
if err != nil { | |
c.T.Fatal(err) | |
} | |
c.Log.Info("Update a file to continue: ", f.Name()) | |
res, err := os.Stat(f.Name()) | |
if err != nil { | |
c.T.Fatal(err) | |
} | |
mod = res.ModTime() | |
} | |
verify := func(c pkgupgrade.Context) { | |
for { | |
if done, err := check(); done { | |
err = os.Remove(file) | |
if err != nil { | |
c.T.Fatal(err) | |
} | |
break | |
} else if err != nil { | |
c.T.Fatal("Problem checking file: ", err) | |
} | |
c.Log.Debug("Waiting for a file to update: ", file) | |
time.Sleep(time.Second) | |
} | |
} | |
return pkgupgrade.NewBackgroundVerification( | |
"waitForUser", setup, verify) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment