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}