-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
61 lines (44 loc) · 1.23 KB
/
main.go
File metadata and controls
61 lines (44 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"errors"
"flag"
"fmt"
"log"
"os"
"strings"
"github.com/kalbasit/sqlc-multi-db/generator"
)
var errInvalidEngineFormat = errors.New("invalid engine format: expected name:package")
type engineFlag []generator.Engine
func (e *engineFlag) String() string {
parts := make([]string, len(*e))
for i, eng := range *e {
parts[i] = eng.Name + ":" + eng.Package
}
return strings.Join(parts, ", ")
}
func (e *engineFlag) Set(value string) error {
parts := strings.SplitN(value, ":", 2)
if len(parts) != 2 || parts[0] == "" || parts[1] == "" {
return fmt.Errorf("%w: got %q", errInvalidEngineFormat, value)
}
*e = append(*e, generator.Engine{Name: parts[0], Package: parts[1]})
return nil
}
func main() {
var engines engineFlag
flag.Var(&engines, "engine", "Engine in name:package format (repeatable)")
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "USAGE: %s [--engine name:package ...] /path/to/source/querier.go\n", os.Args[0])
}
flag.Parse()
if len(engines) == 0 || flag.NArg() != 1 {
flag.Usage()
os.Exit(1)
}
querierPath := flag.Arg(0)
if _, err := os.Stat(querierPath); err != nil {
log.Fatalf("stat(%q): %s", querierPath, err)
}
generator.Run(querierPath, []generator.Engine(engines))
}