| 12345678910111213141516171819202122232425262728293031323334 |
- package worker
- import (
- "crypto/sha1"
- "fmt"
- "github.com/ChineseSubFinder/ChineseSubFinder/pkg/cmdutil"
- "io"
- "os/exec"
- )
- type CommandWorker struct {
- executable string
- }
- func NewCommandWorker(executable string) *CommandWorker {
- return &CommandWorker{executable}
- }
- func (c *CommandWorker) Key(r interface{}) string {
- args := r.([]string)
- h := sha1.New()
- h.Write([]byte(c.executable))
- for _, v := range args {
- h.Write([]byte(v))
- }
- sum := h.Sum(nil)
- return fmt.Sprintf("%x", sum)
- }
- func (c *CommandWorker) Handle(r interface{}, w io.Writer) error {
- args := r.([]string)
- cmd := exec.Command(c.executable, args...)
- return cmdutil.ExecAndWriteStdout(cmd, w)
- }
|