mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-12-01 14:47:38 +00:00
7f4fb34182
It is better developing vmctl tool in VictoriaMetrics repository, so it could be released together with the rest of vmutils tools such as vmalert, vmagent, vmbackup, vmrestore and vmauth.
54 lines
1 KiB
Go
54 lines
1 KiB
Go
package cli
|
|
|
|
type Args interface {
|
|
// Get returns the nth argument, or else a blank string
|
|
Get(n int) string
|
|
// First returns the first argument, or else a blank string
|
|
First() string
|
|
// Tail returns the rest of the arguments (not the first one)
|
|
// or else an empty string slice
|
|
Tail() []string
|
|
// Len returns the length of the wrapped slice
|
|
Len() int
|
|
// Present checks if there are any arguments present
|
|
Present() bool
|
|
// Slice returns a copy of the internal slice
|
|
Slice() []string
|
|
}
|
|
|
|
type args []string
|
|
|
|
func (a *args) Get(n int) string {
|
|
if len(*a) > n {
|
|
return (*a)[n]
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (a *args) First() string {
|
|
return a.Get(0)
|
|
}
|
|
|
|
func (a *args) Tail() []string {
|
|
if a.Len() >= 2 {
|
|
tail := []string((*a)[1:])
|
|
ret := make([]string, len(tail))
|
|
copy(ret, tail)
|
|
return ret
|
|
}
|
|
return []string{}
|
|
}
|
|
|
|
func (a *args) Len() int {
|
|
return len(*a)
|
|
}
|
|
|
|
func (a *args) Present() bool {
|
|
return a.Len() != 0
|
|
}
|
|
|
|
func (a *args) Slice() []string {
|
|
ret := make([]string, len(*a))
|
|
copy(ret, *a)
|
|
return ret
|
|
}
|