summaryrefslogtreecommitdiff
path: root/src/util/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/util.go')
-rw-r--r--src/util/util.go12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/util/util.go b/src/util/util.go
index ec5a1ea0..c8301363 100644
--- a/src/util/util.go
+++ b/src/util/util.go
@@ -144,12 +144,22 @@ func IsTty(file *os.File) bool {
return isatty.IsTerminal(fd) || isatty.IsCygwinTerminal(fd)
}
+// RunOnce runs the given function only once
+func RunOnce(f func()) func() {
+ once := Once(true)
+ return func() {
+ if once() {
+ f()
+ }
+ }
+}
+
// Once returns a function that returns the specified boolean value only once
func Once(nextResponse bool) func() bool {
state := nextResponse
return func() bool {
prevState := state
- state = false
+ state = !nextResponse
return prevState
}
}