47 lines
919 B
Go
47 lines
919 B
Go
|
package cmdpacks
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"github.com/lmika/dynamo-browse/internal/dynamo-browse/providers/pasteboardprovider"
|
||
|
"ucl.lmika.dev/ucl"
|
||
|
)
|
||
|
|
||
|
type pbModule struct {
|
||
|
pasteboardProvider *pasteboardprovider.Provider
|
||
|
}
|
||
|
|
||
|
func (m pbModule) pbGet(ctx context.Context, args ucl.CallArgs) (any, error) {
|
||
|
s, ok := m.pasteboardProvider.ReadText()
|
||
|
if !ok {
|
||
|
return "", nil
|
||
|
}
|
||
|
return s, nil
|
||
|
}
|
||
|
|
||
|
func (m pbModule) pbPut(ctx context.Context, args ucl.CallArgs) (any, error) {
|
||
|
var s string
|
||
|
if err := args.Bind(&s); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
if err := m.pasteboardProvider.WriteText([]byte(s)); err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return s, nil
|
||
|
}
|
||
|
|
||
|
func modulePB(
|
||
|
pasteboardProvider *pasteboardprovider.Provider,
|
||
|
) ucl.Module {
|
||
|
m := &pbModule{
|
||
|
pasteboardProvider: pasteboardProvider,
|
||
|
}
|
||
|
|
||
|
return ucl.Module{
|
||
|
Name: "pb",
|
||
|
Builtins: map[string]ucl.BuiltinHandler{
|
||
|
"get": m.pbGet,
|
||
|
"put": m.pbPut,
|
||
|
},
|
||
|
}
|
||
|
}
|