@@ -11,13 +11,8 @@ import (
11
11
12
12
// NewGitHubClient returns a new github.Client configured with an access token
13
13
// and a http client, if available.
14
- func NewGitHubClient (ctx context.Context , httpClient * http.Client ) * github.Client {
15
- for _ , key := range []string {
16
- "CHEZMOI_GITHUB_ACCESS_TOKEN" ,
17
- "CHEZMOI_GITHUB_TOKEN" ,
18
- "GITHUB_ACCESS_TOKEN" ,
19
- "GITHUB_TOKEN" ,
20
- } {
14
+ func NewGitHubClient (ctx context.Context , httpClient * http.Client , host string ) * github.Client {
15
+ for _ , key := range accessTokenEnvKeys (host ) {
21
16
if accessToken := os .Getenv (key ); accessToken != "" {
22
17
httpClient = oauth2 .NewClient (
23
18
context .WithValue (ctx , oauth2 .HTTPClient , httpClient ),
@@ -29,3 +24,33 @@ func NewGitHubClient(ctx context.Context, httpClient *http.Client) *github.Clien
29
24
}
30
25
return github .NewClient (httpClient )
31
26
}
27
+
28
+ func accessTokenEnvKeys (host string ) []string {
29
+ if host == "github.com" {
30
+ return []string {
31
+ "CHEZMOI_GITHUB_ACCESS_TOKEN" ,
32
+ "CHEZMOI_GITHUB_TOKEN" ,
33
+ "GITHUB_ACCESS_TOKEN" ,
34
+ "GITHUB_TOKEN" ,
35
+ }
36
+ }
37
+ hostKey := makeHostKey (host )
38
+ return []string {
39
+ "CHEZMOI_" + hostKey + "_ACCESS_TOKEN" ,
40
+ }
41
+ }
42
+
43
+ func makeHostKey (host string ) string {
44
+ hostKey := make ([]byte , 0 , len (host ))
45
+ for _ , b := range []byte (host ) {
46
+ switch {
47
+ case 'A' <= b && b <= 'Z' :
48
+ hostKey = append (hostKey , b )
49
+ case 'a' <= b && b <= 'z' :
50
+ hostKey = append (hostKey , b - 'a' + 'A' )
51
+ default :
52
+ hostKey = append (hostKey , '_' )
53
+ }
54
+ }
55
+ return string (hostKey )
56
+ }
0 commit comments