Compare commits
2 Commits
9ef131e93f
...
3764e8b546
| Author | SHA1 | Date | |
|---|---|---|---|
| 3764e8b546 | |||
| e74e976b4d |
@@ -4,10 +4,9 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"gitea.home.musaberdem.de/musabe24/ginie/internal/install"
|
||||
"gitea.home.musaberdem.de/musabe24/ginie/internal/repos"
|
||||
"gitea.home.musaberdem.de/musabe24/ginie/internal/version"
|
||||
"gitea.home.musaberdem.de/musabe24/ginie/internal/install"
|
||||
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -41,6 +40,22 @@ func main() {
|
||||
fmt.Println("Repo hinzugefügt:", url)
|
||||
return
|
||||
|
||||
case "remove":
|
||||
if len(os.Args) < 3 {
|
||||
fmt.Println("Usage: ginie remove <GitHub-URL>")
|
||||
return
|
||||
}
|
||||
url := os.Args[2]
|
||||
|
||||
err := repos.RemoveRepo(url)
|
||||
if err != nil {
|
||||
fmt.Println("Fehler:", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Println("Repo entfernt:", url)
|
||||
return
|
||||
|
||||
case "list":
|
||||
reposList, err := repos.ListRepos()
|
||||
if err != nil {
|
||||
@@ -56,7 +71,11 @@ func main() {
|
||||
|
||||
fmt.Println("Registrierte Repositories:")
|
||||
for _, r := range reposList {
|
||||
fmt.Printf("- %s/%s (%s)\n", r.Owner, r.Name, r.URL)
|
||||
version := r.InstalledVersion
|
||||
if version == "" {
|
||||
version = "nicht installiert"
|
||||
}
|
||||
fmt.Printf("- %s/%s (%s) – Version: %s\n", r.Owner, r.Name, r.URL, version)
|
||||
}
|
||||
return
|
||||
|
||||
@@ -74,7 +93,6 @@ func main() {
|
||||
}
|
||||
return
|
||||
|
||||
|
||||
default:
|
||||
fmt.Println("Unbekannter Befehl:", cmd)
|
||||
return
|
||||
|
||||
@@ -123,6 +123,11 @@ func Install(pkg string) error {
|
||||
return errors.New("Release hat keine Assets")
|
||||
}
|
||||
|
||||
installedVersion := release.TagName
|
||||
if installedVersion == "" {
|
||||
installedVersion = version
|
||||
}
|
||||
|
||||
// Asset-Auswahl
|
||||
fmt.Println("Verfügbare Assets:")
|
||||
for i, a := range release.Assets {
|
||||
@@ -167,17 +172,25 @@ func Install(pkg string) error {
|
||||
cmd := exec.Command("sudo", "dpkg", "-i", asset.Name)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
// Run the install command
|
||||
err := cmd.Run()
|
||||
if err != nil {
|
||||
fmt.Println("Package konnte nicht installiert werden.")
|
||||
}
|
||||
// Remove debian package file
|
||||
err = os.Remove(asset.Name)
|
||||
if err != nil {
|
||||
fmt.Println("Package konnte nicht gelöscht werden.")
|
||||
}
|
||||
if installedVersion == "" {
|
||||
installedVersion = "unknown"
|
||||
}
|
||||
if err := repos.SetInstalledVersion(repo.Name, installedVersion); err != nil {
|
||||
fmt.Println("Speichern der installierten Version nicht möglich.")
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
return errors.New("Asset-Typ wird noch nicht unterstützt")
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ type Repo struct {
|
||||
URL string `json:"url"`
|
||||
Owner string `json:"owner"`
|
||||
Name string `json:"name"`
|
||||
InstalledVersion string `json:"installed_version,omitempty"`
|
||||
}
|
||||
|
||||
func configPath() (string, error) {
|
||||
@@ -103,6 +104,51 @@ func AddRepo(url string) error {
|
||||
return SaveRepos(repos)
|
||||
}
|
||||
|
||||
func RemoveRepo(url string) error {
|
||||
repos, err := LoadRepos()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
index := -1
|
||||
for i, r := range repos {
|
||||
if r.URL == url {
|
||||
index = i
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if index == -1 {
|
||||
return errors.New("Repo nicht gefunden")
|
||||
}
|
||||
|
||||
repos = append(repos[:index], repos[index+1:]...)
|
||||
|
||||
return SaveRepos(repos)
|
||||
}
|
||||
|
||||
func ListRepos() ([]Repo, error) {
|
||||
return LoadRepos()
|
||||
}
|
||||
|
||||
func SetInstalledVersion(name string, version string) error {
|
||||
repos, err := LoadRepos()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
updated := false
|
||||
for i := range repos {
|
||||
if repos[i].Name == name {
|
||||
repos[i].InstalledVersion = version
|
||||
updated = true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if !updated {
|
||||
return errors.New("Repo nicht gefunden")
|
||||
}
|
||||
|
||||
return SaveRepos(repos)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user