execstreamer

package module
v0.0.0-...-5fcc3dc Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 12, 2023 License: MIT Imports: 11 Imported by: 0

README

exec-streamer

A golang exec streamer to make streaming exec.Command as simple as possible

Usage

Windows example

main.go:

package main

import (
    execstreamer "github.com/Midmly/exec-streamer"
    "log"
    "os"
)

func main() {
    streamer, err := execstreamer.NewExecStreamerBuilder().
        ExecutorName("winshell").
        Exe("ping").
        Args("127.0.0.1", "-n", "6").
        StdoutWriter(os.Stdout).
        StderrWriter(os.Stderr).
        StdoutPrefix("OUT:").
        StderrPrefix("ERR:").
        AutoFlush().
        Build()

    if err != nil {
        log.Fatal(err)
    }

    err = streamer.ExecAndWait()
    if err != nil {
        log.Fatal(err)
    }
}

Note: StdoutWriter and StderrWriter is set to the ioutil.Discard writer by default.

Now run it:

go run main.go

This should print out something like:

OUT:
OUT:Pinging 127.0.0.1 with 32 bytes of data:
OUT:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
OUT:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
OUT:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
OUT:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
OUT:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
OUT:Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
OUT:
OUT:Ping statistics for 127.0.0.1:
OUT:    Packets: Sent = 6, Received = 6, Lost = 0 (0% loss),
OUT:Approximate round trip times in milli-seconds:
OUT:    Minimum = 0ms, Maximum = 0ms, Average = 0ms

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewExecutorFromName

func NewExecutorFromName(name string) (*executor, error)

Types

type ExecStreamer

type ExecStreamer interface {
	StartExec() (*exec.Cmd, error)
	ExecAndWait() error
}

ExecStreamer is the streamer interface (built by the ExecStreamerBuilder)

type ExecStreamerBuilder

type ExecStreamerBuilder interface {
	ExecutorName(executorName string) ExecStreamerBuilder
	Exe(exe string) ExecStreamerBuilder
	Args(args ...string) ExecStreamerBuilder
	Dir(dir string) ExecStreamerBuilder
	Env(env ...string) ExecStreamerBuilder

	Writers(writers io.Writer) ExecStreamerBuilder

	StdoutWriter(writer io.Writer) ExecStreamerBuilder
	StdoutPrefix(prefix string) ExecStreamerBuilder

	StderrWriter(writer io.Writer) ExecStreamerBuilder
	StderrPrefix(prefix string) ExecStreamerBuilder

	AutoFlush() ExecStreamerBuilder

	DebugInfo(s string) ExecStreamerBuilder

	OnStarted(onStarted func(*StartedDetails)) ExecStreamerBuilder

	Build() (ExecStreamer, error)
}

ExecStreamerBuilder is the builder interface

func NewExecStreamerBuilder

func NewExecStreamerBuilder() ExecStreamerBuilder

NewExecStreamerBuilder will create a builder to elegantly create a new ExecStreamer

type StartedDetails

type StartedDetails struct {
	Pid  int
	Time time.Time
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL