diff --git a/main.go b/main.go index 77466cd..e461645 100644 --- a/main.go +++ b/main.go @@ -39,18 +39,17 @@ func Commit( Commitmu.Lock() defer Commitmu.Unlock() + if _, err := tree.Add(padfile); err != nil { + return plumbing.ZeroHash, fmt.Errorf("Failed to stage %s: %w", padfile, err) + } + status, err := tree.Status() if err != nil { return plumbing.ZeroHash, fmt.Errorf("Failed to get status of %s", padfile) } - if _, err := tree.Add(padfile); err != nil { - return plumbing.ZeroHash, fmt.Errorf("Failed to stage %s: %w", padfile, err) - } - fileStatus := status.File(padfile) - if fileStatus.Staging == git.Unmodified || - fileStatus.Staging == git.Untracked { + if fileStatus.Staging != git.Added && fileStatus.Staging != git.Modified { return plumbing.ZeroHash, NothingToDo } @@ -102,26 +101,30 @@ func Download( } -func PushChanges( +func CreateRemote( repo *git.Repository, remote string, - auth githttp.AuthMethod, -) error { - if _, err := repo.Remote(DefaultRemoteName); err != nil { +) (*git.Remote, error) { + newRemote, err := repo.Remote(DefaultRemoteName) + if err != nil { log.Println("Creating new git remote " + DefaultRemoteName) - if _, err = repo.CreateRemote(&config.RemoteConfig{ + return repo.CreateRemote(&config.RemoteConfig{ Name: DefaultRemoteName, URLs: []string{remote}, - }); err != nil { - log.Fatalf("%s", err) - } + }) } + return newRemote, nil +} + +func Push( + auth *githttp.BasicAuth, + repo *git.Repository, +) error { return repo.Push(&git.PushOptions{ RemoteName: DefaultRemoteName, Auth: auth, }) - } func main() { @@ -202,18 +205,22 @@ func main() { tree.Clean(&git.CleanOptions{Dir: true}) + auth := &githttp.BasicAuth{ + Username: *username, + Password: *password, + } + + CreateRemote(repo, *remote) + if *push == true { - auth := &githttp.BasicAuth{ - Username: *username, - Password: *password, - } - if err := PushChanges(repo, *remote, auth); err != nil { + if err := Push(auth, repo); err != nil { if err == git.NoErrAlreadyUpToDate { log.Println("Already up-to-date") } else { log.Fatalf("%s", err) } + } else { + log.Println("Pushed changes to remote") } - log.Println("Pushed changes to remote") } }