package main import ( "flag" "fmt" "io" "log" "os" "path/filepath" "github.com/joho/godotenv" ) var Error *log.Logger var Warning *log.Logger func init() { log.SetFlags(log.Lmicroseconds | log.Lshortfile) logger := io.MultiWriter(os.Stdout) log.SetOutput(logger) Error = log.New(io.MultiWriter(os.Stderr, os.Stdout), fmt.Sprintf("%sERROR:%s ", "\033[0;101m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) Warning = log.New(io.MultiWriter(os.Stdout), fmt.Sprintf("%sWarning:%s ", "\033[0;93m", "\033[0m"), log.Lmicroseconds|log.Lshortfile) } const ( steamcmdEnvKey = "STEAMCMD" appEnvKey = "APP" ) func main() { envfile := flag.String("envfile", ".env", "") flag.Parse() env, err := loadEnv(*envfile) if err != nil { Error.Printf("Error leading env file: %v", err) return } steamcmdexe, ok := env[steamcmdEnvKey] if !ok { Error.Printf("SteamCMD not found in env, please specify %s", steamcmdEnvKey) return } app, ok := env[appEnvKey] if !ok { Error.Printf("App not found in env, please specify %s", appEnvKey) return } args := flag.Args() log.Printf("Using steamcmd at %s", steamcmdexe) log.Printf("Downloading %d items for %s", len(args), app) } func loadEnv(fpath string) (map[string]string, error) { res := make(map[string]string) fpath = filepath.Clean(fpath) log.Printf("Trying to open env file at %s", fpath) file, err := os.Open(fpath) if err != nil { return res, fmt.Errorf("error opening env file: %w", err) } defer file.Close() res, err = godotenv.Parse(file) if err != nil { return res, fmt.Errorf("error parsing env file: %w", err) } return res, nil }