Dodo APP: infrastructure to deploy app by pusing to Git repo
Change-Id: I4034c6893255581b014ddb207c844261cb34202b
diff --git a/core/installer/soft/client.go b/core/installer/soft/client.go
index 269f3d3..08103be 100644
--- a/core/installer/soft/client.go
+++ b/core/installer/soft/client.go
@@ -19,6 +19,8 @@
"github.com/go-git/go-git/v5/storage/memory"
)
+var ErrorAlreadyExists = errors.New("already exists")
+
type Client interface {
Address() string
Signer() ssh.Signer
@@ -32,6 +34,7 @@
MakeUserAdmin(name string) error
AddReadWriteCollaborator(repo, user string) error
AddReadOnlyCollaborator(repo, user string) error
+ AddWebhook(repo, url string, opts ...string) error
}
type realClient struct {
@@ -131,6 +134,9 @@
func (ss *realClient) AddRepository(name string) error {
log.Printf("Adding repository %s", name)
+ if err := ss.RunCommand("repo", "info", name); err == nil {
+ return ErrorAlreadyExists
+ }
return ss.RunCommand("repo", "create", name)
}
@@ -144,6 +150,14 @@
return ss.RunCommand("repo", "collab", "add", repo, user, "read-only")
}
+func (ss *realClient) AddWebhook(repo, url string, opts ...string) error {
+ log.Printf("Adding webhook %s %s", repo, url)
+ return ss.RunCommand(append(
+ []string{"repo", "webhook", "create", repo, url},
+ opts...,
+ )...)
+}
+
type Repository struct {
*git.Repository
Addr RepositoryAddress