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