11package commands
22
33import (
4- "fmt"
5- "os"
6- "path/filepath"
7- "strings"
8-
94 "appimage-manager/app/utils"
5+ "errors"
6+ "fmt"
7+ updateUtils "github.com/AppImageCrafters/appimage-update/util"
108
119 "github.com/AppImageCrafters/appimage-update"
1210)
@@ -18,6 +16,8 @@ type UpdateCmd struct {
1816 All bool `help:"Update all applications."`
1917}
2018
19+ var NoUpdateInfo = errors .New ("there is no update information" )
20+
2121func (cmd * UpdateCmd ) Run (* Context ) (err error ) {
2222 if cmd .All {
2323 cmd .Targets , err = getAllTargets ()
@@ -27,32 +27,32 @@ func (cmd *UpdateCmd) Run(*Context) (err error) {
2727 }
2828
2929 for _ , target := range cmd .Targets {
30- filePath , err := cmd .getBundleFilePath (target )
30+ entry , err := cmd .getRegistryEntry (target )
3131 if err != nil {
32- println (err . Error () )
32+ println (err )
3333 continue
3434 }
3535
36- updateMethod , err := update .NewUpdaterFor ( filePath )
36+ updateMethod , err := update .NewUpdateForUpdateString ( entry . UpdateInfo , entry . FilePath )
3737 if err != nil {
3838 println (err .Error ())
3939 continue
4040 }
4141
42- fmt .Println ("Looking for updates of: " , filePath )
42+ fmt .Println ("Looking for updates of: " , entry . FilePath )
4343 updateAvailable , err := updateMethod .Lookup ()
4444 if err != nil {
4545 println (err .Error ())
4646 continue
4747 }
4848
4949 if ! updateAvailable {
50- fmt .Println ("No updates were found for: " , filePath )
50+ fmt .Println ("No updates were found for: " , entry . FilePath )
5151 continue
5252 }
5353
5454 if cmd .Check {
55- fmt .Println ("Update available for: " , filePath )
55+ fmt .Println ("Update available for: " , entry . FilePath )
5656 continue
5757 }
5858
@@ -68,49 +68,38 @@ func (cmd *UpdateCmd) Run(*Context) (err error) {
6868 return nil
6969}
7070
71- func getAllTargets () ([] string , error ) {
71+ func ( cmd * UpdateCmd ) getRegistryEntry ( target string ) (utils. RegistryEntry , error ) {
7272 registry , err := utils .OpenRegistry ()
7373 if err != nil {
74- return nil , err
75- }
76- registry .Update ()
77-
78- paths := make ([]string , len (registry .Entries ))
79- for k := range registry .Entries {
80- paths = append (paths , k )
74+ return utils.RegistryEntry {}, err
8175 }
76+ defer registry .Close ()
8277
83- return paths , nil
84- }
78+ entry , _ := registry .Lookup (target )
8579
86- func ( cmd * UpdateCmd ) getBundleFilePath ( target string ) ( string , error ) {
87- if strings . HasPrefix (target , "file://" ) {
88- cmd . Targets = cmd . Targets [ 7 :]
80+ if entry . UpdateInfo == "" {
81+ entry . UpdateInfo , _ = updateUtils . ReadUpdateInfo (target )
82+ entry . FilePath = target
8983 }
9084
91- if _ , err := os .Stat (target ); err == nil {
92- return target , nil
85+ if entry .UpdateInfo == "" {
86+ return entry , NoUpdateInfo
87+ } else {
88+ return entry , nil
9389 }
90+ }
9491
92+ func getAllTargets () ([]string , error ) {
9593 registry , err := utils .OpenRegistry ()
9694 if err != nil {
97- return "" , err
95+ return nil , err
9896 }
9997 registry .Update ()
10098
101- fileName , ok := registry .Lookup (target )
102- if ! ok {
103- fileName = target
104- }
105-
106- applicationsDir , err := utils .MakeApplicationsDirPath ()
107- if err != nil {
108- return "" , err
99+ paths := make ([]string , len (registry .Entries ))
100+ for k := range registry .Entries {
101+ paths = append (paths , k )
109102 }
110- filePath := filepath .Join (applicationsDir , fileName )
111103
112- if _ , err := os .Stat (filePath ); os .IsNotExist (err ) {
113- return "" , fmt .Errorf ("application not found \" " + target + "\" " )
114- }
115- return filePath , nil
104+ return paths , nil
116105}
0 commit comments