expvarmon/utils.go

50 lines
1.0 KiB
Go

package main
import (
"errors"
"fmt"
"path/filepath"
"strings"
"github.com/bsiegert/ranges"
)
// ParseVars returns parsed and validated slice of strings with
// variables names that will be used for monitoring.
func ParseVars(vars string) ([]VarName, error) {
if vars == "" {
return nil, errors.New("no vars specified")
}
ss := strings.FieldsFunc(vars, func(r rune) bool { return r == ',' })
var ret []VarName
for _, s := range ss {
ret = append(ret, VarName(s))
}
return ret, nil
}
// BaseCommand returns cleaned command name from Cmdline array.
//
// I.e. "./some.service/binary.name -arg 1 -arg" will be "binary.name".
func BaseCommand(cmdline []string) string {
if len(cmdline) == 0 {
return ""
}
return filepath.Base(cmdline[0])
}
// ParsePorts converts comma-separated ports into strings slice
func ParsePorts(s string) ([]string, error) {
portsInt, err := ranges.Parse(s)
if err != nil {
return nil, err
}
var ports []string
for _, port := range portsInt {
ports = append(ports, fmt.Sprintf("%d", port))
}
return ports, nil
}