master
1package utils
2
3import (
4 "fmt"
5 "net"
6 "os"
7 "strings"
8)
9
10func setValueFromArgsOrClipboard(args []string, validator func(string) bool, errorMsg string, allowEmpty bool) string {
11 var value string
12 if len(args) == 0 {
13 clipboardValue, err := ReadFromClipboard()
14 if err == nil && clipboardValue != "" && validator(clipboardValue) {
15 value = strings.TrimSpace(clipboardValue)
16 }
17 }
18 if value == "" {
19 if len(args) == 0 {
20 if allowEmpty {
21 return ""
22 }
23 fmt.Println(errorMsg)
24 os.Exit(1)
25 } else if len(args) == 1 {
26 value = args[0]
27 }
28 }
29 return value
30}
31
32func SetURL(args []string) string {
33 return setValueFromArgsOrClipboard(args,
34 func(s string) bool { return strings.HasPrefix(s, "https://") },
35 "Please specify URL", false)
36}
37
38func SetIP(args []string) string {
39 return setValueFromArgsOrClipboard(args,
40 func(s string) bool { return net.ParseIP(strings.TrimSpace(s)) != nil },
41 "", true)
42}