Testing only changed Go packages
Sometimes, working on big projects, running all tests locally take too much time.
In Go, it’s dead simple to get the value from an environment variable:
fmt.Println(os.Getenv("HOME"))
But, sometimes you have default values… so you would have to do something like this:
home := os.Getenv("HOME")
if home == "" {
home = "THE DEFAULT HOME"
}
fmt.Println(home)
If you need those values in a lot of places, you would end up creating a function for each one or something like that.
I found this to be extremely boring.
So, I created a small lib that let me do this:
package main
import (
"fmt"
"github.com/caarlos0/env"
)
type Config struct {
Home string `env:"HOME"`
Port int `env:"PORT" envDefault:"3000"`
IsProduction bool `env:"PRODUCTION"`
}
func main() {
cfg := Config{}
env.Parse(&cfg)
fmt.Println(cfg)
}
The lib, of course, is OpenSource.
That’s all for today!
See ya.