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, parserFunc func() Wrap) Wrap { maker := func() Wrap { return parserFunc() } 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() }