@@ -3,20 +3,31 @@ package main
33import (
44 "archive/tar"
55 "compress/gzip"
6+ "encoding/json"
67 "fmt"
78 "io"
89 "net/http"
910 "os"
1011)
1112
12- const requiredVersion = "1.12.6 "
13+ const requiredVersion = "1.14.3 "
1314
1415func setupServer () error {
15- if _ , err := os .Stat ("httptoolkit-server/package.json" ); err != nil {
16- if err = downloadServer (); err != nil {
17- return err
18- }
16+ file , err := os .Open ("httptoolkit-server/package.json" )
17+ if err != nil {
18+ return downloadServer ()
19+ }
20+ defer file .Close ()
21+
22+ var pkg struct { Version string }
23+ if err = json .NewDecoder (file ).Decode (& pkg ); err != nil {
24+ return downloadServer ()
1925 }
26+
27+ if pkg .Version != requiredVersion {
28+ return downloadServer ()
29+ }
30+
2031 return nil
2132}
2233
@@ -77,8 +88,10 @@ func extract(gzipStream io.Reader) error {
7788 for header , err = tarReader .Next (); err == nil ; header , err = tarReader .Next () {
7889 switch header .Typeflag {
7990 case tar .TypeDir :
80- if err := os .Mkdir (header .Name , 0755 ); err != nil {
81- return fmt .Errorf ("extract: Mkdir() failed: %w" , err )
91+ if _ , err := os .Stat (header .Name ); err != nil {
92+ if err := os .Mkdir (header .Name , 0755 ); err != nil {
93+ return fmt .Errorf ("extract: Mkdir() failed: %w" , err )
94+ }
8295 }
8396 case tar .TypeReg :
8497 outFile , err := os .OpenFile (header .Name , os .O_RDWR | os .O_CREATE | os .O_TRUNC , 0777 )
0 commit comments