save build result

Wed, 17 Dec 2025 20:26:40 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Wed, 17 Dec 2025 20:26:40 +0100
changeset 5
08333803df48
parent 4
e24fc79b7980
child 6
66cb1937078f

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
 }
--- a/testconfig.xml	Tue Dec 16 21:16:32 2025 +0100
+++ b/testconfig.xml	Wed Dec 17 20:26:40 2025 +0100
@@ -5,7 +5,7 @@
 	</buildenv>
 
 	<repository>
-		<path>../ucx</path>
+		<path>testrepo</path>
 		<buildenvs>x1</buildenvs>
 		<build name="test123" isplatform="unix">
 			<test>true</test>

mercurial