46 lines
878 B
Go
46 lines
878 B
Go
package wrap
|
|
|
|
import (
|
|
"context"
|
|
"mayhem-party/src/device/input/button"
|
|
"mayhem-party/src/device/input/raw"
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
FlagBuffered = os.Getenv("WRAP_BUFFERED") == "true"
|
|
FlagRemapFile = os.Getenv("WRAP_REMAP_FILE")
|
|
FlagRefreshOnSigUsr1 = os.Getenv("WRAP_REFRESH_ON_SIGUSR1") == "true"
|
|
)
|
|
|
|
type Wrap interface {
|
|
Read() []button.Button
|
|
Close()
|
|
CloseWrap() raw.Raw
|
|
}
|
|
|
|
func New(ctx context.Context, srcFunc func() button.Parser) Wrap {
|
|
maker := func() Wrap {
|
|
return srcFunc()
|
|
}
|
|
if FlagBuffered {
|
|
oldMaker := maker
|
|
maker = func() Wrap {
|
|
return NewBuffered(ctx, oldMaker())
|
|
}
|
|
}
|
|
if FlagRemapFile != "" {
|
|
oldMaker := maker
|
|
maker = func() Wrap {
|
|
return NewRemapFromFile(oldMaker(), FlagRemapFile)
|
|
}
|
|
}
|
|
if FlagRefreshOnSigUsr1 {
|
|
oldMaker := maker
|
|
maker = func() Wrap {
|
|
return NewRefresh(ctx, oldMaker)
|
|
}
|
|
}
|
|
return maker()
|
|
}
|