code: func (s SecretGeneratorV1) StructuredGenerate() (runtime.Object, error) {
  	if err := s.validate(); err != nil {
  		return nil, err
  	}
  	secret := &v1.Secret{}
  	secret.SetGroupVersionKind(v1.SchemeGroupVersion.WithKind("Secret"))
  	secret.Name = s.Name
  	secret.Data = map[string][]byte{}
  	if len(s.Type) > 0 {
  		secret.Type = v1.SecretType(s.Type)
  	}
  	if len(s.FileSources) > 0 {
  		if err := handleFromFileSources(secret, s.FileSources); err != nil {
  			return nil, err
  		}
  	}
  	if len(s.LiteralSources) > 0 {
  		if err := handleFromLiteralSources(secret, s.LiteralSources); err != nil {
  			return nil, err
  		}
  	}
  	if len(s.EnvFileSource) > 0 {
  		if err := handleFromEnvFileSource(secret, s.EnvFileSource); err != nil {
  			return nil, err
  		}
  	}
  	if s.AppendHash {
  		h, err := hash.SecretHash(secret)
  		if err != nil {
  			return nil, err
  		}
  		secret.Name = fmt.Sprintf("%s-%s", secret.Name, h)
  	}
  	return secret, nil
  }
docs: // StructuredGenerate outputs a secret object using the configured fields