mirror of https://github.com/pressly/goose.git
48 lines
971 B
Go
48 lines
971 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"github.com/kylelemons/go-gypsy/yaml"
|
|
"path"
|
|
)
|
|
|
|
// global options. available to any subcommands.
|
|
var dbFolder = flag.String("db", "db", "folder containing db info")
|
|
var dbConfName = flag.String("config", "development", "which DB configuration to use")
|
|
|
|
type DBConf struct {
|
|
MigrationsDir string
|
|
Name string
|
|
Driver string
|
|
OpenStr string
|
|
}
|
|
|
|
// extract configuration details from the given file
|
|
func MakeDBConf() (*DBConf, error) {
|
|
|
|
cfgFile := path.Join(*dbFolder, "dbconf.yml")
|
|
|
|
f, err := yaml.ReadFile(cfgFile)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
drv, derr := f.Get(fmt.Sprintf("%s.driver", *dbConfName))
|
|
if derr != nil {
|
|
return nil, derr
|
|
}
|
|
|
|
open, oerr := f.Get(fmt.Sprintf("%s.open", *dbConfName))
|
|
if oerr != nil {
|
|
return nil, oerr
|
|
}
|
|
|
|
return &DBConf{
|
|
MigrationsDir: path.Join(*dbFolder, "migrations"),
|
|
Name: *dbConfName,
|
|
Driver: drv,
|
|
OpenStr: open,
|
|
}, nil
|
|
}
|