src/main.go

changeset 11
52487a30448e
parent 10
a4537989ed09
equal deleted inserted replaced
10:a4537989ed09 11:52487a30448e
86 data, err := os.ReadFile("testconfig.xml") 86 data, err := os.ReadFile("testconfig.xml")
87 if err != nil { 87 if err != nil {
88 log.Fatal(err) 88 log.Fatal(err)
89 } 89 }
90 90
91 db, err := sql.Open("sqlite", "uwbuild.db") 91 db := db_init()
92 if err != nil {
93 log.Fatal(err)
94 }
95 defer db.Close() 92 defer db.Close()
96
97 err = prepare_db(db)
98 if err != nil {
99 log.Fatal(err)
100 }
101 93
102 config := &Config{} 94 config := &Config{}
103 if err := xml.Unmarshal(data, &config); err != nil { 95 if err := xml.Unmarshal(data, &config); err != nil {
104 log.Fatal(err) 96 log.Fatal(err)
105 } 97 }
106 config.BuildEnvMap = make(map[string]BuildEnv) 98 config.BuildEnvMap = make(map[string]BuildEnv)
107 for _, env := range config.BuildEnv { 99 for _, env := range config.BuildEnv {
108 config.BuildEnvMap[env.Name] = env 100 config.BuildEnvMap[env.Name] = env
109 } 101 }
102
103 db_load_config(db, config)
110 104
111 for ri := range config.Repository { 105 for ri := range config.Repository {
112 for bi := range config.Repository[ri].Build { 106 for bi := range config.Repository[ri].Build {
113 build := &config.Repository[ri].Build[bi] 107 build := &config.Repository[ri].Build[bi]
114 build.NotList = strings.Split(build.NotPlatform, ",") 108 build.NotList = strings.Split(build.NotPlatform, ",")
169 log.Fatal(err) 163 log.Fatal(err)
170 } 164 }
171 165
172 results := exec_buildenvs(config, &repo, tmp) 166 results := exec_buildenvs(config, &repo, tmp)
173 167
174 err = save_result(&repo, commit, results, tmp) 168 err = save_result(db, &repo, commit, results, tmp)
175 if err != nil { 169 if err != nil {
176 log.Print("cannot save results for commit ", commit.NodeShort) 170 log.Print("cannot save results for commit ", commit.NodeShort)
177 } 171 }
178 } 172 }
179 }
180
181 func prepare_db(db *sql.DB) error {
182 _, err := db.Exec(`
183 create table Repository (
184 id integer primary key autoincrement,
185 path text not null,
186 name text not null
187 );
188 create table RepoCommit (
189 id integer primary key autoincrement,
190 repository_id integer not null,
191 node text,
192 node_short text,
193 author text,
194 description text,
195 date text
196 );`)
197 return err
198 } 173 }
199 174
200 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error { 175 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error {
201 // create a build directory, that contains the repository source 176 // create a build directory, that contains the repository source
202 // and build scripts 177 // and build scripts
476 commit.Desc = outb.String() 451 commit.Desc = outb.String()
477 452
478 return commit 453 return commit
479 } 454 }
480 455
481 func save_result(repo *Repository, commit *Commit, result []BuildEnvResult, tmp_dir string) error { 456 func save_result(db *sql.DB, repo *Repository, commit *Commit, result []BuildEnvResult, tmp_dir string) error {
482 out_dir := "out/" 457 out_dir := "out/"
483 src := path.Join(tmp_dir, "result") 458 src := path.Join(tmp_dir, "result")
484 dst := path.Join(out_dir, commit.Node) 459 dst := path.Join(out_dir, commit.Node)
485 460
486 // move result 461 // move result
487 if err := os.Rename(src, dst); err != nil { 462 if err := os.Rename(src, dst); err != nil {
488 return err 463 return err
489 } 464 }
490 465
466 // store results in database
467 if err := db_store_results(db, repo, commit, result); err != nil {
468 return err
469 }
470
491 return nil 471 return nil
492 } 472 }

mercurial