src/main.go

changeset 10
a4537989ed09
parent 9
eef1439666f7
equal deleted inserted replaced
9:eef1439666f7 10:a4537989ed09
1 package main 1 package main
2 2
3 import ( 3 import (
4 "bytes" 4 "bytes"
5 "database/sql"
5 "encoding/json" 6 "encoding/json"
6 "encoding/xml" 7 "encoding/xml"
7 "errors" 8 "errors"
8 "fmt" 9 "fmt"
9 "log" 10 "log"
11 "os/exec" 12 "os/exec"
12 "path" 13 "path"
13 "strconv" 14 "strconv"
14 "strings" 15 "strings"
15 "text/template" 16 "text/template"
17
18 _ "modernc.org/sqlite"
16 ) 19 )
17 20
18 type Config struct { 21 type Config struct {
19 XMLName xml.Name `xml:"config"` 22 XMLName xml.Name `xml:"config"`
20 BuildEnv []BuildEnv `xml:"buildenv"` 23 BuildEnv []BuildEnv `xml:"buildenv"`
83 data, err := os.ReadFile("testconfig.xml") 86 data, err := os.ReadFile("testconfig.xml")
84 if err != nil { 87 if err != nil {
85 log.Fatal(err) 88 log.Fatal(err)
86 } 89 }
87 90
91 db, err := sql.Open("sqlite", "uwbuild.db")
92 if err != nil {
93 log.Fatal(err)
94 }
95 defer db.Close()
96
97 err = prepare_db(db)
98 if err != nil {
99 log.Fatal(err)
100 }
101
88 config := &Config{} 102 config := &Config{}
89 if err := xml.Unmarshal(data, &config); err != nil { 103 if err := xml.Unmarshal(data, &config); err != nil {
90 log.Fatal(err) 104 log.Fatal(err)
91 } 105 }
92 config.BuildEnvMap = make(map[string]BuildEnv) 106 config.BuildEnvMap = make(map[string]BuildEnv)
162 log.Print("cannot save results for commit ", commit.NodeShort) 176 log.Print("cannot save results for commit ", commit.NodeShort)
163 } 177 }
164 } 178 }
165 } 179 }
166 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 }
199
167 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error { 200 func create_repo_archive(repo *Repository, tpl *template.Template, tpl2 *template.Template, tmp_dir string) error {
168 // create a build directory, that contains the repository source 201 // create a build directory, that contains the repository source
169 // and build scripts 202 // and build scripts
170 buildPath := path.Join(tmp_dir, "build") 203 buildPath := path.Join(tmp_dir, "build")
171 204

mercurial