🚧 Add cool-down command

This commit is contained in:
Dan Jones 2024-10-25 15:52:26 -05:00
commit 2d70d8994e
3 changed files with 77 additions and 0 deletions

View file

@ -25,12 +25,26 @@ tasks:
- task: cmd-build
vars:
CMD: convids
build-cool-down:
desc: Builds the cool-down command
source:
- cmd/cool-down/**/*.go
- chill/*.go
- cli/err/*.go
- cli/spin/*.go
generates:
- build/cool-down
cmds:
- task: cmd-build
vars:
CMD: cool-down
build-all:
desc: Builds all available commands
sources:
- "**/*.go"
generates:
- build/convids
- build/cool-down
cmds:
- task: cmd-build
vars:

47
chill/chill.go Normal file
View file

@ -0,0 +1,47 @@
package chill
import (
"bytes"
"context"
"errors"
"os"
"strconv"
"time"
)
var TempFile string = "/sys/class/thermal/thermal_zone2/temp"
var MaxTemp int = 72500
var Sleep = time.Second * 10
var ErrChilledOut = errors.New("temperature dropped below threshold")
func Chill(baseCtx context.Context) context.Context {
ctx, cancel := context.WithCancelCause(baseCtx)
go func() {
var by []byte
var err error
current := MaxTemp + 1
for current >= MaxTemp {
by, err = os.ReadFile(TempFile)
if err != nil {
cancel(err)
return
}
by = bytes.TrimSpace(by)
current, err = strconv.Atoi(string(by))
if err != nil {
cancel(err)
return
}
if current < MaxTemp {
break
}
time.Sleep(Sleep)
}
cancel(ErrChilledOut)
}()
return ctx
}

16
cmd/cool-down/main.go Normal file
View file

@ -0,0 +1,16 @@
package main
import (
"context"
"codeberg.org/danjones000/utils/chill"
e "codeberg.org/danjones000/utils/cli/err"
"codeberg.org/danjones000/utils/cli/spin"
)
func main() {
ctx := chill.Chill(context.Background())
s := spin.Spin(ctx, "Waiting for CPU to cool...")
err := s.Wait()
e.HandleErr(err)
}