package clipper
import (
"fmt"
"os/exec"
)
type Clipboard interface {
Init () error
ReadAll (reg string ) ([]byte , error )
WriteAll (reg string , p []byte ) error
}
const (
RegClipboard = "clipboard"
RegPrimary = "primary"
)
type ErrInvalidReg struct {
Reg string
}
func (e *ErrInvalidReg ) Error () string {
return fmt .Sprintf ("invalid register: %s" , e .Reg )
}
func verify(clip Clipboard , cmds ...string ) error {
for _ , cmd := range cmds {
if _ , err := exec .LookPath (cmd ); err != nil {
return err
}
}
_ , err := clip .ReadAll (RegClipboard )
if err == nil {
return nil
}
return clip .WriteAll (RegClipboard , []byte {})
}
func write(cmd *exec .Cmd , p []byte ) error {
in , err := cmd .StdinPipe ()
if err != nil {
return err
}
if err := cmd .Start (); err != nil {
return err
}
if _ , err := in .Write (p ); err != nil {
return err
}
in .Close ()
return cmd .Wait ()
}
The pages are generated with Golds v0.8.2 . (GOOS=linux GOARCH=amd64)
Golds is a Go 101 project developed by Tapir Liu .
PR and bug reports are welcome and can be submitted to the issue list .
Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds .