@@ -30,6 +30,7 @@ import (
3030 "github.com/arduino/go-paths-helper"
3131 "go.bug.st/f"
3232
33+ "github.com/arduino/arduino-app-cli/internal/eventstream"
3334 "github.com/arduino/arduino-app-cli/internal/orchestrator"
3435 "github.com/arduino/arduino-app-cli/internal/update"
3536)
@@ -74,11 +75,11 @@ func (s *Service) ListUpgradablePackages(ctx context.Context, matcher func(updat
7475// UpgradePackages upgrades the specified packages using the `apt-get upgrade` command.
7576// It publishes events to subscribers during the upgrade process.
7677// It returns an error if the upgrade is already in progress or if the upgrade command fails.
77- func (s * Service ) UpgradePackages (ctx context.Context , names []string ) (<- chan update .Event , error ) {
78+ func (s * Service ) UpgradePackages (ctx context.Context , names []string ) (<- chan eventstream .Event , error ) {
7879 if ! s .lock .TryLock () {
7980 return nil , update .ErrOperationAlreadyInProgress
8081 }
81- eventsCh := make (chan update .Event , 100 )
82+ eventsCh := make (chan eventstream .Event , 100 )
8283
8384 go func () {
8485 defer s .lock .Unlock ()
@@ -87,72 +88,72 @@ func (s *Service) UpgradePackages(ctx context.Context, names []string) (<-chan u
8788 ctx , cancel := context .WithTimeout (ctx , 10 * time .Minute )
8889 defer cancel ()
8990
90- eventsCh <- update .Event {Type : update .StartEvent , Data : "Upgrade is starting" }
91+ eventsCh <- eventstream .Event {Type : eventstream .StartEvent , Data : "Upgrade is starting" }
9192 stream := runUpgradeCommand (ctx , names )
9293 for line , err := range stream {
9394 if err != nil {
94- eventsCh <- update .Event {
95- Type : update .ErrorEvent ,
95+ eventsCh <- eventstream .Event {
96+ Type : eventstream .ErrorEvent ,
9697 Err : err ,
9798 Data : "Error running upgrade command" ,
9899 }
99100 slog .Error ("error processing upgrade command output" , "error" , err )
100101 return
101102 }
102- eventsCh <- update .Event {Type : update .UpgradeLineEvent , Data : line }
103+ eventsCh <- eventstream .Event {Type : eventstream .UpgradeLineEvent , Data : line }
103104 }
104- eventsCh <- update .Event {Type : update .StartEvent , Data : "apt cleaning cache is starting" }
105+ eventsCh <- eventstream .Event {Type : eventstream .StartEvent , Data : "apt cleaning cache is starting" }
105106 for line , err := range runAptCleanCommand (ctx ) {
106107 if err != nil {
107- eventsCh <- update .Event {
108- Type : update .ErrorEvent ,
108+ eventsCh <- eventstream .Event {
109+ Type : eventstream .ErrorEvent ,
109110 Err : err ,
110111 Data : "Error running apt clean command" ,
111112 }
112113 slog .Error ("error processing apt clean command output" , "error" , err )
113114 return
114115 }
115- eventsCh <- update .Event {Type : update .UpgradeLineEvent , Data : line }
116+ eventsCh <- eventstream .Event {Type : eventstream .UpgradeLineEvent , Data : line }
116117 }
117118 // TEMPORARY PATCH: stopping and destroying docker containers and images since IDE does not implement it yet.
118119 // TODO: Remove this workaround once IDE implements it.
119120 // Tracking issue: https://github.com/arduino/arduino-app-cli/issues/623
120- eventsCh <- update .Event {Type : update .UpgradeLineEvent , Data : "Stop and destroy docker containers and images ..." }
121+ eventsCh <- eventstream .Event {Type : eventstream .UpgradeLineEvent , Data : "Stop and destroy docker containers and images ..." }
121122 streamCleanup := cleanupDockerContainers (ctx )
122123 for line , err := range streamCleanup {
123124 if err != nil {
124125 // TODO: maybe we should retun an error or a better feedback to the user?
125126 // currently, we just log the error and continue considenring not blocking
126127 slog .Error ("Error stopping and destroying docker containers" , "error" , err )
127128 }
128- eventsCh <- update .Event {Type : update .UpgradeLineEvent , Data : line }
129+ eventsCh <- eventstream .Event {Type : eventstream .UpgradeLineEvent , Data : line }
129130 }
130131
131132 // TEMPORARY PATCH: Install the latest docker images and show the logs to the users.
132133 // TODO: Remove this workaround once docker image versions are no longer hardcoded in arduino-app-cli.
133134 // Tracking issue: https://github.com/arduino/arduino-app-cli/issues/600
134135 // Currently, we need to launch `arduino-app-cli system init` to pull the latest docker images because
135136 // the version of the docker images are hardcoded in the (new downloaded) version of the arduino-app-cli.
136- eventsCh <- update .Event {Type : update .UpgradeLineEvent , Data : "Pulling the latest docker images ..." }
137+ eventsCh <- eventstream .Event {Type : eventstream .UpgradeLineEvent , Data : "Pulling the latest docker images ..." }
137138 streamDocker := pullDockerImages (ctx )
138139 for line , err := range streamDocker {
139140 if err != nil {
140- eventsCh <- update .Event {
141- Type : update .ErrorEvent ,
141+ eventsCh <- eventstream .Event {
142+ Type : eventstream .ErrorEvent ,
142143 Err : err ,
143144 Data : "Error upgrading docker images" ,
144145 }
145146 slog .Error ("error upgrading docker images" , "error" , err )
146147 return
147148 }
148- eventsCh <- update .Event {Type : update .UpgradeLineEvent , Data : line }
149+ eventsCh <- eventstream .Event {Type : eventstream .UpgradeLineEvent , Data : line }
149150 }
150- eventsCh <- update .Event {Type : update .RestartEvent , Data : "Upgrade completed. Restarting ..." }
151+ eventsCh <- eventstream .Event {Type : eventstream .RestartEvent , Data : "Upgrade completed. Restarting ..." }
151152
152153 err := restartServices (ctx )
153154 if err != nil {
154- eventsCh <- update .Event {
155- Type : update .ErrorEvent ,
155+ eventsCh <- eventstream .Event {
156+ Type : eventstream .ErrorEvent ,
156157 Err : err ,
157158 Data : "Error restart services after upgrade" ,
158159 }
@@ -361,7 +362,7 @@ func parseListUpgradableOutput(r io.Reader) []update.UpgradablePackage {
361362 name := strings .Split (matches [1 ], "/" )[0 ]
362363
363364 pkg := update.UpgradablePackage {
364- Type : update .Debian ,
365+ Type : eventstream .Debian ,
365366 Name : name ,
366367 ToVersion : matches [2 ],
367368 Architecture : matches [3 ],
0 commit comments