|
...
|
...
|
@@ -146,20 +146,22 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e
|
|
146
|
146
|
if len(tmp) != 2 {
|
|
147
|
147
|
return nil, fmt.Errorf("Invalid Dockerfile format")
|
|
148
|
148
|
}
|
|
149
|
|
- switch tmp[0] {
|
|
|
149
|
+ instruction := tmp[0]
|
|
|
150
|
+ arguments := tmp[1]
|
|
|
151
|
+ switch strings.ToLower(instruction) {
|
|
150
|
152
|
case "from":
|
|
151
|
|
- fmt.Fprintf(stdout, "FROM %s\n", tmp[1])
|
|
152
|
|
- image, err = builder.runtime.repositories.LookupImage(tmp[1])
|
|
|
153
|
+ fmt.Fprintf(stdout, "FROM %s\n", arguments)
|
|
|
154
|
+ image, err = builder.runtime.repositories.LookupImage(arguments)
|
|
153
|
155
|
if err != nil {
|
|
154
|
156
|
return nil, err
|
|
155
|
157
|
}
|
|
156
|
158
|
break
|
|
157
|
159
|
case "run":
|
|
158
|
|
- fmt.Fprintf(stdout, "RUN %s\n", tmp[1])
|
|
|
160
|
+ fmt.Fprintf(stdout, "RUN %s\n", arguments)
|
|
159
|
161
|
if image == nil {
|
|
160
|
162
|
return nil, fmt.Errorf("Please provide a source image with `from` prior to run")
|
|
161
|
163
|
}
|
|
162
|
|
- config, err := ParseRun([]string{image.Id, "/bin/sh", "-c", tmp[1]}, nil, builder.runtime.capabilities)
|
|
|
164
|
+ config, err := ParseRun([]string{image.Id, "/bin/sh", "-c", arguments}, nil, builder.runtime.capabilities)
|
|
163
|
165
|
if err != nil {
|
|
164
|
166
|
return nil, err
|
|
165
|
167
|
}
|
|
...
|
...
|
@@ -176,7 +178,7 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e
|
|
176
|
176
|
|
|
177
|
177
|
// Wait for it to finish
|
|
178
|
178
|
if result := c.Wait(); result != 0 {
|
|
179
|
|
- return nil, fmt.Errorf("!!! '%s' return non-zero exit code '%d'. Aborting.", tmp[1], result)
|
|
|
179
|
+ return nil, fmt.Errorf("!!! '%s' return non-zero exit code '%d'. Aborting.", arguments, result)
|
|
180
|
180
|
}
|
|
181
|
181
|
|
|
182
|
182
|
// Commit the container
|
|
...
|
...
|
@@ -196,19 +198,21 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e
|
|
196
|
196
|
if image == nil {
|
|
197
|
197
|
return nil, fmt.Errorf("Please provide a source image with `from` prior to copy")
|
|
198
|
198
|
}
|
|
199
|
|
- tmp2 := strings.SplitN(tmp[1], " ", 2)
|
|
|
199
|
+ tmp = strings.SplitN(arguments, " ", 2)
|
|
200
|
200
|
if len(tmp) != 2 {
|
|
201
|
201
|
return nil, fmt.Errorf("Invalid INSERT format")
|
|
202
|
202
|
}
|
|
203
|
|
- fmt.Fprintf(stdout, "COPY %s to %s in %s\n", tmp2[0], tmp2[1], base.ShortId())
|
|
|
203
|
+ sourceUrl := tmp[0]
|
|
|
204
|
+ destPath := tmp[1]
|
|
|
205
|
+ fmt.Fprintf(stdout, "COPY %s to %s in %s\n", sourceUrl, destPath, base.ShortId())
|
|
204
|
206
|
|
|
205
|
|
- file, err := Download(tmp2[0], stdout)
|
|
|
207
|
+ file, err := Download(sourceUrl, stdout)
|
|
206
|
208
|
if err != nil {
|
|
207
|
209
|
return nil, err
|
|
208
|
210
|
}
|
|
209
|
211
|
defer file.Body.Close()
|
|
210
|
212
|
|
|
211
|
|
- config, err := ParseRun([]string{base.Id, "echo", "insert", tmp2[0], tmp2[1]}, nil, builder.runtime.capabilities)
|
|
|
213
|
+ config, err := ParseRun([]string{base.Id, "echo", "insert", sourceUrl, destPath}, nil, builder.runtime.capabilities)
|
|
212
|
214
|
if err != nil {
|
|
213
|
215
|
return nil, err
|
|
214
|
216
|
}
|
|
...
|
...
|
@@ -223,10 +227,10 @@ func (builder *Builder) Build(dockerfile io.Reader, stdout io.Writer) (*Image, e
|
|
223
|
223
|
|
|
224
|
224
|
// Wait for echo to finish
|
|
225
|
225
|
if result := c.Wait(); result != 0 {
|
|
226
|
|
- return nil, fmt.Errorf("!!! '%s' return non-zero exit code '%d'. Aborting.", tmp[1], result)
|
|
|
226
|
+ return nil, fmt.Errorf("!!! '%s' return non-zero exit code '%d'. Aborting.", arguments, result)
|
|
227
|
227
|
}
|
|
228
|
228
|
|
|
229
|
|
- if err := c.Inject(file.Body, tmp2[1]); err != nil {
|
|
|
229
|
+ if err := c.Inject(file.Body, destPath); err != nil {
|
|
230
|
230
|
return nil, err
|
|
231
|
231
|
}
|
|
232
|
232
|
|