Exemplo n.º 1
0
	// Start server.
	binDir := sh.MakeTempDir()
	binPath := gosh.BuildGoPkg(sh, binDir, "github.com/asadovsky/gosh/internal/gosh_example_server")
	c := sh.Cmd(binPath)
	c.Start()
	addr := c.AwaitVars("addr")["addr"]
	fmt.Println(addr)

	// Run client.
	binPath = gosh.BuildGoPkg(sh, binDir, "github.com/asadovsky/gosh/internal/gosh_example_client")
	c = sh.Cmd(binPath, "-addr="+addr)
	fmt.Print(c.Stdout())
}

var (
	getFunc   = gosh.RegisterFunc("getFunc", lib.Get)
	serveFunc = gosh.RegisterFunc("serveFunc", lib.Serve)
)

// Mirrors TestFuncCmd in shell_test.go.
func ExampleFuncCmd() {
	sh := gosh.NewShell(nil)
	defer sh.Cleanup()

	// Start server.
	c := sh.FuncCmd(serveFunc)
	c.Start()
	addr := c.AwaitVars("addr")["addr"]
	fmt.Println(addr)

	// Run client.
Exemplo n.º 2
0
func setsErr(t *testing.T, sh *gosh.Shell, f func()) {
	continueOnError := sh.ContinueOnError
	sh.ContinueOnError = true
	f()
	nok(t, sh.Err)
	sh.Err = nil
	sh.ContinueOnError = continueOnError
}

////////////////////////////////////////////////////////////////////////////////
// Simple registered functions

// Simplified versions of various Unix commands.
var (
	catFunc = gosh.RegisterFunc("catFunc", func() error {
		_, err := io.Copy(os.Stdout, os.Stdin)
		return err
	})
	echoFunc = gosh.RegisterFunc("echoFunc", func() error {
		_, err := fmt.Println(os.Args[1])
		return err
	})
	readFunc = gosh.RegisterFunc("readFunc", func() {
		bufio.NewReader(os.Stdin).ReadString('\n')
	})
)

// Functions with parameters.
var (
	exitFunc = gosh.RegisterFunc("exitFunc", func(code int) {
		os.Exit(code)
	})
Exemplo n.º 3
0
	"net/url"
	"os"
	"strings"

	"github.com/asadovsky/gosh"

	"github.com/asadovsky/cdb/server/hub"
)

var (
	loopback  = flag.Bool("loopback", true, "")
	port      = flag.Int("port", 4000, "")
	peerAddrs = flag.String("peer-addrs", "", "comma-separated peer addrs")
)

var serve = gosh.RegisterFunc("serve", hub.Serve)

func ok(err error) {
	if err != nil {
		panic(err)
	}
}

func ip() (string, error) {
	addrs, err := net.InterfaceAddrs()
	if err != nil {
		return "", err
	}
	for _, a := range addrs {
		if x, ok := a.(*net.IPNet); ok && !x.IP.IsLoopback() && x.IP.To4() != nil {
			return x.IP.String(), nil