Skip to content

Commit b1ac2b4

Browse files
committed
More WIP
1 parent ae31a78 commit b1ac2b4

File tree

5 files changed

+83
-7
lines changed

5 files changed

+83
-7
lines changed

internal/bundler/build.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"path/filepath"
1010

1111
"github.com/kyleconroy/sqlc/internal/config"
12+
"github.com/kyleconroy/sqlc/internal/debug"
1213
"github.com/kyleconroy/sqlc/internal/sql/sqlpath"
1314
)
1415

@@ -40,18 +41,17 @@ func Build(file string, conf *config.Config) ([]byte, error) {
4041
return nil, err
4142
}
4243
}
43-
44+
if err := addMetadata(w); err != nil {
45+
return nil, err
46+
}
4447
if err := w.Flush(); err != nil {
4548
return nil, err
4649
}
47-
4850
if err := gw.Flush(); err != nil {
4951
return nil, err
5052
}
51-
5253
w.Close()
5354
gw.Close()
54-
5555
return b.Bytes(), nil
5656
}
5757

@@ -69,6 +69,7 @@ func addFile(w *tar.Writer, file string) error {
6969
if err != nil {
7070
return err
7171
}
72+
debug.Dump(header)
7273
header.Name = file
7374
if err := w.WriteHeader(header); err != nil {
7475
return err

internal/bundler/metadata.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package bundler
2+
3+
import (
4+
"archive/tar"
5+
"encoding/json"
6+
"fmt"
7+
"runtime"
8+
"time"
9+
10+
"github.com/kyleconroy/sqlc/internal/info"
11+
)
12+
13+
type jsonTime struct {
14+
time.Time
15+
}
16+
17+
func (t jsonTime) MarshalJSON() ([]byte, error) {
18+
//do your serializing here
19+
stamp := fmt.Sprintf("\"%s\"", t.Format(time.RFC3339))
20+
return []byte(stamp), nil
21+
}
22+
23+
type setting struct {
24+
Key, Value string
25+
}
26+
27+
type metadata struct {
28+
Version string `json:"version"`
29+
GoVersion string `json:"go_version"`
30+
GOOS string `json:"goos"`
31+
GOARCH string `json:"goarch"`
32+
Created jsonTime `json:"created"`
33+
Settings []setting `json:"settings"`
34+
}
35+
36+
func buildMetadata() (*metadata, error) {
37+
return &metadata{
38+
Version: info.Version,
39+
GoVersion: runtime.Version(),
40+
GOOS: runtime.GOOS,
41+
GOARCH: runtime.GOARCH,
42+
Created: jsonTime{time.Now().UTC()},
43+
}, nil
44+
}
45+
46+
func addMetadata(w *tar.Writer) error {
47+
md, err := buildMetadata()
48+
if err != nil {
49+
return err
50+
}
51+
blob, err := json.Marshal(md)
52+
if err != nil {
53+
return err
54+
}
55+
header := &tar.Header{
56+
Name: "metadata.json",
57+
Size: int64(len(blob)),
58+
Mode: 0420,
59+
ModTime: md.Created.Time,
60+
AccessTime: md.Created.Time,
61+
ChangeTime: md.Created.Time,
62+
}
63+
if err := w.WriteHeader(header); err != nil {
64+
return err
65+
}
66+
if _, err := w.Write(blob); err != nil {
67+
return err
68+
}
69+
return nil
70+
}

internal/cmd/cmd.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515

1616
"github.com/kyleconroy/sqlc/internal/config"
1717
"github.com/kyleconroy/sqlc/internal/debug"
18+
"github.com/kyleconroy/sqlc/internal/info"
1819
"github.com/kyleconroy/sqlc/internal/tracer"
1920
)
2021

@@ -61,9 +62,7 @@ var versionCmd = &cobra.Command{
6162
defer trace.StartRegion(cmd.Context(), "version").End()
6263
}
6364
if version == "" {
64-
// When no version is set, return the next bug fix version
65-
// after the most recent tag
66-
fmt.Printf("%s\n", "v1.12.0")
65+
fmt.Printf("%s\n", info.Version)
6766
} else {
6867
fmt.Printf("%s\n", version)
6968
}

internal/cmd/package.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var packageCmd = &cobra.Command{
1818
stderr := cmd.ErrOrStderr()
1919
dir, name := getConfigPath(stderr, cmd.Flag("file"))
2020
if err := createPkg(ParseEnv(cmd), dir, name, stderr); err != nil {
21+
fmt.Fprintf(stderr, "error building package: %s\n", err)
2122
os.Exit(1)
2223
}
2324
return nil

internal/info/facts.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package info
2+
3+
// When no version is set, return the next bug fix version
4+
// after the most recent tag
5+
const Version = "v1.12.0"

0 commit comments

Comments
 (0)