From f77514dc5c04466b9050ab0bc43dad90aa20c2ac Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Tue, 16 Feb 2021 17:02:24 +0100 Subject: [PATCH 1/2] Ask user for confirmation before deleting all users --- cmd/src/users_delete.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/cmd/src/users_delete.go b/cmd/src/users_delete.go index e46a47a2fb..e929814f05 100644 --- a/cmd/src/users_delete.go +++ b/cmd/src/users_delete.go @@ -1,9 +1,13 @@ package main import ( + "bufio" "context" "flag" "fmt" + "os" + "strconv" + "strings" "github.com/sourcegraph/src-cli/internal/api" ) @@ -44,6 +48,37 @@ Examples: client := cfg.apiClient(apiFlags, flagSet.Output()) + if *userIDFlag == "" { + query := `query UsersTotalCountCountUsers { users { totalCount } }` + + var result struct { + Users struct { + TotalCount int + } + } + ok, err := client.NewQuery(query).Do(context.Background(), &result) + if err != nil || !ok { + return err + } + + fmt.Printf("No user ID specified. This would delete %d users.\nType in this number to confirm and hit return: ", result.Users.TotalCount) + reader := bufio.NewReader(os.Stdin) + text, err := reader.ReadString('\n') + if err != nil { + return err + } + + count, err := strconv.Atoi(strings.TrimSpace(text)) + if err != nil { + return err + } + + if count != result.Users.TotalCount { + fmt.Println("Number does not match. Aborting.") + return nil + } + } + query := `mutation DeleteUser( $user: ID! ) { From 66dacad385b508eb0181e16f4fb6dc221a57ca21 Mon Sep 17 00:00:00 2001 From: Thorsten Ball Date: Tue, 16 Feb 2021 17:57:40 +0100 Subject: [PATCH 2/2] Add changelog entry --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94a1a7cd07..f46b7955c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,8 @@ All notable changes to `src-cli` are documented in this file. ### Added +- `src users delete` now asks for confirmation to delete all users when no user ID is provided. [#470](https://github.com/sourcegraph/src-cli/pull/470) + ### Changed ### Fixed