4
4
package main
5
5
6
6
import (
7
+ "bytes"
7
8
"fmt"
8
9
"os"
9
10
"os/exec"
@@ -38,6 +39,16 @@ func runCmd(name string, flags []string, args ...string) error {
38
39
return cmd .Run ()
39
40
}
40
41
42
+ func shell (name string , flags []string , args ... string ) (string , error ) {
43
+ cmd := exec .Command (name , append (flags , args ... )... )
44
+ out , err := cmd .Output ()
45
+ if err != nil {
46
+ return "" , err
47
+ }
48
+ out = bytes .TrimSuffix (out , []byte {'\n' })
49
+ return string (out ), nil
50
+ }
51
+
41
52
func guestInstallAction (cmd * cobra.Command , args []string ) error {
42
53
instName := DefaultInstanceName
43
54
if len (args ) > 0 {
@@ -67,18 +78,23 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
67
78
if err != nil {
68
79
return err
69
80
}
70
- tmp := "/tmp/lima-guestagent"
81
+ tmpname := "lima-guestagent"
82
+ tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "lima-guestagent.XXXXXX" )
83
+ if err != nil {
84
+ return err
85
+ }
71
86
bin := prefix + "/bin/lima-guestagent"
72
- logrus .Infof ("Copying %q to %s" , guestAgentBinary , hostname )
87
+ logrus .Infof ("Copying %q to %s:%s " , guestAgentBinary , inst . Name , tmpname )
73
88
scpArgs := []string {guestAgentBinary , hostname + ":" + tmp }
74
89
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
75
90
return nil
76
91
}
77
- logrus .Infof ("Installing %s to %s" , tmp , bin )
92
+ logrus .Infof ("Installing %s to %s" , tmpname , bin )
78
93
sshArgs := []string {hostname , "sudo" , "install" , "-m" , "755" , tmp , bin }
79
94
if err := runCmd (sshExe , sshFlags , sshArgs ... ); err != nil {
80
95
return nil
81
96
}
97
+ _ , _ = shell (sshExe , sshFlags , hostname , "rm" , tmp )
82
98
83
99
// nerdctl-full.tgz
84
100
nerdctlFilename := cacheutil .NerdctlArchive (inst .Config )
@@ -87,17 +103,22 @@ func guestInstallAction(cmd *cobra.Command, args []string) error {
87
103
if err != nil {
88
104
return err
89
105
}
90
- tmp := "/tmp/nerdctl-full.tgz"
91
- logrus .Infof ("Copying %q to %s" , nerdctlFilename , hostname )
106
+ tmpname := "nerdctl-full.tgz"
107
+ tmp , err := shell (sshExe , sshFlags , hostname , "mktemp" , "-t" , "nerdctl-full.XXXXXX.tgz" )
108
+ if err != nil {
109
+ return err
110
+ }
111
+ logrus .Infof ("Copying %q to %s:%s" , nerdctlFilename , inst .Name , tmpname )
92
112
scpArgs := []string {nerdctlArchive , hostname + ":" + tmp }
93
113
if err := runCmd (scpExe , scpFlags , scpArgs ... ); err != nil {
94
114
return nil
95
115
}
96
- logrus .Infof ("Installing %s in %s" , tmp , prefix )
116
+ logrus .Infof ("Installing %s in %s" , tmpname , prefix )
97
117
sshArgs := []string {hostname , "sudo" , "tar" , "Cxzf" , prefix , tmp }
98
118
if err := runCmd (sshExe , sshFlags , sshArgs ... ); err != nil {
99
119
return nil
100
120
}
121
+ _ , _ = shell (sshExe , sshFlags , hostname , "rm" , tmp )
101
122
}
102
123
103
124
return nil
0 commit comments