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