diff --git a/cmd/init.go b/cmd/init.go index 2de9ba3..cae5505 100644 --- a/cmd/init.go +++ b/cmd/init.go @@ -17,38 +17,26 @@ var initCmd = &cobra.Command{ Use: "init", Short: "Initialize envy on your system", Run: func(cmd *cobra.Command, args []string) { - config, err := os.UserConfigDir() - if err != nil { - fmt.Println(utils.ErrStyle.Render("Config directory not found for your OS. Please run `envy init `.")) - return - } - - envyPath := path.Join(config, "envy") - - _, err = os.Stat(envyPath) + _, err := os.Stat(utils.EnvyPath) if os.IsExist(err) { fmt.Println(utils.ErrStyle.Render("Config directory already exists.")) return } - err = os.Mkdir(envyPath, 0755) + err = os.Mkdir(utils.EnvyPath, 0755) if err != nil { fmt.Println(utils.ErrStyle.Render("Failed to create config directory:", err.Error())) } - configFile, err := os.Create(path.Join(envyPath, "config.toml")) + configFile, err := os.Create(path.Join(utils.EnvyPath, "config.toml")) if err != nil { fmt.Println(utils.ErrStyle.Render("Failed to create config file:", err.Error())) } defer configFile.Close() - _, err = os.Create(path.Join(envyPath, "envy.db")) - if err != nil { - fmt.Println(utils.ErrStyle.Render("Failed to create database file:", err.Error())) - } - - utils.Migrate() + utils.InitDb() + utils.MigrateDb() configFile.Write([]byte("[config]\nmode = \"local\"\n")) diff --git a/cmd/utils/db.go b/cmd/utils/db.go index 9aa71b8..4b44206 100644 --- a/cmd/utils/db.go +++ b/cmd/utils/db.go @@ -1,10 +1,6 @@ package utils import ( - "fmt" - "os" - "path" - "gorm.io/driver/sqlite" "gorm.io/gorm" ) @@ -26,19 +22,17 @@ type Environment struct { var DB *gorm.DB -func Init() { - config, err := os.UserConfigDir() - if err != nil { - fmt.Println(ErrStyle.Render("Error accessing config directory:", err.Error())) - return - } - - DB, err = gorm.Open(sqlite.Open(path.Join(config, "envy.db")), &gorm.Config{}) - if err != nil { - ErrPrint("Error while opening database:" + err.Error()) +func InitDb() { + var openErr error + DB, openErr = gorm.Open(sqlite.Open(EnvyPath), &gorm.Config{}) + if openErr != nil { + ErrPrint("Error while opening database:" + openErr.Error()) } } -func Migrate() { - DB.AutoMigrate(&Project{}, &Environment{}) +func MigrateDb() { + err := DB.AutoMigrate(&Project{}, &Environment{}) + if err != nil { + panic(err) + } } diff --git a/cmd/utils/tools.go b/cmd/utils/tools.go index 7b2b598..e9fea45 100644 --- a/cmd/utils/tools.go +++ b/cmd/utils/tools.go @@ -2,6 +2,8 @@ package utils import ( "fmt" + "os" + "path" "github.com/charmbracelet/lipgloss" ) @@ -11,3 +13,14 @@ var ErrStyle = lipgloss.NewStyle().Foreground(lipgloss.Color("#F00")) func ErrPrint(data string) { fmt.Println(ErrStyle.Render(data)) } + +var EnvyPath string + +func Init() { + conf, err := os.UserConfigDir() + if err != nil { + panic("Couldn't find config directory:" + err.Error()) + } + + EnvyPath = path.Join(conf, "envy") +} diff --git a/main.go b/main.go index ce16af2..dc5e4ee 100644 --- a/main.go +++ b/main.go @@ -9,6 +9,6 @@ import ( ) func main() { - utils.Migrate() + utils.Init() cmd.Execute() }