aboutsummaryrefslogtreecommitdiffstats
path: root/commands/user_adopt.go
diff options
context:
space:
mode:
authorMichael Muré <batolettre@gmail.com>2019-02-24 14:45:24 +0100
committerMichael Muré <batolettre@gmail.com>2019-03-01 22:48:51 +0100
commit304a3349300bba909b1f69e54c0d2d8a338994d1 (patch)
tree4b48eb550a9a71389bfaefc5b11c5ba5c5b6398a /commands/user_adopt.go
parent7a80d8f849861a6033cd0765e5d85a52b08a8854 (diff)
downloadgit-bug-304a3349300bba909b1f69e54c0d2d8a338994d1.tar.gz
commands: add a "user adopt" command to use an existing identity
Diffstat (limited to 'commands/user_adopt.go')
-rw-r--r--commands/user_adopt.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/commands/user_adopt.go b/commands/user_adopt.go
new file mode 100644
index 00000000..5313e366
--- /dev/null
+++ b/commands/user_adopt.go
@@ -0,0 +1,48 @@
+package commands
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/MichaelMure/git-bug/cache"
+ "github.com/MichaelMure/git-bug/util/interrupt"
+ "github.com/spf13/cobra"
+)
+
+func runUserAdopt(cmd *cobra.Command, args []string) error {
+ backend, err := cache.NewRepoCache(repo)
+ if err != nil {
+ return err
+ }
+ defer backend.Close()
+ interrupt.RegisterCleaner(backend.Close)
+
+ prefix := args[0]
+
+ i, err := backend.ResolveIdentityPrefix(prefix)
+ if err != nil {
+ return err
+ }
+
+ err = backend.SetUserIdentity(i)
+ if err != nil {
+ return err
+ }
+
+ _, _ = fmt.Fprintf(os.Stderr, "Your identity is now: %s\n", i.DisplayName())
+
+ return nil
+}
+
+var userAdoptCmd = &cobra.Command{
+ Use: "adopt <id>",
+ Short: "Adopt an existing identity as your own.",
+ PreRunE: loadRepo,
+ RunE: runUserAdopt,
+ Args: cobra.ExactArgs(1),
+}
+
+func init() {
+ userCmd.AddCommand(userAdoptCmd)
+ userAdoptCmd.Flags().SortFlags = false
+}