From 339dba4e13bd142f6d17719079d8f7f710915b67 Mon Sep 17 00:00:00 2001 From: Patryk Hegenberg Date: Wed, 15 Jan 2025 14:28:36 +0100 Subject: [PATCH] refactor: implement a simple progressbar instead of bubbletea --- cargo.go | 14 ---------- flatpak.go | 13 --------- go.mod | 1 + go.sum | 2 ++ golang.go | 14 ---------- homebrew.go | 13 --------- magefile.go | 58 ++++++++++++++++++++++++++++++++++++++ main.go | 8 ++---- pipx.go | 14 ---------- tui.go | 3 +- utils.go | 80 ++++++++++++++++++++++++++--------------------------- 11 files changed, 104 insertions(+), 116 deletions(-) create mode 100644 magefile.go diff --git a/cargo.go b/cargo.go index df978f8..68faffc 100644 --- a/cargo.go +++ b/cargo.go @@ -1,8 +1,6 @@ package main import ( - // "fmt" - // "log" "os/exec" ) @@ -12,22 +10,10 @@ func (c *CargoManager) Install(packages []string) error { if len(packages) == 0 { return nil } - // fmt.Printf("\nInstalliere %s-Pakete...\n", c.Name()) err := installWithProgress(c, packages) if err != nil { return err } - // for _, pkg := range packages { - // err := installPackageWithProgress(pkg, func() error { - // cmd := exec.Command("cargo", "install", pkg) - // return cmd.Run() - // }) - // if err != nil { - // log.Printf("Fehler bei der Installation von %s: %v", pkg, err) - // } - // } - - // fmt.Println("Installation abgeschlossen") return nil } diff --git a/flatpak.go b/flatpak.go index 3624dd8..5e8d1a5 100644 --- a/flatpak.go +++ b/flatpak.go @@ -2,7 +2,6 @@ package main import ( "fmt" - // "log" "os/exec" ) @@ -16,22 +15,10 @@ func (f *FlatpakManager) Install(packages []string) error { if len(packages) == 0 { return nil } - // fmt.Printf("\nInstalliere %s-Pakete...\n", f.Name()) err := installWithProgress(f, packages) if err != nil { return err } - // for _, pkg := range packages { - // err := installPackageWithProgress(pkg, func() error { - // cmd := exec.Command("flatpak", "install", "-y", pkg) - // return cmd.Run() - // }) - // if err != nil { - // log.Printf("Fehler bei der Installation von %s: %v", pkg, err) - // } - // } - - // fmt.Println("Installation abgeschlossen") return nil } diff --git a/go.mod b/go.mod index 26aab19..29cf3f7 100644 --- a/go.mod +++ b/go.mod @@ -28,6 +28,7 @@ require ( github.com/huandu/xstrings v1.3.2 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/magefile/mage v1.15.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-localereader v0.0.1 // indirect diff --git a/go.sum b/go.sum index 9ae1aea..afddadc 100644 --- a/go.sum +++ b/go.sum @@ -58,6 +58,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= +github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= diff --git a/golang.go b/golang.go index 39c97c8..1bcaca8 100644 --- a/golang.go +++ b/golang.go @@ -1,8 +1,6 @@ package main import ( - // "fmt" - // "log" "os/exec" ) @@ -12,22 +10,10 @@ func (g *GolangManager) Install(packages []string) error { if len(packages) == 0 { return nil } - // fmt.Printf("\nInstalliere %s-Pakete...\n", g.Name()) err := installWithProgress(g, packages) if err != nil { return err } - // for _, pkg := range packages { - // err := installPackageWithProgress(pkg, func() error { - // cmd := exec.Command("go", "install", pkg+"@latest") - // return cmd.Run() - // }) - // if err != nil { - // log.Printf("Fehler bei der Installation von %s: %v", pkg, err) - // } - // } - - // fmt.Println("Installation abgeschlossen") return nil } diff --git a/homebrew.go b/homebrew.go index fc0f5e2..56b7e56 100644 --- a/homebrew.go +++ b/homebrew.go @@ -2,7 +2,6 @@ package main import ( "fmt" - // "log" "os/exec" ) @@ -12,22 +11,10 @@ func (h *HomebrewManager) Install(packages []string) error { if len(packages) == 0 { return nil } - // fmt.Printf("\nInstalliere %s-Pakete...\n", h.Name()) err := installWithProgress(h, packages) if err != nil { return err } - // for _, pkg := range packages { - // err := installPackageWithProgress(pkg, func() error { - // cmd := exec.Command("brew", "install", pkg) - // return cmd.Run() - // }) - // if err != nil { - // log.Printf("Fehler bei der Installation von %s: %v", pkg, err) - // } - // } - - // fmt.Println("Installation abgeschlossen") return nil } diff --git a/magefile.go b/magefile.go new file mode 100644 index 0000000..35fe78a --- /dev/null +++ b/magefile.go @@ -0,0 +1,58 @@ +//go:build mage +// +build mage + +package main + +import ( + "fmt" + "os" + "os/exec" + + "github.com/magefile/mage/mg" // mg contains helpful utility functions, like Deps +) + +// Default target to run when none is specified +// If not set, running mage will list available targets +// var Default = Build + +// A build step that requires additional params, or platform specific steps for example +func Build() error { + mg.Deps(InstallDeps) + fmt.Println("Building...") + cmd := exec.Command("go", "build", "-o", "MyApp", ".") + return cmd.Run() +} + +// A custom install step if you need your bin someplace other than go/bin +func Install() error { + mg.Deps(Build) + fmt.Println("Installing...") + return os.Rename("./MyApp", "/usr/bin/MyApp") +} + +// Manage your deps, or running package managers. +func InstallDeps() error { + fmt.Println("Installing Deps...") + cmd := exec.Command("go", "get", "github.com/stretchr/piglatin") + return cmd.Run() +} + +// Clean up after yourself +func Clean() { + fmt.Println("Cleaning...") + os.RemoveAll("MyApp") +} + +// Use gofmt to format your code +func Format() error { + fmt.Println("Checking Format") + cmd := exec.Command("gofmt", "./") + return cmd.Run() +} + +// get linting information from golangci-lint +func Lint() error { + fmt.Println("Linting...") + cmd := exec.Command("golangci-lint", "./...") + return cmd.Run() +} diff --git a/main.go b/main.go index b7eb66a..376027d 100644 --- a/main.go +++ b/main.go @@ -1,17 +1,13 @@ package main import ( - "fmt" + "log" "os" - - "github.com/Delta456/box-cli-maker/v2" ) func main() { - Box := box.New(box.Config{Px: 2, Py: 5, Type: "Single"}) - Box.Print("System Setup", "Configure and install your predefined system") if err := rootCmd.Execute(); err != nil { - fmt.Println(err) + log.Println(err) os.Exit(1) } } diff --git a/pipx.go b/pipx.go index 59e64ee..7ba895c 100644 --- a/pipx.go +++ b/pipx.go @@ -1,8 +1,6 @@ package main import ( - // "fmt" - // "log" "os/exec" ) @@ -13,22 +11,10 @@ func (p *PipxManager) Install(packages []string) error { return nil } - // fmt.Printf("\nInstalliere %s-Pakete...\n", p.Name()) err := installWithProgress(p, packages) if err != nil { return err } - // for _, pkg := range packages { - // err := installPackageWithProgress(pkg, func() error { - // cmd := exec.Command("pipx", "install", pkg) - // return cmd.Run() - // }) - // if err != nil { - // log.Printf("Fehler bei der Installation von %s: %v", pkg, err) - // } - // } - - // fmt.Println("Installation abgeschlossen") return nil } diff --git a/tui.go b/tui.go index 459c954..cc4ee26 100644 --- a/tui.go +++ b/tui.go @@ -4,7 +4,6 @@ import ( "fmt" "log" - // tea "github.com/charmbracelet/bubbletea" "github.com/charmbracelet/huh" "github.com/charmbracelet/lipgloss" "github.com/mitchellh/mapstructure" @@ -19,7 +18,7 @@ var ( unavailablePackages []string ) -type installedItemMsg string +// type installedItemMsg string type installedPkgMsg string diff --git a/utils.go b/utils.go index 4c2f522..ea0de75 100644 --- a/utils.go +++ b/utils.go @@ -2,11 +2,12 @@ package main import ( "fmt" - "io" - "net/http" + // "io" + "log" + // "net/http" "os" "os/exec" - "runtime" + // "runtime" "github.com/charmbracelet/huh" "github.com/schollz/progressbar/v3" @@ -30,36 +31,36 @@ func getSudoPassword() (string, error) { return password, nil } -func downloadGolang(golangVersion string) error { - var link string - if runtime.GOARCH == "arm64" { - link = "https://go.dev/dl/go" + golangVersion + ".linux-arm64.tar.gz" - } else { - link = "https://go.dev/dl/go" + golangVersion + ".linux-amd64.tar.gz" - } - resp, err := http.Get(link) - if err != nil { - return fmt.Errorf("fehler beim Herunterladen von Go: %v", err) - } - defer resp.Body.Close() +// func downloadGolang(golangVersion string) error { +// var link string +// if runtime.GOARCH == "arm64" { +// link = "https://go.dev/dl/go" + golangVersion + ".linux-arm64.tar.gz" +// } else { +// link = "https://go.dev/dl/go" + golangVersion + ".linux-amd64.tar.gz" +// } +// resp, err := http.Get(link) +// if err != nil { +// return fmt.Errorf("fehler beim Herunterladen von Go: %v", err) +// } +// defer resp.Body.Close() - if resp.StatusCode != http.StatusOK { - return fmt.Errorf("unerwarteter HTTP-Status: %s", resp.Status) - } +// if resp.StatusCode != http.StatusOK { +// return fmt.Errorf("unerwarteter HTTP-Status: %s", resp.Status) +// } - outFile, err := os.Create("go" + golangVersion + ".linux-" + runtime.GOARCH + ".tar.gz") - if err != nil { - return fmt.Errorf("fehler beim Erstellen der Ausgabedatei: %v", err) - } - defer outFile.Close() +// outFile, err := os.Create("go" + golangVersion + ".linux-" + runtime.GOARCH + ".tar.gz") +// if err != nil { +// return fmt.Errorf("fehler beim Erstellen der Ausgabedatei: %v", err) +// } +// defer outFile.Close() - _, err = io.Copy(outFile, resp.Body) - if err != nil { - return fmt.Errorf("fehler beim Schreiben der Ausgabedatei: %v", err) - } +// _, err = io.Copy(outFile, resp.Body) +// if err != nil { +// return fmt.Errorf("fehler beim Schreiben der Ausgabedatei: %v", err) +// } - return nil -} +// return nil +// } func max(a, b int) int { if a > b { @@ -68,15 +69,15 @@ func max(a, b int) int { return b } -func installPackageWithProgress(name string, installFunc func() error) error { - err := installFunc() - if err != nil { - fmt.Printf("\r❌ %s\n", name) - return err - } - fmt.Printf("\r✓ %s\n", name) - return nil -} +// func installPackageWithProgress(name string, installFunc func() error) error { +// err := installFunc() +// if err != nil { +// fmt.Printf("\r❌ %s\n", name) +// return err +// } +// fmt.Printf("\r✓ %s\n", name) +// return nil +// } func executeShellCommand(command string, env string) error { cmd := exec.Command("bash", "-c", command) @@ -92,10 +93,9 @@ func executeShellCommand(command string, env string) error { func installWithProgress(manager PackageManager, packages []string) error { bar := progressbar.Default(int64(len(packages)), "Installiere "+manager.Name()+"-Pakete...") for _, pkg := range packages { - // fmt.Printf("Installing %s...\n", pkg) err := manager.InstallPackage(pkg) if err != nil { - fmt.Printf("Error installing %s: %v\n", pkg, err) + log.Printf("\nError installing %s: %v\n", pkg, err) } bar.Add(1) }