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 }