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

foomo / contentserver / 19671331757

25 Nov 2025 01:33PM UTC coverage: 42.455% (+0.8%) from 41.662%
19671331757

Pull #67

github

web-flow
Merge 12430bd68 into e7e5d09f5
Pull Request #67: Add GCS Storage Backend Support

166 of 331 new or added lines in 11 files covered. (50.15%)

3 existing lines in 2 files now uncovered.

875 of 2061 relevant lines covered (42.46%)

26984.83 hits per line

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

0.0
/cmd/flags.go
1
package cmd
2

3
import (
4
        "time"
5

6
        "github.com/spf13/pflag"
7
        "github.com/spf13/viper"
8
)
9

10
func logLevelFlag(v *viper.Viper) string {
×
11
        return v.GetString("log.level")
×
12
}
×
13

14
func addLogLevelFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
15
        flags.String("log-level", "info", "log level")
×
16
        _ = v.BindPFlag("log.level", flags.Lookup("log-level"))
×
17
        _ = v.BindEnv("log.level", "LOG_LEVEL")
×
18
}
×
19

20
func logFormatFlag(v *viper.Viper) string {
×
21
        return v.GetString("log.format")
×
22
}
×
23

24
func addLogFormatFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
25
        flags.String("log-format", "json", "log format")
×
26
        _ = v.BindPFlag("log.format", flags.Lookup("log-format"))
×
27
        _ = v.BindEnv("log.format", "LOG_FORMAT")
×
28
}
×
29

30
func addressFlag(v *viper.Viper) string {
×
31
        return v.GetString("address")
×
32
}
×
33

34
func addAddressFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
35
        flags.String("address", ":8080", "Address to bind to (host:port)")
×
36
        _ = v.BindPFlag("address", flags.Lookup("address"))
×
37
        _ = v.BindEnv("address", "CONTENT_SERVER_ADDRESS")
×
38
}
×
39

40
func basePathFlag(v *viper.Viper) string {
×
41
        return v.GetString("base_path")
×
42
}
×
43

44
func addBasePathFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
45
        flags.String("base-path", "/contentserver", "Base path to export the webserver on")
×
46
        _ = v.BindPFlag("base_path", flags.Lookup("base-path"))
×
47
        _ = v.BindEnv("base_path", "CONTENT_SERVER_BASE_PATH")
×
48
}
×
49

50
func pollFlag(v *viper.Viper) bool {
×
51
        return v.GetBool("poll.enabled")
×
52
}
×
53

54
func addPollFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
55
        flags.Bool("poll", false, "If true, the address arg will be used to periodically poll the content url")
×
56
        _ = v.BindPFlag("poll.enabled", flags.Lookup("poll"))
×
57
        _ = v.BindEnv("poll.enabled", "CONTENT_SERVER_POLL")
×
58
}
×
59

60
func pollIntevalFlag(v *viper.Viper) time.Duration {
×
61
        return v.GetDuration("poll.interval")
×
62
}
×
63

64
func addPollIntervalFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
65
        flags.Duration("poll-interval", time.Minute, "Specifies the poll interval")
×
66
        _ = v.BindPFlag("poll.interval", flags.Lookup("poll-interval"))
×
67
        _ = v.BindEnv("poll.interval", "CONTENT_SERVER_POLL_INTERVAL")
×
68
}
×
69

70
func historyDirFlag(v *viper.Viper) string {
×
71
        return v.GetString("history.dir")
×
72
}
×
73

74
func addHistoryDirFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
75
        flags.String("history-dir", "/var/lib/contentserver", "Where to put my data")
×
76
        _ = v.BindPFlag("history.dir", flags.Lookup("history-dir"))
×
77
        _ = v.BindEnv("history.dir", "CONTENT_SERVER_HISTORY_DIR")
×
78
}
×
79

80
func historyLimitFlag(v *viper.Viper) int {
×
81
        return v.GetInt("history.limit")
×
82
}
×
83

84
func addHistoryLimitFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
85
        flags.Int("history-limit", 2, "Number of history records to keep")
×
86
        _ = v.BindPFlag("history.limit", flags.Lookup("history-limit"))
×
87
        _ = v.BindEnv("history.limit", "CONTENT_SERVER_HISTORY_LIMIT")
×
88
}
×
89

