Packages

CI/CD toolkit as an Elixir library

Current section

Files

Jump to
ci ports os_cmd main.go
Raw

ports/os_cmd/main.go

package main
import (
"flag"
"fmt"
"os"
)
type arrayFlags []string
func (arrayFlags *arrayFlags) String() string {
strings := []string(*arrayFlags)
return fmt.Sprintf("%v", strings)
}
func (arrayFlags *arrayFlags) Set(value string) error {
*arrayFlags = append(*arrayFlags, value)
return nil
}
func main() {
dir := flag.String("dir", ".", "working directory")
usePty := flag.Bool("pty", false, "pty")
var terminateCmdPart arrayFlags
flag.Var(&terminateCmdPart, "terminate-cmd-part", "terminate command part")
flag.Parse()
args := flag.Args()
stdoutWriter := startStdoutWriter()
program, err := startProgram(args, dir, usePty, terminateCmdPart, stdoutWriter)
if err == nil {
stdoutWriter.sendOutput([]byte("started"))
} else {
stdoutWriter.sendOutput([]byte(fmt.Sprintf("not started %s", err)))
os.Exit(-1)
}
select {
case <-startStdinReader():
go program.stop()
exitStatus := <-program.exitStatus
os.Exit(exitStatus)
case exitStatus := <-program.exitStatus:
os.Exit(exitStatus)
}
}