Don't fail status when indivisual projects fail

Change-Id: Ic3dd266cc724f06b997a6a1aff9c17e6b98c830f
diff --git a/cmd/jiri/status.go b/cmd/jiri/status.go
index 0fc5c2c..71f0308 100644
--- a/cmd/jiri/status.go
+++ b/cmd/jiri/status.go
@@ -89,15 +89,24 @@
 		if statusFlags.branch != "" && (statusFlags.branch != state.CurrentBranch.Name) {
 			continue
 		}
+		relativePath, err := filepath.Rel(cDir, localProject.Path)
+		if err != nil {
+			return err
+		}
+		errorMsg := fmt.Sprintf("getting status for project %s(%s)", localProject.Name, relativePath)
 		changes, headRev, extraCommits, err := getStatus(jirix, localProject, remoteProject, state.CurrentBranch)
 		if err != nil {
-			return fmt.Errorf("Error while getting status for project %q :%s", localProject.Name, err)
+			jirix.Logger.Errorf("%s :%s\n\n", errorMsg, err)
+			jirix.IncrementFailures()
+			continue
 		}
 		revisionMessage := ""
 		git := gitutil.New(jirix, gitutil.RootDirOpt(state.Project.Path))
 		currentLog, err := git.OneLineLog(state.CurrentBranch.Revision)
 		if err != nil {
-			return fmt.Errorf("Error while getting status for project %q :%s", localProject.Name, err)
+			jirix.Logger.Errorf("%s :%s\n\n", errorMsg, err)
+			jirix.IncrementFailures()
+			continue
 		}
 		currentLog = colorFormatGitLog(jirix, currentLog)
 		if statusFlags.checkHead {
@@ -106,7 +115,9 @@
 			} else if headRev != state.CurrentBranch.Revision {
 				headLog, err := git.OneLineLog(headRev)
 				if err != nil {
-					return fmt.Errorf("Error while getting status for project %q :%s", localProject.Name, err)
+					jirix.Logger.Errorf("%s :%s\n\n", errorMsg, err)
+					jirix.IncrementFailures()
+					continue
 				}
 				headLog = colorFormatGitLog(jirix, headLog)
 				revisionMessage = fmt.Sprintf("\n%s: %s", jirix.Color.Yellow("JIRI_HEAD"), headLog)
@@ -115,10 +126,6 @@
 		}
 		if statusFlags.branch != "" || changes != "" || revisionMessage != "" ||
 			len(extraCommits) != 0 {
-			relativePath, err := filepath.Rel(cDir, localProject.Path)
-			if err != nil {
-				return err
-			}
 			fmt.Printf("%s: %s", jirix.Color.Yellow(relativePath), revisionMessage)
 			fmt.Println()
 			branch := state.CurrentBranch.Name
@@ -142,6 +149,9 @@
 		}
 
 	}
+	if jirix.Failures() != 0 {
+		return fmt.Errorf("completed with non-fatal errors")
+	}
 	return nil
 }