refactor: implement a simple progressbar instead of bubbletea
This commit is contained in:
parent
0504d88775
commit
339dba4e13
11 changed files with 104 additions and 116 deletions
14
cargo.go
14
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
|
||||
}
|
||||
|
||||
|
|
|
|||
13
flatpak.go
13
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
|
||||
}
|
||||
|
||||
|
|
|
|||
1
go.mod
1
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
|
||||
|
|
|
|||
2
go.sum
2
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=
|
||||
|
|
|
|||
14
golang.go
14
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
|
||||
}
|
||||
|
||||
|
|
|
|||
13
homebrew.go
13
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
|
||||
}
|
||||
|
||||
|
|
|
|||
58
magefile.go
Normal file
58
magefile.go
Normal file
|
|
@ -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()
|
||||
}
|
||||
8
main.go
8
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)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
14
pipx.go
14
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
|
||||
}
|
||||
|
||||
|
|
|
|||
3
tui.go
3
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
|
||||
|
||||
|
|
|
|||
80
utils.go
80
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)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue