code: func run(b *Builder, args []string, attributes map[string]bool, flagArgs []string, original string) error {
  	if b.RunConfig.Image == "" {
  		return fmt.Errorf("Please provide a source image with `from` prior to run")
  	}
  
  	args = handleJSONArgs(args, attributes)
  
  	run := Run{Args: args}
  
  	if !attributes["json"] {
  		run.Shell = true
  	}
  	b.PendingRuns = append(b.PendingRuns, run)
  	return nil
  }
docs: // RUN some command yo
  //
  // run a command and commit the image. Args are automatically prepended with
  // 'sh -c' under linux or 'cmd /S /C' under Windows, in the event there is
  // only one argument. The difference in processing:
  //
  // RUN echo hi          # sh -c echo hi       (Linux)
  // RUN echo hi          # cmd /S /C echo hi   (Windows)
  // RUN [ "echo", "hi" ] # echo hi
  //