fix: correct pull for multiple repos
This commit is contained in:
		| @@ -11,7 +11,7 @@ | ||||
|     <g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11"> | ||||
|         <text x="33.5" y="15" fill="#010101" fill-opacity=".3">coverage</text> | ||||
|         <text x="33.5" y="14">coverage</text> | ||||
|         <text x="86" y="15" fill="#010101" fill-opacity=".3">18.8%</text> | ||||
|         <text x="86" y="14">18.8%</text> | ||||
|         <text x="86" y="15" fill="#010101" fill-opacity=".3">18.9%</text> | ||||
|         <text x="86" y="14">18.9%</text> | ||||
|     </g> | ||||
| </svg> | ||||
|   | ||||
| Before Width: | Height: | Size: 926 B After Width: | Height: | Size: 926 B | 
| @@ -68,33 +68,40 @@ func (rs *Repos) Pull(ctx context.Context, repos []types.Repo) error { | ||||
| 	} | ||||
|  | ||||
| 	for _, repo := range repos { | ||||
| 		urls := []string{repo.URL} | ||||
| 		urls = append(urls, repo.Mirrors...) | ||||
|  | ||||
| 		var lastErr error | ||||
|  | ||||
| 		for i, repoURL := range urls { | ||||
| 			if i > 0 { | ||||
| 				slog.Info(gotext.Get("Trying mirror"), "repo", repo.Name, "mirror", repoURL) | ||||
| 			} | ||||
|  | ||||
| 			err := rs.pullRepoFromURL(ctx, repoURL, repo) | ||||
| 			if err != nil { | ||||
| 				lastErr = err | ||||
| 				slog.Warn(gotext.Get("Failed to pull from URL"), "repo", repo.Name, "url", repoURL, "error", err) | ||||
| 				continue | ||||
| 			} | ||||
|  | ||||
| 			// Success | ||||
| 			return nil | ||||
| 		err := rs.pullRepo(ctx, repo) | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
|  | ||||
| 		return fmt.Errorf("failed to pull repository %s from any URL: %w", repo.Name, lastErr) | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (rs *Repos) pullRepo(ctx context.Context, repo types.Repo) error { | ||||
| 	urls := []string{repo.URL} | ||||
| 	urls = append(urls, repo.Mirrors...) | ||||
|  | ||||
| 	var lastErr error | ||||
|  | ||||
| 	for i, repoURL := range urls { | ||||
| 		if i > 0 { | ||||
| 			slog.Info(gotext.Get("Trying mirror"), "repo", repo.Name, "mirror", repoURL) | ||||
| 		} | ||||
|  | ||||
| 		err := rs.pullRepoFromURL(ctx, repoURL, repo) | ||||
| 		if err != nil { | ||||
| 			lastErr = err | ||||
| 			slog.Warn(gotext.Get("Failed to pull from URL"), "repo", repo.Name, "url", repoURL, "error", err) | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		// Success | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	return fmt.Errorf("failed to pull repository %s from any URL: %w", repo.Name, lastErr) | ||||
| } | ||||
|  | ||||
| func readGitRepo(repoDir, repoUrl string) (*git.Repository, bool, error) { | ||||
| 	gitDir := filepath.Join(repoDir, ".git") | ||||
| 	if fi, err := os.Stat(gitDir); err == nil && fi.IsDir() { | ||||
|   | ||||
| @@ -383,27 +383,27 @@ msgstr "" | ||||
| msgid "ERROR" | ||||
| msgstr "" | ||||
|  | ||||
| #: internal/repos/pull.go:78 | ||||
| #: internal/repos/pull.go:88 | ||||
| msgid "Trying mirror" | ||||
| msgstr "" | ||||
|  | ||||
| #: internal/repos/pull.go:84 | ||||
| #: internal/repos/pull.go:94 | ||||
| msgid "Failed to pull from URL" | ||||
| msgstr "" | ||||
|  | ||||
| #: internal/repos/pull.go:151 | ||||
| #: internal/repos/pull.go:158 | ||||
| msgid "Pulling repository" | ||||
| msgstr "" | ||||
|  | ||||
| #: internal/repos/pull.go:188 | ||||
| #: internal/repos/pull.go:195 | ||||
| msgid "Repository up to date" | ||||
| msgstr "" | ||||
|  | ||||
| #: internal/repos/pull.go:223 | ||||
| #: internal/repos/pull.go:230 | ||||
| msgid "Git repository does not appear to be a valid ALR repo" | ||||
| msgstr "" | ||||
|  | ||||
| #: internal/repos/pull.go:239 | ||||
| #: internal/repos/pull.go:246 | ||||
| msgid "" | ||||
| "ALR repo's minimum ALR version is greater than the current version. Try " | ||||
| "updating ALR if something doesn't work." | ||||
|   | ||||
| @@ -12,8 +12,8 @@ msgstr "" | ||||
| "MIME-Version: 1.0\n" | ||||
| "Content-Type: text/plain; charset=UTF-8\n" | ||||
| "Content-Transfer-Encoding: 8bit\n" | ||||
| "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " | ||||
| "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | ||||
| "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" | ||||
| "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | ||||
| "X-Generator: Gtranslator 48.0\n" | ||||
|  | ||||
| #: build.go:42 | ||||
| @@ -356,8 +356,8 @@ msgid "" | ||||
| "This command is deprecated and would be removed in the future, use \"%s\" " | ||||
| "instead!" | ||||
| msgstr "" | ||||
| "Эта команда устарела и будет удалена в будущем, используйте вместо нее " | ||||
| "\"%s\"!" | ||||
| "Эта команда устарела и будет удалена в будущем, используйте вместо нее \"%s" | ||||
| "\"!" | ||||
|  | ||||
| #: internal/db/db.go:76 | ||||
| msgid "Database version mismatch; resetting" | ||||
| @@ -397,27 +397,27 @@ msgstr "%s %s загружается — %s/с\n" | ||||
| msgid "ERROR" | ||||
| msgstr "ОШИБКА" | ||||
|  | ||||
| #: internal/repos/pull.go:78 | ||||
| #: internal/repos/pull.go:88 | ||||
| msgid "Trying mirror" | ||||
| msgstr "Пробую зеркало" | ||||
|  | ||||
| #: internal/repos/pull.go:84 | ||||
| #: internal/repos/pull.go:94 | ||||
| msgid "Failed to pull from URL" | ||||
| msgstr "Не удалось извлечь из URL" | ||||
|  | ||||
| #: internal/repos/pull.go:151 | ||||
| #: internal/repos/pull.go:158 | ||||
| msgid "Pulling repository" | ||||
| msgstr "Скачивание репозитория" | ||||
|  | ||||
| #: internal/repos/pull.go:188 | ||||
| #: internal/repos/pull.go:195 | ||||
| msgid "Repository up to date" | ||||
| msgstr "Репозиторий уже обновлён" | ||||
|  | ||||
| #: internal/repos/pull.go:223 | ||||
| #: internal/repos/pull.go:230 | ||||
| msgid "Git repository does not appear to be a valid ALR repo" | ||||
| msgstr "Репозиторий Git не поддерживается репозиторием ALR" | ||||
|  | ||||
| #: internal/repos/pull.go:239 | ||||
| #: internal/repos/pull.go:246 | ||||
| msgid "" | ||||
| "ALR repo's minimum ALR version is greater than the current version. Try " | ||||
| "updating ALR if something doesn't work." | ||||
|   | ||||
		Reference in New Issue
	
	Block a user