feat: add config and structured logging

This commit is contained in:
Patryk Hegenberg 2025-03-19 21:58:39 +01:00
parent 902a8bb7d1
commit fe83dc1f33
9 changed files with 275 additions and 31 deletions

View file

@ -4,6 +4,9 @@ import (
"embed"
"fmt"
"io/fs"
"jws/internal/config"
"jws/internal/logger"
"log/slog"
"os"
"os/exec"
"path/filepath"
@ -20,16 +23,22 @@ type Project struct {
FolderName string `json:"folderName"`
}
var (
log *slog.Logger
projects []Project
conf config.Config
)
func Init(projs []Project, config *config.Config) {
log = logger.GetChildLogger("project")
projects = projs
conf = *config
}
func DeployProject(index int, projects []Project, projectsFS embed.FS, mainWindow fyne.Window) {
project := projects[index]
homeDir, err := os.UserHomeDir()
if err != nil {
dialog.ShowError(fmt.Errorf("error getting home directory: %v", err), mainWindow)
return
}
projectPath := filepath.Join(homeDir, "Projects", project.FolderName)
projectPath := filepath.Join(conf.DeploymentPath, project.FolderName)
confirmDialog := dialog.NewConfirm(
"deploying project",
@ -47,14 +56,18 @@ func DeployProject(index int, projects []Project, projectsFS embed.FS, mainWindo
progress.SetValue(0.1)
err := os.MkdirAll(projectPath, 0755)
if err != nil {
dialog.ShowError(fmt.Errorf("error creating directory: %v", err), mainWindow)
errMsg := fmt.Errorf("error creating directory: %v", err)
dialog.ShowError(errMsg, mainWindow)
log.Error(errMsg.Error())
return
}
progress.SetValue(0.3)
err = CopyEmbeddedProject(projectsFS, project.FolderName, projectPath)
if err != nil {
dialog.ShowError(fmt.Errorf("error copying project files: %v", err), mainWindow)
errMsg := fmt.Errorf("error copying project files: %v", err)
dialog.ShowError(errMsg, mainWindow)
log.Error(errMsg.Error())
return
}
@ -74,7 +87,9 @@ func DeployProject(index int, projects []Project, projectsFS embed.FS, mainWindo
progress.SetValue(0.9)
err = openCmd.Run()
if err != nil {
dialog.ShowError(fmt.Errorf("error opening VS Code: %v", err), mainWindow)
errMsg := fmt.Errorf("error opening VS Code: %v", err)
dialog.ShowError(errMsg, mainWindow)
log.Error(errMsg.Error())
return
}
}