c7829a3e9d40a3111930e4620290482e1b2ec4d1

Author
Ayman Bagabas <ayman.bagabas@gmail.com>
Committer
Ayman Bagabas <ayman.bagabas@gmail.com>
Date

Message

feat: print clone url on repo create

Prints the repo ssh clone url on create

Fixes: https://github.com/charmbracelet/soft-serve/issues/297

Diff

 1diff --git a/server/ssh/cmd/create.go b/server/ssh/cmd/create.go
 2index 7e301b3fd014bd3a8d821d7b34667b609c50edfb..545470ff5d8ccae5e6de5efdaaf77fec7e26e91c 100644
 3--- a/server/ssh/cmd/create.go
 4+++ b/server/ssh/cmd/create.go
 5@@ -1,7 +1,10 @@
 6 package cmd
 7 
 8 import (
 9+	"fmt"
10+
11 	"github.com/charmbracelet/soft-serve/server/backend"
12+	"github.com/charmbracelet/soft-serve/server/config"
13 	"github.com/charmbracelet/soft-serve/server/proto"
14 	"github.com/spf13/cobra"
15 )
16@@ -20,17 +23,24 @@ func createCommand() *cobra.Command {
17 		PersistentPreRunE: checkIfCollab,
18 		RunE: func(cmd *cobra.Command, args []string) error {
19 			ctx := cmd.Context()
20+			cfg := config.FromContext(ctx)
21 			be := backend.FromContext(ctx)
22 			user := proto.UserFromContext(ctx)
23 			name := args[0]
24-			if _, err := be.CreateRepository(ctx, name, user, proto.RepositoryOptions{
25+			r, err := be.CreateRepository(ctx, name, user, proto.RepositoryOptions{
26 				Private:     private,
27 				Description: description,
28 				ProjectName: projectName,
29 				Hidden:      hidden,
30-			}); err != nil {
31+			})
32+			if err != nil {
33 				return err
34 			}
35+
36+			cloneurl := fmt.Sprintf("%s/%s.git", cfg.SSH.PublicURL, r.Name())
37+			cmd.PrintErrf("Created repository %s\n", r.Name())
38+			cmd.Println(cloneurl)
39+
40 			return nil
41 		},
42 	}
43diff --git a/testscript/script_test.go b/testscript/script_test.go
44index 7c345dd71d4b7f9dfddff1443af84c98c4cfd4f5..3c544b037677647b4c4f0d7d1e44556ceb3e5e48 100644
45--- a/testscript/script_test.go
46+++ b/testscript/script_test.go
47@@ -99,8 +99,7 @@ func TestScript(t *testing.T) {
48 			cfg.Stats.ListenAddr = statsListen
49 			cfg.DB.Driver = "sqlite"
50 			cfg.LFS.Enabled = true
51-			// TODO: run tests with both SSH enabled/disabled
52-			cfg.LFS.SSHEnabled = false
53+			cfg.LFS.SSHEnabled = true
54 
55 			if err := cfg.Validate(); err != nil {
56 				return err
57diff --git a/testscript/testdata/repo-create.txtar b/testscript/testdata/repo-create.txtar
58index 6787ee9d0b32828f5613bbf70adfe4b60dcbd66f..794294a16e195b7509babc6bc2e26ed30980f3c5 100644
59--- a/testscript/testdata/repo-create.txtar
60+++ b/testscript/testdata/repo-create.txtar
61@@ -5,6 +5,8 @@
62 
63 # create a repo
64 soft repo create repo1 -d 'description' -H -p -n 'repo11'
65+stderr 'Created repository repo1.*'
66+stdout ssh://localhost:$SSH_PORT/repo1.git
67 soft repo hidden repo1
68 stdout true
69 soft repo private repo1
70@@ -95,6 +97,8 @@ soft user create bar --key "$USER1_AUTHORIZED_KEY"
71 
72 # user create a repo
73 usoft repo create repo2 -d 'description' -H -p -n 'repo2'
74+stderr 'Created repository repo2.*'
75+stdout ssh://localhost:$SSH_PORT/repo2.git
76 usoft repo hidden repo2
77 stdout true
78 usoft repo private repo2