ImageFromOptions returns an image from a set of options.
(options map[cli.OptionType][]string)
| 26 | |
| 27 | // ImageFromOptions returns an image from a set of options. |
| 28 | func ImageFromOptions(options map[cli.OptionType][]string) (image *Image, err error) { |
| 29 | useExtension := len(options[cli.Extension]) == 1 |
| 30 | useImage := len(options[cli.Image]) == 1 |
| 31 | |
| 32 | if useStdin := len(options[cli.Source]) == 0; useStdin { |
| 33 | if useExtension { |
| 34 | image, err = LookupImageByExtension(options[cli.Extension][0]) |
| 35 | } else if useImage { |
| 36 | overrideImage, err := LookupImageByOverride(options[cli.Image][0], "unknown") |
| 37 | if err != nil { |
| 38 | return nil, err |
| 39 | } |
| 40 | image, err = LookupImageByName(overrideImage.Image) |
| 41 | image.Version = overrideImage.Version |
| 42 | } else { |
| 43 | err = fmt.Errorf("STDIN requested but no extension or image supplied") |
| 44 | } |
| 45 | } else { |
| 46 | if extension := util.ExtractFileExtension(options[cli.Source][0]); useExtension { |
| 47 | image, err = LookupImageByExtension(options[cli.Extension][0]) |
| 48 | } else if useImage { |
| 49 | image, err = LookupImageByOverride(options[cli.Image][0], extension) |
| 50 | } else { |
| 51 | image, err = LookupImageByExtension(extension) |
| 52 | } |
| 53 | } |
| 54 | return image, err |
| 55 | } |
| 56 | |
| 57 | // BuildVolumeArgs takes a base path and returns an array of Docker volume |
| 58 | // arguments. The array takes the form {"-v", "/foo:/bar:[rw|ro]", ...} for |
nothing calls this directly
no test coverage detected