From 1e69f37777f36a04c2384ffcff61893b1b88e4fd Mon Sep 17 00:00:00 2001 From: decentral1se Date: Thu, 21 Apr 2022 14:33:24 +0200 Subject: [PATCH] init conf --- unnamed-project.go | 69 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 68 insertions(+), 1 deletion(-) diff --git a/unnamed-project.go b/unnamed-project.go index 2ca0d5e..fadfadc 100644 --- a/unnamed-project.go +++ b/unnamed-project.go @@ -1,9 +1,76 @@ package main import ( + "flag" "fmt" + "log" + "os" + "os/user" + "path/filepath" ) +const help = `unnamed-project: WIP + +Options: + -n node identifier (default: your system username) + -p path to share files (default: current working directory) + -w port for web server (default: 1312) + -s port for file server (default: 5555) + -d debug logging + -h output help +` + +var nodeIDFlag string +var pathFlag string +var webPortFlag int +var filePortFlag int +var debugFlag bool +var helpFlag bool + func main() { - fmt.Println("Hello, World!") + systemUser, err := user.Current() + if err != nil { + log.Fatalln(err) + } + + cwdAbsPath, err := filepath.Abs(".") + if err != nil { + log.Fatalln(err) + } + + handleCliFlags(systemUser.Name, cwdAbsPath) + + if helpFlag { + fmt.Printf(help) + os.Exit(0) + } + + conf := &config{ + nodeID: nodeIDFlag, + webPort: webPortFlag, + filePort: filePortFlag, + sharePath: pathFlag, + debug: debugFlag, + } + + fmt.Println(conf) + +} + +func handleCliFlags(username, sharePath string) { + flag.StringVar(&nodeIDFlag, "n", username, "node identifier") + flag.StringVar(&pathFlag, "p", sharePath, "path to share files") + flag.IntVar(&webPortFlag, "w", 1312, "port for web server") + flag.IntVar(&filePortFlag, "s", 5555, "port for file server") + flag.BoolVar(&debugFlag, "d", false, "debug logging") + flag.BoolVar(&helpFlag, "h", false, "output help") + flag.Parse() +} + +type config struct { + nodeID string + webPort int + filePort int + sharePath string + debug bool }