OnCommand implements the 'merge' command
( xc *app.ExecutionContext, gparams *command.GenericParams, cparams *CommandParams)
| 32 | |
| 33 | // OnCommand implements the 'merge' command |
| 34 | func OnCommand( |
| 35 | xc *app.ExecutionContext, |
| 36 | gparams *command.GenericParams, |
| 37 | cparams *CommandParams) { |
| 38 | const cmdName = Name |
| 39 | logger := log.WithFields(log.Fields{"app": appName, "cmd": cmdName}) |
| 40 | |
| 41 | viChan := version.CheckAsync(gparams.CheckVersion, gparams.InContainer, gparams.IsDSImage) |
| 42 | |
| 43 | cmdReport := report.NewMergeCommand(gparams.ReportLocation, gparams.InContainer) |
| 44 | cmdReport.State = cmd.StateStarted |
| 45 | cmdReport.FirstImage = cparams.FirstImage |
| 46 | cmdReport.LastImage = cparams.LastImage |
| 47 | cmdReport.UseLastImageMetadata = cparams.UseLastImageMetadata |
| 48 | |
| 49 | xc.Out.State("started") |
| 50 | xc.Out.Info("params", |
| 51 | ovars{ |
| 52 | "image.first": cparams.FirstImage, |
| 53 | "image.last": cparams.LastImage, |
| 54 | "use.last.image.metadata": cparams.UseLastImageMetadata, |
| 55 | "output.tags": cparams.OutputTags, |
| 56 | }) |
| 57 | |
| 58 | client, err := dockerclient.New(gparams.ClientConfig) |
| 59 | if err == dockerclient.ErrNoDockerInfo { |
| 60 | exitMsg := "missing Docker connection info" |
| 61 | if gparams.InContainer && gparams.IsDSImage { |
| 62 | exitMsg = "make sure to pass the Docker connect parameters to the slim app container" |
| 63 | } |
| 64 | |
| 65 | xc.Out.Info("docker.connect.error", |
| 66 | ovars{ |
| 67 | "message": exitMsg, |
| 68 | }) |
| 69 | |
| 70 | exitCode := command.ECTCommon | command.ECCNoDockerConnectInfo |
| 71 | xc.Out.State("exited", |
| 72 | ovars{ |
| 73 | "exit.code": exitCode, |
| 74 | "version": v.Current(), |
| 75 | "location": fsutil.ExeDir(), |
| 76 | }) |
| 77 | xc.Exit(exitCode) |
| 78 | } |
| 79 | xc.FailOn(err) |
| 80 | |
| 81 | if gparams.Debug { |
| 82 | version.Print(xc, cmdName, logger, client, false, gparams.InContainer, gparams.IsDSImage) |
| 83 | } |
| 84 | |
| 85 | ////////////////////////////////////////////////// |
| 86 | ensureImage := func(name string, imageRef string, cr *report.MergeCommand) string { |
| 87 | imageInspector, err := image.NewInspector(client, imageRef) |
| 88 | xc.FailOn(err) |
| 89 | |
| 90 | noImage, err := imageInspector.NoImage() |
| 91 | errutil.FailOn(err) |
no test coverage detected