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