update-go-mod/cmd/update-go-mod/main.go

55 lines
933 B
Go

package main
import (
"context"
"strings"
"github.com/google/go-github/v60/github"
"golang.org/x/oauth2"
"github.com/make-go-great/netrc-go"
"github.com/haunt98/update-go-mod/internal/cli"
)
const (
netrcPath = "~/.netrc"
netrcMachineGitHub = "github.com"
)
func main() {
app := cli.NewApp(
initGitHubClient(),
)
app.Run()
}
func initGitHubClient() *github.Client {
netrcData, err := netrc.ParseFile(netrcPath)
if err != nil {
return nil
}
var ghAccessToken string
for _, machine := range netrcData.Machines {
if machine.Name == netrcMachineGitHub {
ghAccessToken = machine.Password
break
}
}
if ghAccessToken == "" {
return nil
}
ghTokenSrc := oauth2.StaticTokenSource(
&oauth2.Token{
AccessToken: strings.TrimSpace(ghAccessToken),
},
)
ghHTTPClient := oauth2.NewClient(context.Background(), ghTokenSrc)
ghClient := github.NewClient(ghHTTPClient)
return ghClient
}