From f0c98c5544818511946910f65e34d0d080d1ada3 Mon Sep 17 00:00:00 2001 From: Adam Cooper Date: Fri, 13 May 2022 08:50:25 -0400 Subject: [PATCH] Work on getting browser sessions --- main.go | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index a43e314..4f67290 100644 --- a/main.go +++ b/main.go @@ -2,7 +2,10 @@ package main import ( "fmt" + "io/fs" + "log" "os" + "strings" tea "github.com/charmbracelet/bubbletea" ) @@ -36,14 +39,31 @@ var browserSelection SelectionSet var commandSelection SelectionSet func getBrowserSessions() []sessionOrCommand { - // Placeholder - return []sessionOrCommand{{ - displayString: "primary", - commandString: "", - }, { - displayString: "breakfast", - commandString: "", - }} + // 1. List files in $XDG_DATA_HOME/qutebrowser/sessions/ (N.B.: + // UserConfigDir() in os) + userConfigDir, err := os.UserConfigDir() + if err != nil { + log.Printf("Error finding user configuration directory: %v", err) + return []sessionOrCommand{} + } + log.Printf("INFO userConfigDir: %+v", userConfigDir) + fileSystem := os.DirFS(userConfigDir) + log.Printf("INFO fileSystem: %+v", fileSystem) + fileList, err := fs.ReadDir(fileSystem, "/qutebrowser/sessions") + if err != nil { + log.Printf("Error reading browser sessions directory: %v", err) + return []sessionOrCommand{} + } + // 2. Exclude non-YAML files + // 3. Wrangle them into this struct array + result := make([]sessionOrCommand, len(fileList)) + for _, entry := range fileList { + if !entry.IsDir() && strings.HasSuffix(entry.Name(), ".yml") { + result = append(result, sessionOrCommand{displayString: entry.Name(), commandString: ""}) + } + } + // log.Printf("result: %v", result) + return result } func initialModel() model {