code: func stringSlice(sliceLike interface{}) []string {
  	var strSlice []string
  	switch sl := sliceLike.(type) {
  	case string:
  		if len(sl) > 0 {
  			parts, err := shlex.Split(expandEnv(sl))
  			if err != nil {
  				printErrorf("Error when parsing cmd `%v`: %v. Proceeding with %q.", sl, err, parts)
  			}
  			strSlice = append(strSlice, parts...)
  		}
  	case []interface{}:
  		parts := make([]string, len(sl))
  		for i, v := range sl {
  			parts[i] = expandEnv(fmt.Sprintf("%v", v))
  		}
  		strSlice = append(strSlice, parts...)
  	default:
  		panic(StatusError{fmt.Errorf("unknown type: %v", sl), 65})
  	}
  	return strSlice
  }
docs: // Assemble slice of strings from slice or string with spaces