forked from ebhomengo/niki
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package command
|
|
|
|
import (
|
|
cfgloader "git.gocasts.ir/ebhomengo/niki/pkg/cfg_loader"
|
|
"git.gocasts.ir/ebhomengo/niki/pkg/path"
|
|
"git.gocasts.ir/ebhomengo/niki/shoppingbasketapp"
|
|
"github.com/spf13/cobra"
|
|
"log"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
var RootCmd = &cobra.Command{
|
|
Use: "shoppingbasket_service",
|
|
Short: "A CLI for shoppingbasket service",
|
|
Long: `shoppingbasket Service CLI is a tool to manage and run
|
|
the shoppingbasket service, including migrations and server startup.`,
|
|
}
|
|
|
|
func loadAppConfig() shoppingbasketapp.Config {
|
|
var cfg shoppingbasketapp.Config
|
|
|
|
projectRoot, err := path.PathProjectRoot()
|
|
if err != nil {
|
|
log.Fatalf("error finding project root: %v", err)
|
|
}
|
|
|
|
yamlPath := os.Getenv("CONFIG_PATH")
|
|
|
|
if yamlPath == "" {
|
|
defaultConfig := filepath.Join(projectRoot, "deploy", "shoppingbasket", "development", "config.yml")
|
|
if _, err := os.Stat(defaultConfig); err == nil {
|
|
yamlPath = defaultConfig
|
|
} else {
|
|
yamlPath = filepath.Join(projectRoot, "deploy", "shoppingbasket", "development", "config.local.yml")
|
|
}
|
|
}
|
|
|
|
options := cfgloader.Option{
|
|
Prefix: "SHOPPINGBASKET_",
|
|
Delimiter: ".",
|
|
Separator: "__",
|
|
YamlFilePath: yamlPath,
|
|
CallbackEnv: nil,
|
|
}
|
|
|
|
if err := cfgloader.Load(options, &cfg); err != nil {
|
|
log.Fatalf("Failed to load benefactor config: %v", err)
|
|
}
|
|
|
|
return cfg
|
|
}
|