@@ -5,7 +5,10 @@ package main
5
5
6
6
import (
7
7
"bytes"
8
+ "compress/gzip"
9
+ "errors"
8
10
"fmt"
11
+ "io"
9
12
"os"
10
13
"os/exec"
11
14
"path/filepath"
@@ -79,13 +82,41 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
79
82
if err != nil {
80
83
return err
81
84
}
85
+ guestAgentFilename := filepath .Base (guestAgentBinary )
86
+ if _ , err := os .Stat (guestAgentBinary ); err != nil {
87
+ if ! errors .Is (err , os .ErrNotExist ) {
88
+ return err
89
+ }
90
+ compressedGuestAgent , err := os .Open (guestAgentBinary + ".gz" )
91
+ if err != nil {
92
+ return err
93
+ }
94
+ defer compressedGuestAgent .Close ()
95
+ tmpGuestAgent , err := os .CreateTemp ("" , "lima-guestagent-" )
96
+ if err != nil {
97
+ return err
98
+ }
99
+ logrus .Debugf ("Decompressing %s.gz" , guestAgentBinary )
100
+ guestAgent , err := gzip .NewReader (compressedGuestAgent )
101
+ if err != nil {
102
+ return err
103
+ }
104
+ defer guestAgent .Close ()
105
+ _ , err = io .Copy (tmpGuestAgent , guestAgent )
106
+ if err != nil {
107
+ return err
108
+ }
109
+ tmpGuestAgent .Close ()
110
+ guestAgentBinary = tmpGuestAgent .Name ()
111
+ defer os .RemoveAll (guestAgentBinary )
112
+ }
82
113
tmpname := "lima-guestagent"
83
114
tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "lima-guestagent.XXXXXX" )
84
115
if err != nil {
85
116
return err
86
117
}
87
118
bin := prefix + "/bin/lima-guestagent"
88
- logrus .Infof ("Copying %q to %s:%s" , guestAgentBinary , inst .Name , tmpname )
119
+ logrus .Infof ("Copying %q to %s:%s" , guestAgentFilename , inst .Name , tmpname )
89
120
scpArgs := []string {guestAgentBinary , hostname + ":" + tmp }
90
121
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
91
122
return nil
0 commit comments