99 "bytes"
1010 "errors"
1111 "fmt"
12- gitlab "github.com/plouc/go-gitlab-client"
1312 "io"
1413 "net/http"
1514 "net/http/httptest"
@@ -18,6 +17,14 @@ import (
1817 "strconv"
1918 "strings"
2019 "testing"
20+ "time"
21+
22+ "github.com/aws/aws-sdk-go/aws"
23+ "github.com/aws/aws-sdk-go/aws/credentials"
24+ "github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
25+ "github.com/aws/aws-sdk-go/aws/ec2metadata"
26+ "github.com/aws/aws-sdk-go/aws/session"
27+ gitlab "github.com/plouc/go-gitlab-client"
2128)
2229
2330type Paths []string
@@ -34,6 +41,32 @@ func (p *Paths) Set(value string) error {
3441
3542var SemVersion = regexp .MustCompile ("(v|)[0-9]{1,}\\ .[0-9]{1,}\\ .[0-9]{1,}(-[A-Za-z]*|)" )
3643
44+ func GetAwsCredentials (profile string ) (* credentials.Credentials , error ) {
45+ sess := session .Must (session .NewSession ())
46+
47+ chainProvider := credentials .NewChainCredentials ([]credentials.Provider {
48+ & credentials.EnvProvider {},
49+ & credentials.SharedCredentialsProvider {
50+ Filename : os .Getenv ("HOME" ) + "/.aws/credentials" ,
51+ Profile : profile ,
52+ },
53+ & ec2rolecreds.EC2RoleProvider {
54+ Client : ec2metadata .New (sess , & aws.Config {
55+ HTTPClient : & http.Client {Timeout : 10 * time .Second },
56+ }),
57+ ExpiryWindow : 0 ,
58+ },
59+ })
60+
61+ _ , err := chainProvider .Get ()
62+
63+ if err != nil {
64+ return nil , err
65+ }
66+
67+ return chainProvider , nil
68+ }
69+
3770func GetProject (p string , client * gitlab.Gitlab ) (* gitlab.Project , error ) {
3871 pId , err := strconv .ParseInt (p , 10 , 32 )
3972
@@ -42,7 +75,7 @@ func GetProject(p string, client *gitlab.Gitlab) (*gitlab.Project, error) {
4275 paths := strings .Split (p , "/" )
4376
4477 if len (paths ) != 2 {
45- return nil , errors . New ("Error: Invalid project format, must be namespace/project-name" )
78+ return nil , fmt . Errorf ("Error: Invalid project format, must be namespace/project-name, project=%s, err=%s" , p , err )
4679 }
4780
4881 projects , _ := client .Projects ()
0 commit comments