nolint:revive
(log slog.Logger, raw []string)
| 2537 | |
| 2538 | // nolint:revive |
| 2539 | func ReadExperiments(log slog.Logger, raw []string) codersdk.Experiments { |
| 2540 | exps := make([]codersdk.Experiment, 0, len(raw)) |
| 2541 | for _, v := range raw { |
| 2542 | switch v { |
| 2543 | case "*": |
| 2544 | exps = append(exps, codersdk.ExperimentsSafe...) |
| 2545 | default: |
| 2546 | ex := codersdk.Experiment(strings.ToLower(v)) |
| 2547 | if !slice.Contains(codersdk.ExperimentsKnown, ex) { |
| 2548 | log.Warn(context.Background(), "ignoring unknown experiment", slog.F("experiment", ex)) |
| 2549 | } else if !slice.Contains(codersdk.ExperimentsSafe, ex) { |
| 2550 | log.Warn(context.Background(), "🐉 HERE BE DRAGONS: opting into hidden experiment", slog.F("experiment", ex)) |
| 2551 | } |
| 2552 | exps = append(exps, ex) |
| 2553 | } |
| 2554 | } |
| 2555 | return exps |
| 2556 | } |
| 2557 | |
| 2558 | var multipleSlashesRe = regexp.MustCompile(`/+`) |
| 2559 |