summaryrefslogtreecommitdiff
path: root/internal/github/github.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/github/github.go')
-rw-r--r--internal/github/github.go60
1 files changed, 24 insertions, 36 deletions
diff --git a/internal/github/github.go b/internal/github/github.go
index 238b486..c886e43 100644
--- a/internal/github/github.go
+++ b/internal/github/github.go
@@ -19,45 +19,35 @@ type Client struct {
// NewClient creates a new GitHub API client
func NewClient(token, org string) Client {
- // If no token provided, try other sources
- if token == "" {
- fmt.Println(" No token in config, trying environment variable...")
- // Try environment variable
- token = os.Getenv("GITHUB_TOKEN")
-
- // If still no token, try reading from file
- if token == "" {
- fmt.Println(" No GITHUB_TOKEN env var, trying ~/.gitsyncer_github_token file...")
- home, err := os.UserHomeDir()
- if err == nil {
- tokenFile := filepath.Join(home, ".gitsyncer_github_token")
- data, err := os.ReadFile(tokenFile)
- if err == nil {
- token = strings.TrimSpace(string(data))
- fmt.Printf(" Loaded token from file (length: %d)\n", len(token))
- // Check for common issues
- if strings.Contains(token, "\n") || strings.Contains(token, "\r") {
- fmt.Println(" Warning: Token contains newline characters")
- }
- if strings.HasPrefix(token, " ") || strings.HasSuffix(token, " ") {
- fmt.Println(" Warning: Token has leading/trailing spaces")
- }
- } else {
- fmt.Printf(" Could not read token file: %v\n", err)
- }
- }
- } else {
- fmt.Printf(" Loaded token from env var (length: %d)\n", len(token))
- }
- } else {
- fmt.Printf(" Using token from config (length: %d)\n", len(token))
- }
return Client{
- token: token,
+ token: loadToken(token),
org: org,
}
}
+func loadToken(token string) string {
+ if token != "" {
+ return strings.TrimSpace(token)
+ }
+
+ if envToken := os.Getenv("GITHUB_TOKEN"); envToken != "" {
+ return strings.TrimSpace(envToken)
+ }
+
+ home, err := os.UserHomeDir()
+ if err != nil {
+ return ""
+ }
+
+ tokenFile := filepath.Join(home, ".gitsyncer_github_token")
+ data, err := os.ReadFile(tokenFile)
+ if err != nil {
+ return ""
+ }
+
+ return strings.TrimSpace(string(data))
+}
+
// CreateRepoRequest represents the request to create a repository
type CreateRepoRequest struct {
Name string `json:"name"`
@@ -94,7 +84,6 @@ func (c *Client) RepoExists(repoName string) (bool, error) {
url := fmt.Sprintf("https://api.github.com/repos/%s/%s", c.org, repoName)
fmt.Printf(" Checking URL: %s\n", url)
- fmt.Printf(" Token present: %v (length: %d)\n", c.token != "", len(c.token))
req, err := http.NewRequest("GET", url, nil)
if err != nil {
@@ -118,7 +107,6 @@ func (c *Client) RepoExists(repoName string) (bool, error) {
// Read the response body for 401 errors
body, _ := io.ReadAll(resp.Body)
fmt.Printf(" 401 Unauthorized - Response: %s\n", string(body))
- fmt.Printf(" Authorization header: %s\n", req.Header.Get("Authorization"))
return false, fmt.Errorf("authentication failed (401): %s", string(body))
}