1package main 2 3import ( 4 "flag" 5 "fmt" 6 "log" 7 8 "strings" 9 10 "github.com/joho/godotenv" 11) 12 13func main() { 14 var showHelp bool 15 flag.BoolVar(&showHelp, "h", false, "show help") 16 var rawEnvFilenames string 17 flag.StringVar(&rawEnvFilenames, "f", "", "comma separated paths to .env files") 18 19 flag.Parse() 20 21 usage := ` 22Run a process with a env setup from a .env file 23 24godotenv [-f ENV_FILE_PATHS] COMMAND_ARGS 25 26ENV_FILE_PATHS: comma separated paths to .env files 27COMMAND_ARGS: command and args you want to run 28 29example 30 godotenv -f /path/to/something/.env,/another/path/.env fortune 31` 32 // if no args or -h flag 33 // print usage and return 34 args := flag.Args() 35 if showHelp || len(args) == 0 { 36 fmt.Println(usage) 37 return 38 } 39 40 // load env 41 var envFilenames []string 42 if rawEnvFilenames != "" { 43 envFilenames = strings.Split(rawEnvFilenames, ",") 44 } 45 46 // take rest of args and "exec" them 47 cmd := args[0] 48 cmdArgs := args[1:] 49 50 err := godotenv.Exec(envFilenames, cmd, cmdArgs) 51 if err != nil { 52 log.Fatal(err) 53 } 54} 55