/
codecommit.go
43 lines (37 loc) · 1.03 KB
/
codecommit.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package lib
import (
"context"
"sync"
"github.com/aws/aws-sdk-go/service/codecommit"
)
var codeCommitClient *codecommit.CodeCommit
var codeCommitClientLock sync.RWMutex
func CodeCommitClientExplicit(accessKeyID, accessKeySecret, region string) *codecommit.CodeCommit {
return codecommit.New(SessionExplicit(accessKeyID, accessKeySecret, region))
}
func CodeCommitClient() *codecommit.CodeCommit {
codeCommitClientLock.Lock()
defer codeCommitClientLock.Unlock()
if codeCommitClient == nil {
codeCommitClient = codecommit.New(Session())
}
return codeCommitClient
}
func CodeCommitListRepos(ctx context.Context) ([]*codecommit.RepositoryNameIdPair, error) {
var token *string
var repos []*codecommit.RepositoryNameIdPair
for {
out, err := CodeCommitClient().ListRepositoriesWithContext(ctx, &codecommit.ListRepositoriesInput{
NextToken: token,
})
if err != nil {
Logger.Println("error:", err)
return nil, err
}
repos = append(repos, out.Repositories...)
if out.NextToken == nil {
break
}
}
return repos, nil
}