• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bavix / gripmock / 14645303547

24 Apr 2025 03:18PM UTC coverage: 55.931% (-0.1%) from 56.029%
14645303547

push

github

web-flow
Merge pull request #590 from bavix/setup

[3.2] add setup.sh & migrate from encoding/json to goccy

1141 of 2040 relevant lines covered (55.93%)

0.6 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

77.97
/cmd/root.go
1
package cmd
2

3
import (
4
        "context"
5
        "net/http"
6
        "os"
7

8
        "github.com/cockroachdb/errors"
9
        "github.com/rs/zerolog"
10
        "github.com/spf13/cobra"
11

12
        "github.com/bavix/gripmock/v3/internal/deps"
13
        "github.com/bavix/gripmock/v3/internal/domain/proto"
14
)
15

16
var (
17
        stubFlag    string
18
        importsFlag []string
19
        version     = "development"
20
)
21

22
var rootCmd = &cobra.Command{
23
        Use:     "gripmock",
24
        Short:   "gRPC Mock Server",
25
        Version: version,
26
        Args:    cobra.MinimumNArgs(1),
27
        RunE: func(cmd *cobra.Command, args []string) error {
1✔
28
                builder := deps.NewBuilder(deps.WithDefaultConfig())
1✔
29
                ctx, cancel := builder.SignalNotify(cmd.Context())
1✔
30
                defer cancel()
1✔
31

1✔
32
                ctx = builder.Logger(ctx)
1✔
33

1✔
34
                zerolog.Ctx(ctx).Info().Str("release", version).Msg("Starting GripMock")
1✔
35

1✔
36
                go func() {
2✔
37
                        if err := restServe(ctx, builder); err != nil {
1✔
38
                                zerolog.Ctx(ctx).Err(err).Msg("Failed to start rest server")
×
39
                        }
×
40
                }()
41

42
                defer builder.Shutdown(context.WithoutCancel(ctx))
1✔
43

1✔
44
                return builder.GRPCServe(ctx, proto.New(args, importsFlag))
1✔
45
        },
46
}
47

48
func restServe(ctx context.Context, builder *deps.Builder) error {
1✔
49
        srv, err := builder.RestServe(ctx, stubFlag)
1✔
50
        if err != nil {
1✔
51
                return err
×
52
        }
×
53

54
        zerolog.Ctx(ctx).Info().Str("addr", srv.Addr).Msg("HTTP server is now running")
1✔
55

1✔
56
        ch := make(chan error)
1✔
57

1✔
58
        go func() {
2✔
59
                defer close(ch)
1✔
60

1✔
61
                select {
1✔
62
                case <-ctx.Done():
×
63
                        if !errors.Is(ctx.Err(), context.Canceled) {
×
64
                                ch <- ctx.Err()
×
65
                        }
×
66

67
                        return
×
68
                case ch <- srv.ListenAndServe():
1✔
69
                        return
1✔
70
                }
71
        }()
72

73
        if err := <-ch; !errors.Is(err, http.ErrServerClosed) {
1✔
74
                return errors.Wrap(err, "http server failed")
×
75
        }
×
76

77
        return nil
1✔
78
}
79

80
func init() {
1✔
81
        rootCmd.Flags().StringVarP(
1✔
82
                &stubFlag,
1✔
83
                "stub",
1✔
84
                "s",
1✔
85
                "",
1✔
86
                "Path where the stub files are (Optional)")
1✔
87

1✔
88
        rootCmd.Flags().StringSliceVarP(
1✔
89
                &importsFlag,
1✔
90
                "imports",
1✔
91
                "i",
1✔
92
                []string{},
1✔
93
                "Path to import proto-libraries")
1✔
94
}
1✔
95

96
func Execute(ctx context.Context) {
1✔
97
        if err := rootCmd.ExecuteContext(ctx); err != nil {
1✔
98
                os.Exit(1)
×
99
        }
×
100
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc