56 lines
1.1 KiB
Go
56 lines
1.1 KiB
Go
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"time"
|
|
|
|
"github.com/charmbracelet/huh"
|
|
)
|
|
|
|
func GetSudoPassword() (string, error) {
|
|
var password string
|
|
form := huh.NewForm(
|
|
huh.NewGroup(
|
|
huh.NewInput().
|
|
Title("Enter your password").
|
|
EchoMode(huh.EchoModePassword).
|
|
Value(&password),
|
|
),
|
|
).WithTheme(huh.ThemeCatppuccin())
|
|
|
|
err := form.Run()
|
|
if err != nil {
|
|
return "", fmt.Errorf("error at password-dialog: %v", err)
|
|
}
|
|
return password, nil
|
|
}
|
|
|
|
func max(a, b int) int {
|
|
if a > b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
func LogToHistory(action, pkg, manager string) error {
|
|
dirname, err := os.UserConfigDir()
|
|
if err != nil {
|
|
return fmt.Errorf("cant obtain config dir: %v", err)
|
|
}
|
|
historyFile := filepath.Join(dirname, "sst", "sst_history")
|
|
f, err := os.OpenFile(historyFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer f.Close()
|
|
|
|
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
|
logEntry := fmt.Sprintf("%s: action: [%s] - package: [%s] - packagemanager: [%s]\n", timestamp, action, pkg, manager)
|
|
|
|
if _, err := f.WriteString(logEntry); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|