From 97929aa589e3998721dab0b2eddf368c0784cf70 Mon Sep 17 00:00:00 2001 From: punkfairie <23287005+punkfairie@users.noreply.github.com> Date: Sat, 7 Sep 2024 17:10:42 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20refactor:=20Seperate=20out=20yam?= =?UTF-8?q?l=20processing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.go | 81 ---------------------------------------------------- yaml.go | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 81 deletions(-) create mode 100644 yaml.go diff --git a/main.go b/main.go index bd45d2c..67739cd 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,6 @@ import ( gloss "github.com/charmbracelet/lipgloss" "github.com/charmbracelet/lipgloss/list" "golang.org/x/term" - "gopkg.in/yaml.v3" ) var width, height, _ = term.GetSize(int(os.Stdout.Fd())) @@ -64,92 +63,12 @@ func (k keyMap) FullHelp() [][]key.Binding { } } -type YamlStructure struct { - InstallerPreferences InstallerPreferences `yaml:"installerPreferences"` - SoftwarePackages SoftwarePackages `yaml:"softwarePackages"` -} - -type InstallerPreferences struct { - Apt []string `yaml:"apt"` - Darwin []string `yaml:"darwin"` - Dnf []string `yaml:"dnf"` - Freebsd []string `yaml:"freebsd"` - Pacman []string `yaml:"pacman"` - Ubuntu []string `yaml:"ubuntu"` - Windows []string `yaml:"windows"` - Zypper []string `yaml:"zypper"` -} - -type SoftwarePackages map[string]SoftwareDef - -type SoftwareDef struct { - Bin *string `yaml:"_bin"` - Desc string `yaml:"_desc"` - Deps *[]string `yaml:"_deps"` - Docs *string `yaml:"_docs"` - Github *string `yaml:"_github"` - Home *string `yaml:"_home"` - Name string `yaml:"_name"` - Apk *string `yaml:"apk"` - Appimage *string `yaml:"appimage"` - Basher *string `yaml:"basher"` - Binary *osNames `yaml:"binary"` - Bpkg *string `yaml:"bpkg"` - Brew *string `yaml:"brew"` - Cargo *string `yaml:"cargo"` - Cask *string `yaml:"cask"` - Crew *string `yaml:"crew"` - Choco *string `yaml:"choco"` - Dnf *string `yaml:"dnf"` - Flatpak *string `yaml:"flatpak"` - Gem *string `yaml:"gem"` - Go *string `yaml:"go"` - Krew *string `yaml:"krew"` - Nix *string `yaml:"nix"` - Npm *string `yaml:"npm"` - Pacman *string `yaml:"pacman"` - Pipx *string `yaml:"pipx"` - PkgFreebsd *string `yaml:"pkg-freebsd"` - PkgTermux *string `yaml:"pkg-termux"` - Port *string `yaml:"port"` - Scoop *string `yaml:"scoop"` - Script *string `yaml:"string"` - Snap *string `yaml:"snap"` - Whalebrew *string `yaml:"whalebrew"` - Winget *string `yaml:"winget"` - Xbps *string `yaml:"xbps"` - Yay *string `yaml:"yay"` - Zypper *string `yaml:"zypper"` -} - -type osNames struct { - Darwin *string `yaml:"darwin"` - Linux *string `yaml:"linux"` - Windows *string `yaml:"windows"` -} - type yamlMsg YamlStructure type errMsg struct{ err error } func (e errMsg) Error() string { return e.err.Error() } -func readYaml() tea.Msg { - fileData, fileErr := os.ReadFile("/Users/marley/hackin/install.fairie/software-custom.yml") - if fileErr != nil { - return errMsg{fileErr} - } - - var parsedYaml YamlStructure - - yamlErr := yaml.Unmarshal(fileData, &parsedYaml) - if yamlErr != nil { - return errMsg{yamlErr} - } - - return yamlMsg(parsedYaml) -} - func (m menu) Init() tea.Cmd { return tea.Batch(readYaml, m.spinner.Tick) } diff --git a/yaml.go b/yaml.go new file mode 100644 index 0000000..ac8a477 --- /dev/null +++ b/yaml.go @@ -0,0 +1,88 @@ +package main + +import ( + "os" + + tea "github.com/charmbracelet/bubbletea" + "gopkg.in/yaml.v3" +) + +type YamlStructure struct { + InstallerPreferences InstallerPreferences `yaml:"installerPreferences"` + SoftwarePackages SoftwarePackages `yaml:"softwarePackages"` +} + +type InstallerPreferences struct { + Apt []string `yaml:"apt"` + Darwin []string `yaml:"darwin"` + Dnf []string `yaml:"dnf"` + Freebsd []string `yaml:"freebsd"` + Pacman []string `yaml:"pacman"` + Ubuntu []string `yaml:"ubuntu"` + Windows []string `yaml:"windows"` + Zypper []string `yaml:"zypper"` +} + +type SoftwarePackages map[string]SoftwareDef + +type SoftwareDef struct { + Bin *string `yaml:"_bin"` + Desc string `yaml:"_desc"` + Deps *[]string `yaml:"_deps"` + Docs *string `yaml:"_docs"` + Github *string `yaml:"_github"` + Home *string `yaml:"_home"` + Name string `yaml:"_name"` + Apk *string `yaml:"apk"` + Appimage *string `yaml:"appimage"` + Basher *string `yaml:"basher"` + Binary *osNames `yaml:"binary"` + Bpkg *string `yaml:"bpkg"` + Brew *string `yaml:"brew"` + Cargo *string `yaml:"cargo"` + Cask *string `yaml:"cask"` + Crew *string `yaml:"crew"` + Choco *string `yaml:"choco"` + Dnf *string `yaml:"dnf"` + Flatpak *string `yaml:"flatpak"` + Gem *string `yaml:"gem"` + Go *string `yaml:"go"` + Krew *string `yaml:"krew"` + Nix *string `yaml:"nix"` + Npm *string `yaml:"npm"` + Pacman *string `yaml:"pacman"` + Pipx *string `yaml:"pipx"` + PkgFreebsd *string `yaml:"pkg-freebsd"` + PkgTermux *string `yaml:"pkg-termux"` + Port *string `yaml:"port"` + Scoop *string `yaml:"scoop"` + Script *string `yaml:"string"` + Snap *string `yaml:"snap"` + Whalebrew *string `yaml:"whalebrew"` + Winget *string `yaml:"winget"` + Xbps *string `yaml:"xbps"` + Yay *string `yaml:"yay"` + Zypper *string `yaml:"zypper"` +} + +type osNames struct { + Darwin *string `yaml:"darwin"` + Linux *string `yaml:"linux"` + Windows *string `yaml:"windows"` +} + +func readYaml() tea.Msg { + fileData, fileErr := os.ReadFile("/Users/marley/hackin/install.fairie/software-custom.yml") + if fileErr != nil { + return errMsg{fileErr} + } + + var parsedYaml YamlStructure + + yamlErr := yaml.Unmarshal(fileData, &parsedYaml) + if yamlErr != nil { + return errMsg{yamlErr} + } + + return yamlMsg(parsedYaml) +}