main.go 754 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/dotcloud/docker/engine"
  5. "github.com/dotcloud/docker/pkg/beam"
  6. "net"
  7. "os"
  8. )
  9. func main() {
  10. eng := engine.New()
  11. c, err := net.Dial("unix", "beam.sock")
  12. if err != nil {
  13. fmt.Fprintf(os.Stderr, "%v\n", err)
  14. return
  15. }
  16. defer c.Close()
  17. f, err := c.(*net.UnixConn).File()
  18. if err != nil {
  19. fmt.Fprintf(os.Stderr, "%v\n", err)
  20. return
  21. }
  22. child, err := beam.FileConn(f)
  23. if err != nil {
  24. fmt.Fprintf(os.Stderr, "%v\n", err)
  25. return
  26. }
  27. defer child.Close()
  28. sender := engine.NewSender(child)
  29. sender.Install(eng)
  30. cmd := eng.Job(os.Args[1], os.Args[2:]...)
  31. cmd.Stdout.Add(os.Stdout)
  32. cmd.Stderr.Add(os.Stderr)
  33. if err := cmd.Run(); err != nil {
  34. fmt.Fprintf(os.Stderr, "%v\n", err)
  35. os.Exit(1)
  36. }
  37. }