Moved standard binary fallback to utility function for all utilities to use
This commit is contained in:
parent
69f68794cf
commit
d26ca0b13a
25
ps/main.go
25
ps/main.go
@ -4,8 +4,6 @@ import (
|
|||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"jsh"
|
"jsh"
|
||||||
"os"
|
|
||||||
"os/exec"
|
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -25,28 +23,9 @@ func PsOutputToProcesses(out string) *[]jsh.Process {
|
|||||||
return &processes
|
return &processes
|
||||||
}
|
}
|
||||||
|
|
||||||
// Falls back to procps-ng passing the space-separated arguments in the given
|
|
||||||
// args slice. If args is nil, we default to the arguments passed to the command
|
|
||||||
// line using os.Args
|
|
||||||
func fallbackCompletelyWithArgs(args []string) *[]byte {
|
|
||||||
if args == nil {
|
|
||||||
args = os.Args[1:]
|
|
||||||
}
|
|
||||||
out, err := exec.Command("/usr/bin/ps", args...).Output()
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
return &out
|
|
||||||
}
|
|
||||||
|
|
||||||
// Falls back to procps-ng with no default arguments
|
|
||||||
func fallbackCompletely() *[]byte {
|
|
||||||
return fallbackCompletelyWithArgs(nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
func runJsonMode() {
|
func runJsonMode() {
|
||||||
// Run procps-ng "ps" with full output
|
// Run procps-ng "ps" with full output
|
||||||
psOut := string(*fallbackCompletelyWithArgs([]string{"auxww"}))
|
psOut := string(*jsh.FallbackWithArgs("/usr/bin/ps", []string{"auxww"}))
|
||||||
|
|
||||||
processesPtr := PsOutputToProcesses(psOut)
|
processesPtr := PsOutputToProcesses(psOut)
|
||||||
finalOut := jsh.JshOutput{*processesPtr, []string{}}
|
finalOut := jsh.JshOutput{*processesPtr, []string{}}
|
||||||
@ -59,7 +38,7 @@ func main() {
|
|||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
if !*jsonModePtr {
|
if !*jsonModePtr {
|
||||||
fmt.Printf("%s", fallbackCompletely())
|
fmt.Printf("%s", jsh.Fallback("/usr/bin/ps"))
|
||||||
} else {
|
} else {
|
||||||
runJsonMode()
|
runJsonMode()
|
||||||
}
|
}
|
||||||
|
20
utils.go
20
utils.go
@ -3,6 +3,8 @@ package jsh
|
|||||||
import (
|
import (
|
||||||
"math"
|
"math"
|
||||||
"unicode"
|
"unicode"
|
||||||
|
"os"
|
||||||
|
"os/exec"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FieldsN slices s into substrings after each instance of a whitespace
|
// FieldsN slices s into substrings after each instance of a whitespace
|
||||||
@ -42,3 +44,21 @@ func FieldsN(s string, maxN int) []string {
|
|||||||
}
|
}
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Falls back to procps-ng passing the space-separated arguments in the given
|
||||||
|
// args slice. If args is nil, we default to the arguments passed to the command
|
||||||
|
// line using os.Args
|
||||||
|
func FallbackWithArgs(program string, args []string) *[]byte {
|
||||||
|
if args == nil {
|
||||||
|
args = os.Args[1:]
|
||||||
|
}
|
||||||
|
out, err := exec.Command(program, args...).Output()
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return &out
|
||||||
|
}
|
||||||
|
|
||||||
|
func Fallback(program string) *[]byte {
|
||||||
|
return FallbackWithArgs(program, nil)
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user