code: func (opts *placementPrefOpts) Set(value string) error {
  	fields := strings.Split(value, "=")
  	if len(fields) != 2 {
  		return errors.New(`placement preference must be of the format "<strategy>=<arg>"`)
  	}
  	if fields[0] != "spread" {
  		return errors.Errorf("unsupported placement preference %s (only spread is supported)", fields[0])
  	}
  
  	opts.prefs = append(opts.prefs, swarm.PlacementPreference{
  		Spread: &swarm.SpreadOver{
  			SpreadDescriptor: fields[1],
  		},
  	})
  	opts.strings = append(opts.strings, value)
  	return nil
  }
docs: // Set validates the input value and adds it to the internal slices.
  // Note: in the future strategies other than "spread", may be supported,
  // as well as additional comma-separated options.