@@ -24,7 +24,9 @@ import (
24
24
"os"
25
25
"os/exec"
26
26
"path"
27
+ "runtime"
27
28
"strconv"
29
+ "strings"
28
30
"time"
29
31
30
32
"github.com/golang/glog"
@@ -202,8 +204,27 @@ func (k *kicRunner) chmod(dst string, perm string) error {
202
204
203
205
// Podman cp command doesn't match docker and doesn't have -a
204
206
func copyToPodman (src string , dest string ) error {
205
- if out , err := oci .PrefixCmd (exec .Command (oci .Podman , "cp" , src , dest )).CombinedOutput (); err != nil {
206
- return errors .Wrapf (err , "podman copy %s into %s, output: %s" , src , dest , string (out ))
207
+ if runtime .GOOS == "linux" {
208
+ cmd := oci .PrefixCmd (exec .Command (oci .Podman , "cp" , src , dest ))
209
+ glog .Infof ("Run: %v" , cmd )
210
+ if out , err := cmd .CombinedOutput (); err != nil {
211
+ return errors .Wrapf (err , "podman copy %s into %s, output: %s" , src , dest , string (out ))
212
+ }
213
+ } else {
214
+ file , err := os .Open (src )
215
+ if err != nil {
216
+ return err
217
+ }
218
+ defer file .Close ()
219
+ parts := strings .Split (dest , ":" )
220
+ container := parts [0 ]
221
+ path := parts [1 ]
222
+ cmd := exec .Command (oci .Podman , "exec" , "-i" , container , "tee" , path )
223
+ cmd .Stdin = file
224
+ glog .Infof ("Run: %v" , cmd )
225
+ if err := cmd .Run (); err != nil {
226
+ return errors .Wrapf (err , "podman copy %s into %s" , src , dest )
227
+ }
207
228
}
208
229
return nil
209
230
}
0 commit comments