devtools/cmd/experiment: remove

Experiments are now managed via a YAML config file.

Change-Id: I8c70e14bcbdcf3372994b80b1fa420fcbc5232f0
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/259839
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/devtools/cmd/experiment/experiment.go b/devtools/cmd/experiment/experiment.go
deleted file mode 100644
index 58f85ec..0000000
--- a/devtools/cmd/experiment/experiment.go
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2020 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// Command experiment is used for modifying data in the experiments table.
-package main
-
-import (
-	"context"
-	"flag"
-	"fmt"
-	"log"
-	"os"
-
-	"golang.org/x/pkgsite/internal"
-	"golang.org/x/pkgsite/internal/config"
-	"golang.org/x/pkgsite/internal/database"
-	"golang.org/x/pkgsite/internal/postgres"
-)
-
-const usage = `
-List experiments:
-    experiments [flags...] ls
-
-Create a new experiment:
-    experiments [flags...] create <name>
-
-Update an experiment:
-    experiments [flags...] update <name>
-
-Remove an experiment:
-    experiments [flags...] rm <name>
-`
-
-var rollout = flag.Uint("rollout", 100, "experiment rollout percentage")
-
-func exitUsage() {
-	flag.Usage()
-	os.Exit(2)
-}
-func main() {
-	flag.Usage = func() {
-		fmt.Fprint(flag.CommandLine.Output(), usage)
-		fmt.Fprintln(flag.CommandLine.Output())
-		fmt.Fprintln(flag.CommandLine.Output(), "Flags:")
-		flag.PrintDefaults()
-	}
-	flag.Parse()
-	if flag.NArg() < 1 {
-		exitUsage()
-	}
-	ctx := context.Background()
-	cfg, err := config.Init(ctx)
-	if err != nil {
-		log.Fatal(ctx, err)
-	}
-	cfg.Dump(os.Stderr)
-	ddb, err := database.Open("postgres", cfg.DBConnInfo(), cfg.InstanceID)
-	if err != nil {
-		log.Fatal(ctx, err)
-	}
-	defer ddb.Close()
-	db := postgres.New(ddb)
-	switch flag.Arg(0) {
-	case "ls", "list":
-		if err := listExperiments(ctx, db); err != nil {
-			log.Fatalf("listing experiments: %v", err)
-		}
-	case "create":
-		if flag.NArg() < 2 {
-			fmt.Println(flag.NArg())
-			exitUsage()
-		}
-		if err := createExperiment(ctx, db, flag.Arg(1), *rollout); err != nil {
-			log.Fatalf("creating experiment: %v", err)
-		}
-	case "update":
-		if flag.NArg() < 2 {
-			exitUsage()
-		}
-		if err := updateExperiment(ctx, db, flag.Arg(1), *rollout); err != nil {
-			log.Fatalf("updating experiment: %v", err)
-		}
-	case "rm", "remove":
-		if flag.NArg() < 1 {
-			exitUsage()
-		}
-		if err := removeExperiment(ctx, db, flag.Arg(1)); err != nil {
-			log.Fatalf("removing experiment: %v", err)
-		}
-	default:
-		exitUsage()
-	}
-}
-func listExperiments(ctx context.Context, db *postgres.DB) error {
-	exps, err := db.GetExperiments(ctx)
-	if err != nil {
-		return err
-	}
-	fmt.Printf("%30s %12s %-40s\n", "NAME", "ROLLOUT", "DESCRIPTION")
-	for _, exp := range exps {
-		fmt.Printf("%30s %12d %-40s\n", exp.Name, exp.Rollout, exp.Description)
-	}
-	return nil
-}
-
-func createExperiment(ctx context.Context, db *postgres.DB, name string, rollout uint) error {
-	exp := &internal.Experiment{
-		Name:        name,
-		Description: description(name),
-		Rollout:     rollout,
-	}
-	if err := db.InsertExperiment(ctx, exp); err != nil {
-		return err
-	}
-	fmt.Printf("\nCreated experiment %q with rollout=%d.\n", name, rollout)
-	return nil
-}
-
-func updateExperiment(ctx context.Context, db *postgres.DB, name string, rollout uint) error {
-	exp := &internal.Experiment{
-		Name:        name,
-		Description: description(name),
-		Rollout:     rollout,
-	}
-	if err := db.UpdateExperiment(ctx, exp); err != nil {
-		return err
-	}
-	fmt.Printf("\nUpdated experiment %q; rollout=%d.\n", name, rollout)
-	return nil
-}
-
-func removeExperiment(ctx context.Context, db *postgres.DB, name string) error {
-	if err := db.RemoveExperiment(ctx, name); err != nil {
-		return err
-	}
-	fmt.Printf("\nRemoved experiment %q.\n", name)
-	return nil
-}
-
-func description(name string) string {
-	d, ok := internal.Experiments[name]
-	if !ok {
-		log.Fatalf("Experiment %q does not exist.", name)
-	}
-	return d
-}