src/main.go

changeset 9
eef1439666f7
parent 8
2e9b3f85c949
equal deleted inserted replaced
8:2e9b3f85c949 9:eef1439666f7
104 templateStr, err := os.ReadFile("build.template") 104 templateStr, err := os.ReadFile("build.template")
105 if err != nil { 105 if err != nil {
106 log.Fatal(err) 106 log.Fatal(err)
107 } 107 }
108 108
109 templateStr2, err := os.ReadFile("build.ps1.template")
110 if err != nil {
111 log.Fatal(err)
112 }
113
109 funcs := template.FuncMap{ 114 funcs := template.FuncMap{
110 "add": func(i int, n int) int { 115 "add": func(i int, n int) int {
111 return i + n 116 return i + n
112 }, 117 },
113 "sub": func(i int, n int) int { 118 "sub": func(i int, n int) int {
118 tpl, err := template.New("").Funcs(funcs).Parse(string(templateStr)) 123 tpl, err := template.New("").Funcs(funcs).Parse(string(templateStr))
119 if err != nil { 124 if err != nil {
120 log.Fatal(err) 125 log.Fatal(err)
121 } 126 }
122 127
128 tpl2, err := template.New("").Funcs(funcs).Parse(string(templateStr2))
129 if err != nil {
130 log.Fatal(err)
131 }
132
123 err = os.Mkdir("tmp", 0755) 133 err = os.Mkdir("tmp", 0755)
124 if err != nil && !os.IsExist(err) { 134 if err != nil && !os.IsExist(err) {
125 log.Fatal(err) 135 log.Fatal(err)
126 } 136 }
127 137
139 if err == nil { 149 if err == nil {
140 log.Printf("repository %s commit %s already built", repo.Path, commit.NodeShort) 150 log.Printf("repository %s commit %s already built", repo.Path, commit.NodeShort)
141 continue 151 continue
142 } 152 }
143 153
144 if err := create_repo_archive(&repo, tpl, tmp); err != nil { 154 if err := create_repo_archive(&repo, tpl, tpl2, tmp); err != nil {
145 log.Fatal(err) 155 log.Fatal(err)
146 } 156 }
147 157
148 results := exec_buildenvs(config, &repo, tmp) 158 results := exec_buildenvs(config, &repo, tmp)
149 159
152 log.Print("cannot save results for commit ", commit.NodeShort) 162 log.Print("cannot save results for commit ", commit.NodeShort)
153 } 163 }
154 } 164 }
155 } 165 }
156 166
157 func create_repo_archive(repo *Repository, tpl *template.Template, tmp_dir string) error { 167 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error {
158 // create a build directory, that contains the repository source 168 // create a build directory, that contains the repository source
159 // and build scripts 169 // and build scripts
160 buildPath := path.Join(tmp_dir, "build") 170 buildPath := path.Join(tmp_dir, "build")
161 171
162 if err := os.RemoveAll(buildPath); err != nil { 172 if err := os.RemoveAll(buildPath); err != nil {
227 log.Print("cannot execute build.sh template") 237 log.Print("cannot execute build.sh template")
228 return err 238 return err
229 } 239 }
230 file.Chmod(0755) 240 file.Chmod(0755)
231 241
242 file2, err := os.Create(path.Join(buildPath, "build.ps1"))
243 if err != nil {
244 log.Print("cannot create build.ps1")
245 return err
246 }
247 defer file2.Close()
248 err = tpl2.Execute(file2, repo)
249 if err != nil {
250 log.Print("cannot execute build.ps1 template")
251 return err
252 }
253
232 // create tarball 254 // create tarball
233 cmd = exec.Command("tar", "cvf", "../build.tar", "src", "build.sh") 255 cmd = exec.Command("tar", "cvf", "../build.tar", "src", "build.sh", "build.ps1")
234 cmd.Dir = buildPath 256 cmd.Dir = buildPath
235 if err := cmd.Run(); err != nil { 257 if err := cmd.Run(); err != nil {
236 log.Print("tar error") 258 log.Print("tar error")
237 return err 259 return err
238 } 260 }

mercurial