system_setup_tool/utils.go

67 lines
1.4 KiB
Go

package main
import (
"fmt"
"io"
"net/http"
"os"
"runtime"
"github.com/charmbracelet/huh"
)
func getSudoPassword() (string, error) {
var password string
form := huh.NewForm(
huh.NewGroup(
huh.NewInput().
Title("Bitte geben Sie Ihr sudo-Passwort ein").
EchoMode(huh.EchoModePassword).
Value(&password),
),
).WithTheme(huh.ThemeCatppuccin())
err := form.Run()
if err != nil {
return "", fmt.Errorf("fehler bei der Passwortabfrage: %v", err)
}
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()
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()
_, err = io.Copy(outFile, resp.Body)
if err != nil {
return fmt.Errorf("fehler beim Schreiben der Ausgabedatei: %v", err)
}
return nil
}
func max(a, b int) int {
if a > b {
return a
}
return b
}