Wed, 17 Dec 2025 20:26:40 +0100
save build result
| .hgignore | file | annotate | diff | comparison | revisions | |
| src/main.go | file | annotate | diff | comparison | revisions | |
| testconfig.xml | file | annotate | diff | comparison | revisions |
--- a/.hgignore Tue Dec 16 21:16:32 2025 +0100 +++ b/.hgignore Wed Dec 17 20:26:40 2025 +0100 @@ -1,3 +1,4 @@ ^.idea/ ^tmp/ ^out/ +^testrepo/
--- a/src/main.go Tue Dec 16 21:16:32 2025 +0100 +++ b/src/main.go Wed Dec 17 20:26:40 2025 +0100 @@ -124,15 +124,31 @@ } tmp := "tmp" + out := "out" for _, repo := range config.Repository { - if err = create_repo_archive(&repo, tpl, tmp); err != nil { + commit := get_commit_info(repo.Path) + if commit == nil { + log.Print("cannot get current commit info for repo ", repo.Path) + continue + } + result_dir := path.Join(out, commit.Node) + _, err := os.Stat(result_dir) + if err == nil { + log.Printf("repository %s commit %s already built", repo.Path, commit.NodeShort) + continue + } + + if err := create_repo_archive(&repo, tpl, tmp); err != nil { log.Fatal(err) } results := exec_buildenvs(config, &repo, tmp) - err = save_result(&repo, results, tmp) + err = save_result(&repo, commit, results, tmp) + if err != nil { + log.Print("cannot save results for commit ", commit.NodeShort) + } } } @@ -332,13 +348,13 @@ return buildResults } -func get_commit_info(tmp_dir string) *Commit { +func get_commit_info(repo_dir string) *Commit { var outb, errb bytes.Buffer commit := &Commit{} cmd := exec.Command("hg", "log", "-r", ".", "-T", "{rev}\\t{node|short}\\t{node}\\t{date|isodate}") - cmd.Dir = path.Join(tmp_dir, "build/src") + cmd.Dir = repo_dir cmd.Stdout = &outb cmd.Stderr = &errb if err := cmd.Run(); err != nil { @@ -363,7 +379,7 @@ errb.Reset() cmd = exec.Command("hg", "log", "-r", ".", "-T", "{author}") - cmd.Dir = path.Join(tmp_dir, "build/src") + cmd.Dir = repo_dir cmd.Stdout = &outb cmd.Stderr = &errb if err := cmd.Run(); err != nil { @@ -374,7 +390,7 @@ commit.Author = outb.String() cmd = exec.Command("hg", "log", "-r", ".", "-T", "{desc}") - cmd.Dir = path.Join(tmp_dir, "build/src") + cmd.Dir = repo_dir cmd.Stdout = &outb cmd.Stderr = &errb if err := cmd.Run(); err != nil { @@ -387,11 +403,15 @@ return commit } -func save_result(repo *Repository, result []BuildEnvResult, tmp_dir string) error { - //out_dir := "out/" +func save_result(repo *Repository, commit *Commit, result []BuildEnvResult, tmp_dir string) error { + out_dir := "out/" + src := path.Join(tmp_dir, "result") + dst := path.Join(out_dir, commit.Node) - // get commit infos - get_commit_info(tmp_dir) + // move result + if err := os.Rename(src, dst); err != nil { + return err + } return nil }