90
func gracefulPeriodFlag(v *viper.Viper) time.Duration {
×
91
        return v.GetDuration("graceful.period")
×
92
}
×
93

94
func addShutdownTimeoutFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
95
        flags.Duration("graceful-period", 0, "Graceful shutdown period")
×
96
        _ = v.BindPFlag("graceful.period", flags.Lookup("graceful-period"))
×
97
        _ = v.BindEnv("graceful.period", "CONTENT_SERVER_GRACEFULE_PERIOD")
×
98
}
×
99

100
func serviceHealthzEnabledFlag(v *viper.Viper) bool {
×
101
        return v.GetBool("service.healthz.enabled")
×
102
}
×
103

104
func addServiceHealthzEnabledFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
105
        flags.Bool("service-healthz-enabled", false, "Enable healthz service")
×
106
        _ = v.BindPFlag("service.healthz.enabled", flags.Lookup("service-healthz-enabled"))
×
107
}
×
108

109
func servicePrometheusEnabledFlag(v *viper.Viper) bool {
×
110
        return v.GetBool("service.prometheus.enabled")
×
111
}
×
112

113
func addServicePrometheusEnabledFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
114
        flags.Bool("service-prometheus-enabled", false, "Enable prometheus service")
×
115
        _ = v.BindPFlag("service.prometheus.enabled", flags.Lookup("service-prometheus-enabled"))
×
116
}
×
117

NEW
118
func servicePProfEnabledFlag(v *viper.Viper) bool {
×
NEW
119
        return v.GetBool("service.pprof.enabled")
×
NEW
120
}
×
121

NEW
122
func addServicePProfEnabledFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
NEW
123
        flags.Bool("service-pprof-enabled", false, "Enable pprof service")
×
NEW
124
        _ = v.BindPFlag("service.pprof.enabled", flags.Lookup("service-pprof-enabled"))
×
NEW
125
}
×
126

127
func otelEnabledFlag(v *viper.Viper) bool {
×
128
        return v.GetBool("otel.enabled")
×
129
}
×
130

131
func addOtelEnabledFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
132
        flags.Bool("otel-enabled", false, "Enable otel service")
×
133
        _ = v.BindPFlag("otel.enabled", flags.Lookup("otel-enabled"))
×
134
        _ = v.BindEnv("otel.enabled", "OTEL_ENABLED")
×
135
}
×
136

NEW
137
func storageTypeFlag(v *viper.Viper) string {
×
NEW
138
        return v.GetString("storage.type")
×
NEW
139
}
×
140

NEW
141
func addStorageTypeFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
NEW
142
        flags.String("storage-type", "filesystem", "Storage backend type: filesystem or gcs")
×
NEW
143
        _ = v.BindPFlag("storage.type", flags.Lookup("storage-type"))
×
NEW
144
        _ = v.BindEnv("storage.type", "CONTENT_SERVER_STORAGE_TYPE")
×
NEW
145
}
×
146

NEW
147
func storageGCSBucketFlag(v *viper.Viper) string {
×
NEW
148
        return v.GetString("storage.gcs.bucket")
×
NEW
149
}
×
150

NEW
151
func addStorageGCSBucketFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
NEW
152
        flags.String("storage-gcs-bucket", "", "GCS bucket URL (e.g., gs://my-bucket)")
×
NEW
153
        _ = v.BindPFlag("storage.gcs.bucket", flags.Lookup("storage-gcs-bucket"))
×
NEW
154
        _ = v.BindEnv("storage.gcs.bucket", "CONTENT_SERVER_STORAGE_GCS_BUCKET")
×
NEW
155
}
×
156

NEW
157
func storageGCSPrefixFlag(v *viper.Viper) string {
×
NEW
158
        return v.GetString("storage.gcs.prefix")
×
NEW
159
}
×
160

NEW
161
func addStorageGCSPrefixFlag(flags *pflag.FlagSet, v *viper.Viper) {
×
NEW
162
        flags.String("storage-gcs-prefix", "", "GCS object prefix (e.g., contentserver/)")
×
NEW
163
        _ = v.BindPFlag("storage.gcs.prefix", flags.Lookup("storage-gcs-prefix"))
×
NEW
164
        _ = v.BindEnv("storage.gcs.prefix", "CONTENT_SERVER_STORAGE_GCS_PREFIX")
×
NEW
165
}
×
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