[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#973993: ITP: golang-github-profclems-go-dotenv -- A minimalist library for reading and atomically writing .env configuration files in Go



Package: wnpp
Severity: wishlist
Owner: TODO <TODO>

* Package name    : golang-github-profclems-go-dotenv
  Version         : 0.1.0-1
  Upstream Author : Clement Sam
* URL             : https://github.com/profclems/go-dotenv
* License         : Expat
  Programming Lang: Go
  Description     : A minimalist library for reading and atomically writing .env configuration files in Go

 Dotenv Go Report Card
 (https://goreportcard.com/report/github.com/profclems/go-dotenv) PkgGoDev
 (https://pkg.go.dev/mod/github.com/profclems/go-dotenv) Dotenv is a
 minimal Go Library for reading and writing .env configuration files.
 It uses renameio (https://github.com/google/renameio) to perform atomic
 write operations making sure applications never see unexpected file
 content (a half-written file, or a 0-byte file).
 .
 Dotenv reads config in the following order. Each item takes precedence
 over the item below it: • env• key-value config cache/store• config
 The config cache store is set on first read operation.  Installation sh
 go get -u github.com/joho/godotenv
 .
 Usage Assuming you have a .env file in the current directory with the
 following values env S3_BUCKET=yours3bucket SECRET_KEY=yoursecretKey
 PRIORITY_LEVEL=2
 .
 Reading .env files ```go package main
 .
 import (
     "log"
 "github.com/profclems/go-dotenv"
 .
 )
 .
 func main() {
   // .env - It will search for the .env file in the current
   directory and load it.  // You can explicitly set config file with
   dotenv.SetConfigFile("path/to/file.env") err := dotenv.LoadConfig()
   if err != nil {
     log.Fatalf("Error loading .env file: %v", err)
   }
 .
 s3Bucket := dotenv.GetString("S3BUCKET")
   secretKey := dotenv.GetString("SECRETKEY") priorityLevel :=
   dotenv.GetInt("PRIORITY_LEVEL")
 .
 // now do something with s3 or whatever } ``` Writing .env files ```go
 import (
     "fmt" "github.com/profclems/go-dotenv" "log"
 )
 .
 func main() {
     // SetConfigFile explicitly defines the path, name and extension
     of the config file.  dotenv.SetConfigFile("config/.env")
     dotenv.LoadConfig()
 dotenv.Set("STRONGEST_AVENGER", "Hulk") dotenv.Set("PLAYER_NAME", "Anon")
 .
 err := dotenv.Save() if err != nil {
     log.Fatal(err)
 }
 .
 value := dotenv.GetString("STRONGEST_AVENGER") fmt.Printf("%s = %s \n",
 "STRONGEST_AVENGER", value)
 .
 value = dotenv.GetString("PLAYER_NAME") fmt.Printf("%s = %s \n",
 "PLAYER_NAME", value)
 .
 }
 .
 ```
 .
 All the above examples use the global DotEnv instance. You can instantiate
 a new Dotenv instance:
 .
 ```go cfg := dotenv.Init() // This will create a Dotenv instance using
 .env from the current dir
 .
 or
 .
 cfg := dotenv.Init("path/to/.env") cfg.LoadConfig()
 .
 val := cfg.GetString("SOME_ENV") ``` Getting Values From DotEnv
 The following functions and methods exist to get a value depending
 the Type: • Get(key string) : interface{}• GetBool(key string)
 : bool• GetFloat64(key string) : float64• GetInt(key string)
 : int• GetIntSlice(key string) : []int• GetString(key string)
 : string• GetStringMap(key string) : map[string]interface{}•
 GetStringMapString(key string) : map[string]string• GetStringSlice(key
 string) : []string• GetTime(key string) : time.Time• GetDuration(key
 string) : time.Duration• isSet(key string) : bool• LookUp(key string)
 : (interface, bool)Contributing Contributions are most welcome! It could
 be a new feature, bug fix, refactoring or even reporting an issue.  •
 Fork it• Create your feature branch (git checkout -b my-new-feature)•
 Commit your changes (git commit -am 'Added some feature')• Push to the
 branch (git push origin my-new-feature)• Create new Pull RequestLicense
 Copyright © Clement Sam (http://twitter.com/clems_dev)
 .
 glab is open-sourced software licensed under the MIT (LICENSE) license.

TODO: perhaps reasoning


Reply to: