From 5a7763c649e42df6c34bd11c4ee5ff2b03bfbf99 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 11 Aug 2016 18:43:56 +0900 Subject: add upgrade.go --- tool/upgrade.go | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 tool/upgrade.go (limited to 'tool') diff --git a/tool/upgrade.go b/tool/upgrade.go new file mode 100644 index 0000000..aaca783 --- /dev/null +++ b/tool/upgrade.go @@ -0,0 +1,77 @@ +package main + +import ( + "archive/zip" + "bytes" + "fmt" + "io" + "io/ioutil" + "log" + "net/http" + "os" + "path" + "path/filepath" + "strings" + + "github.com/PuerkitoBio/goquery" +) + +func main() { + site := "https://www.sqlite.org/download.html" + fmt.Printf("scraping %v\n", site) + doc, err := goquery.NewDocument(site) + if err != nil { + log.Fatal(err) + } + var url string + doc.Find("a").Each(func(_ int, s *goquery.Selection) { + if url == "" && strings.HasPrefix(s.Text(), "sqlite-amalgamation-") { + url = "https://www.sqlite.org/2016/" + s.Text() + } + }) + if url == "" { + return + } + fmt.Printf("downloading %v\n", url) + resp, err := http.Get(url) + if err != nil { + log.Fatal(err) + } + defer resp.Body.Close() + + b, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Fatal(err) + } + + fmt.Printf("extracting %v\n", path.Base(url)) + r, err := zip.NewReader(bytes.NewReader(b), resp.ContentLength) + if err != nil { + log.Fatal(err) + } + for _, zf := range r.File { + var f *os.File + switch path.Base(zf.Name) { + case "sqlite3.c": + f, err = os.Create("sqlite3-binding.c") + case "sqlite3.h": + f, err = os.Create("sqlite3-binding.h") + case "sqlite3ext.h": + f, err = os.Create("sqlite3ext.h") + default: + continue + } + if err != nil { + log.Fatal(err) + } + zr, err := zf.Open() + if err != nil { + log.Fatal(err) + } + _, err = io.Copy(f, zr) + if err != nil { + log.Fatal(err) + } + fmt.Printf("extracted %v\n", filepath.Base(f.Name())) + } +} -- cgit v1.2.3 From c3e9588849195eefa783417c3a53d092f6e93526 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 11 Aug 2016 18:51:38 +0900 Subject: Close file --- tool/upgrade.go | 1 + 1 file changed, 1 insertion(+) (limited to 'tool') diff --git a/tool/upgrade.go b/tool/upgrade.go index aaca783..4e99635 100644 --- a/tool/upgrade.go +++ b/tool/upgrade.go @@ -69,6 +69,7 @@ func main() { log.Fatal(err) } _, err = io.Copy(f, zr) + f.Close() if err != nil { log.Fatal(err) } -- cgit v1.2.3 From 420dc664edf0a720aa2edb4d7b25e833c1e7ed2a Mon Sep 17 00:00:00 2001 From: Christian Brauner Date: Fri, 28 Oct 2016 10:11:52 +0200 Subject: upgrade: add ifdefines This makes it possible to correctly link against the system sqlite. Also, don't use defers with log.Fatal() since they won't be run on exit. Signed-off-by: Christian Brauner --- tool/upgrade.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'tool') diff --git a/tool/upgrade.go b/tool/upgrade.go index 4e99635..baadd0f 100644 --- a/tool/upgrade.go +++ b/tool/upgrade.go @@ -37,18 +37,21 @@ func main() { if err != nil { log.Fatal(err) } - defer resp.Body.Close() b, err := ioutil.ReadAll(resp.Body) if err != nil { + resp.Body.Close() log.Fatal(err) } fmt.Printf("extracting %v\n", path.Base(url)) r, err := zip.NewReader(bytes.NewReader(b), resp.ContentLength) if err != nil { + resp.Body.Close() log.Fatal(err) } + resp.Body.Close() + for _, zf := range r.File { var f *os.File switch path.Base(zf.Name) { @@ -68,11 +71,27 @@ func main() { if err != nil { log.Fatal(err) } + + _, err = io.WriteString(f, "#ifndef USE_LIBSQLITE3\n") + if err != nil { + zr.Close() + f.Close() + log.Fatal(err) + } _, err = io.Copy(f, zr) - f.Close() if err != nil { + zr.Close() + f.Close() log.Fatal(err) } + _, err = io.WriteString(f, "#else // USE_LIBSQLITE3\n // If users really want to link against the system sqlite3 we\n// need to make this file a noop.\n #endif") + if err != nil { + zr.Close() + f.Close() + log.Fatal(err) + } + zr.Close() + f.Close() fmt.Printf("extracted %v\n", filepath.Base(f.Name())) } } -- cgit v1.2.3 From a160bbbc09fb1336ff61783704c3037190cab6b2 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Fri, 9 Dec 2016 09:08:59 +0900 Subject: fix tree for tools/upgrade.go Close #361 --- tool/upgrade.go | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tool') diff --git a/tool/upgrade.go b/tool/upgrade.go index baadd0f..adfe363 100644 --- a/tool/upgrade.go +++ b/tool/upgrade.go @@ -1,3 +1,5 @@ +// +build ignore + package main import ( -- cgit v1.2.3 From d03b7b541f5559f278f1f9d9cd3b5caa89d3af1a Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 16 Feb 2017 15:56:32 +0900 Subject: update to 2017 --- tool/upgrade.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tool') diff --git a/tool/upgrade.go b/tool/upgrade.go index adfe363..f93f35c 100644 --- a/tool/upgrade.go +++ b/tool/upgrade.go @@ -28,7 +28,7 @@ func main() { var url string doc.Find("a").Each(func(_ int, s *goquery.Selection) { if url == "" && strings.HasPrefix(s.Text(), "sqlite-amalgamation-") { - url = "https://www.sqlite.org/2016/" + s.Text() + url = "https://www.sqlite.org/2017/" + s.Text() } }) if url == "" { -- cgit v1.2.3