gosync/settings/arguments.go

76 lines
1.4 KiB
Go
Raw Normal View History

2023-09-07 15:20:19 +02:00
package settings
import (
"os"
"runtime"
"strconv"
"strings"
2023-09-07 15:33:35 +02:00
"velvettear/gosync/help"
2023-09-07 15:20:19 +02:00
"velvettear/gosync/log"
)
// exported function(s)
func Initialize() {
os.Args = os.Args[1:]
var arguments []string
2023-09-08 13:29:45 +02:00
for index := 0; index < len(os.Args); index++ {
// for index, arg := range os.Args {
switch strings.ToLower(os.Args[index]) {
2023-09-07 15:33:35 +02:00
case "-h":
fallthrough
case "--help":
help.Print()
os.Exit(0)
2023-09-07 15:20:19 +02:00
case "-v":
fallthrough
case "--verbose":
setVerbose(true)
case "-c":
fallthrough
case "--concurrency":
2023-09-08 13:29:45 +02:00
index++
2023-09-07 15:20:19 +02:00
var concurrency int
2023-09-08 13:29:45 +02:00
if index < len(os.Args) {
tmp, error := strconv.Atoi(os.Args[index])
2023-09-07 15:20:19 +02:00
if error == nil {
concurrency = tmp
}
}
if concurrency == 0 {
concurrency = runtime.NumCPU()
}
setConcurrency(concurrency)
case "-p":
fallthrough
case "--password":
2023-09-08 13:29:45 +02:00
index++
2023-09-07 15:20:19 +02:00
if index > len(os.Args) {
break
}
2023-09-08 13:29:45 +02:00
setPassword(os.Args[index])
2023-09-07 15:20:19 +02:00
case "-u":
fallthrough
case "--user":
2023-09-08 13:29:45 +02:00
index++
2023-09-07 15:20:19 +02:00
if index > len(os.Args) {
break
}
2023-09-08 13:29:45 +02:00
setUser(os.Args[index])
2023-09-07 15:20:19 +02:00
default:
2023-09-08 13:29:45 +02:00
arguments = append(arguments, os.Args[index])
2023-09-07 15:20:19 +02:00
}
}
2023-09-07 15:33:35 +02:00
if len(os.Args) < 2 {
log.Fatal("error: missing arguments")
}
2023-09-07 15:20:19 +02:00
setSource(arguments[0])
setTarget(arguments[1])
_, error := os.Stat(Source)
if os.IsNotExist(error) {
log.Fatal("given source does not exist", Source)
}
if !Verbose {
setVerbose(false)
}
}