11package main
22
33import (
4+ "context"
5+ "os"
46 "os/exec"
57 "slices"
68 "strings"
79 "sync"
810
9- "github.com/rs/zerolog/log"
1011 "gopkg.in/ini.v1"
1112)
1213
13- func getApps () ([]string , error ) {
14+ func getApps (ctx context. Context ) ([]string , error ) {
1415 cmd := exec .Command ("flatpak" , "list" , "--app" )
1516 cmd .Dir = "/var/lib/flatpak"
1617
17- log .Debug (). Str ( " command" , cmd .Path + strings .Join (cmd .Args , " " )). Msg ( "Running command" )
18+ log .DebugContext ( ctx , "Running command" , "command" , cmd .Path + " " + strings .Join (cmd .Args , " " ))
1819 out , err := cmd .Output ()
1920 if err != nil {
2021 return nil , err
@@ -29,29 +30,29 @@ func getApps() ([]string, error) {
2930 }
3031 data := strings .Split (app , "\t " )
3132 if len (data ) < 2 {
32- log .Warn (). Msgf ( "Skipping line: %s " , app )
33+ log .WarnContext ( ctx , "Skipping line" , "line " , app )
3334 continue
3435 }
3536 appID := strings .TrimSpace (data [1 ])
3637 if appID == "" {
3738 continue
3839 }
39- log .Trace (). Msgf ( "AppID: %s " , appID )
40+ log .DebugContext ( ctx , "AppID found" , "appid " , appID )
4041 apps = append (apps , appID )
4142 }
4243 return apps , nil
4344}
4445
45- func getFlatpakApp (appID string ) (Flatpak , error ) {
46+ func getFlatpakApp (ctx context. Context , appID string ) (Flatpak , error ) {
4647 cmd := exec .Command ("flatpak" , "info" , "-m" , appID )
4748
48- log .Debug (). Str ( " command" , cmd .Path + strings .Join (cmd .Args , " " )). Str ( "appID " , appID ). Msg ( "Running command" )
49+ log .DebugContext ( ctx , "Running command" , "command" , cmd .Path + " " + strings .Join (cmd .Args , " " ), "appid " , appID )
4950 out , err := cmd .Output ()
5051 if err != nil {
5152 return Flatpak {}, err
5253 }
5354
54- log .Trace (). Str ( " data" , string (out )). Msg ( "Parsing toml" )
55+ log .DebugContext ( ctx , "Parsing toml" , " data" , string (out ))
5556 var flatpak Flatpak
5657 cfg , err := ini .Load (out )
5758 if err != nil {
@@ -62,15 +63,15 @@ func getFlatpakApp(appID string) (Flatpak, error) {
6263 return Flatpak {}, err
6364 }
6465
65- flatpak .Application .Command , err = getCommand (& flatpak )
66+ flatpak .Application .Command , err = getCommand (ctx , & flatpak )
6667 if err != nil {
6768 return Flatpak {}, err
6869 }
6970
7071 return flatpak , nil
7172}
7273
73- func removeDuplicates (apps []Flatpak ) []Flatpak {
74+ func removeDuplicates (ctx context. Context , apps []Flatpak ) []Flatpak {
7475 keys := make (map [string ]* Flatpak )
7576 list := []Flatpak {}
7677 duplicates := make (map [string ][]Flatpak )
@@ -89,35 +90,36 @@ func removeDuplicates(apps []Flatpak) []Flatpak {
8990 return slices .DeleteFunc (list , func (app Flatpak ) bool {
9091 apps , ok := duplicates [app .Application .Command ]
9192 if ok {
92- log .Warn (). Str ( " command" , app .Application .Command ). Interface ( "apps" , apps ). Msg ( "Found duplicates" )
93+ log .WarnContext ( ctx , "Found duplicates" , " command" , app .Application .Command , "apps" , apps )
9394 }
9495 return ok
9596 })
9697}
9798
98- func getAllFlatpakApps () []Flatpak {
99- appsID , err := getApps ()
99+ func getAllFlatpakApps (ctx context. Context ) []Flatpak {
100+ appsID , err := getApps (ctx )
100101 if err != nil {
101- log .Fatal ().Err (err ).Msg ("Error getting apps" )
102+ log .ErrorContext (ctx , "Error getting apps" , "err" , err )
103+ os .Exit (1 )
102104 }
103105
104106 apps := make ([]Flatpak , len (appsID ))
105107 wg := sync.WaitGroup {}
106108 for i , appID := range appsID {
107109 wg .Add (1 )
108- go func (appID string ) {
110+ go func (i int , appID string ) {
109111 defer wg .Done ()
110- app , err := getFlatpakApp (appID )
112+ app , err := getFlatpakApp (ctx , appID )
111113 if err != nil {
112- log .Error (). Err ( err ). Str ( "appID" , appID ). Msg ( "Error getting app" )
114+ log .ErrorContext ( ctx , "Error getting app" , "err" , err , "appid" , appID )
113115 }
114116 // No need to lock since we are writing to different indexes
115117 apps [i ] = app
116- }(appID )
118+ }(i , appID )
117119 }
118120 wg .Wait ()
119121
120- apps = removeDuplicates (apps )
122+ apps = removeDuplicates (ctx , apps )
121123
122124 return apps
123125}
0 commit comments