@@ -17,6 +17,8 @@ limitations under the License.
17
17
package cmd
18
18
19
19
import (
20
+ "io"
21
+ "io/ioutil"
20
22
"os"
21
23
"strings"
22
24
40
42
imgRemote bool
41
43
)
42
44
45
+ func saveFile (r io.Reader ) (string , error ) {
46
+ tmp , err := ioutil .TempFile ("" , "build.*.tar" )
47
+ if err != nil {
48
+ return "" , err
49
+ }
50
+ _ , err = io .Copy (tmp , r )
51
+ if err != nil {
52
+ return "" , err
53
+ }
54
+ err = tmp .Close ()
55
+ if err != nil {
56
+ return "" , err
57
+ }
58
+ return tmp .Name (), nil
59
+ }
60
+
43
61
// loadImageCmd represents the image load command
44
62
var loadImageCmd = & cobra.Command {
45
63
Use : "load" ,
@@ -61,7 +79,11 @@ var loadImageCmd = &cobra.Command{
61
79
local = false
62
80
} else {
63
81
for _ , img := range args {
64
- if strings .HasPrefix (img , "/" ) || strings .HasPrefix (img , "." ) {
82
+ if img == "-" { // stdin
83
+ local = true
84
+ imgDaemon = false
85
+ imgRemote = false
86
+ } else if strings .HasPrefix (img , "/" ) || strings .HasPrefix (img , "." ) {
65
87
local = true
66
88
imgDaemon = false
67
89
imgRemote = false
@@ -78,6 +100,14 @@ var loadImageCmd = &cobra.Command{
78
100
}
79
101
}
80
102
103
+ if args [0 ] == "-" {
104
+ tmp , err := saveFile (os .Stdin )
105
+ if err != nil {
106
+ exit .Error (reason .GuestImageLoad , "Failed to save stdin" , err )
107
+ }
108
+ args = []string {tmp }
109
+ }
110
+
81
111
// Currently "image.retrieveImage" always tries to load both from daemon and from remote
82
112
// There is no way to skip daemon.Image or remote.Image, for the vague "ref" string given.
83
113
if imgDaemon || imgRemote {
0 commit comments