diff --git a/go.mod b/go.mod index d63eade..0e4e469 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module github.com/hellflame/argparse go 1.16 + +require golang.org/x/term v0.1.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..96fe2b9 --- /dev/null +++ b/go.sum @@ -0,0 +1,4 @@ +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1 h1:SrN+KX8Art/Sf4HNj6Zcz06G7VEz+7w9tdXTPOZ7+l4= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.1.0 h1:g6Z6vPFA9dYBAF7DWcH6sCcOntplXsDKcliusYijMlw= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= diff --git a/utils.go b/utils.go index da8fc8d..086cde9 100644 --- a/utils.go +++ b/utils.go @@ -3,23 +3,15 @@ package argparse import ( "fmt" "os" - "os/exec" - "strconv" "strings" + + "golang.org/x/term" ) func decideTerminalWidth() int { - // decide terminal width - cmd := exec.Command("stty", "size") - cmd.Stdin = os.Stdin // this is important - result, e := cmd.Output() - if e != nil { - result = []byte("0 80") - } - width := 80 - parse := strings.Split(strings.TrimRight(string(result), "\n"), " ") - if w, e := strconv.Atoi(parse[1]); e == nil { - width = w + width, _, err := term.GetSize(int(os.Stdout.Fd())) + if err != nil { + return 80 } return width }