@@ -53,6 +53,13 @@ const (
5353 defaultOnelinerExpiration bool = true
5454)
5555
56+ // Build-time metadata (overridden via -ldflags "-X main.buildVersion=... -X main.buildCommit=... -X main.buildDate=...")
57+ var (
58+ buildVersion = serviceVersion
59+ buildCommit = "unknown"
60+ buildDate = "unknown"
61+ )
62+
5663// Global variables
5764var (
5865 err error
@@ -118,13 +125,13 @@ func loadConfiguration(file, service string) (config.JSONConfigurationService, e
118125 }
119126 // Check if values are valid
120127 if ! validAuth [cfg .Auth ] {
121- return cfg , fmt .Errorf ("Invalid auth method" )
128+ return cfg , fmt .Errorf ("invalid auth method" )
122129 }
123130 if ! validLogging [cfg .Logger ] {
124- return cfg , fmt .Errorf ("Invalid logging method" )
131+ return cfg , fmt .Errorf ("invalid logging method" )
125132 }
126133 if ! validCarver [cfg .Carver ] {
127- return cfg , fmt .Errorf ("Invalid carver method" )
134+ return cfg , fmt .Errorf ("invalid carver method" )
128135 }
129136 // No errors!
130137 return cfg , nil
@@ -345,21 +352,21 @@ func cliAction(c *cli.Context) error {
345352 if flagParams .ConfigFlag {
346353 flagParams .ConfigValues , err = loadConfiguration (flagParams .ServiceConfigFile , config .ServiceTLS )
347354 if err != nil {
348- return fmt .Errorf ("Error loading %s - %w" , flagParams .ServiceConfigFile , err )
355+ return fmt .Errorf ("error loading %s - %w" , flagParams .ServiceConfigFile , err )
349356 }
350357 }
351358 // Load db configuration if external JSON config file is used
352359 if flagParams .DBFlag {
353360 flagParams .DBConfigValues , err = backend .LoadConfiguration (flagParams .DBConfigFile , backend .DBKey )
354361 if err != nil {
355- return fmt .Errorf ("Failed to load DB configuration - %w" , err )
362+ return fmt .Errorf ("failed to load DB configuration - %w" , err )
356363 }
357364 }
358365 // Load redis configuration if external JSON config file is used
359366 if flagParams .RedisFlag {
360367 flagParams .RedisConfigValues , err = cache .LoadConfiguration (flagParams .RedisConfigFile , cache .RedisKey )
361368 if err != nil {
362- return fmt .Errorf ("Failed to load redis configuration - %w" , err )
369+ return fmt .Errorf ("failed to load redis configuration - %w" , err )
363370 }
364371 }
365372 // Load carver configuration if external JSON config file is used
@@ -370,7 +377,7 @@ func cliAction(c *cli.Context) error {
370377 carvers3 , err = carves .CreateCarverS3File (flagParams .CarverConfigFile )
371378 }
372379 if err != nil {
373- return fmt .Errorf ("Failed to initiate s3 carver - %w" , err )
380+ return fmt .Errorf ("failed to initiate s3 carver - %w" , err )
374381 }
375382 }
376383 return nil
@@ -409,10 +416,22 @@ func main() {
409416 app = cli .NewApp ()
410417 app .Name = serviceName
411418 app .Usage = appDescription
412- app .Version = serviceVersion
419+ app .Version = buildVersion
413420 app .Description = appDescription
414421 app .Flags = flags
415- // Define this command for help to exit when help flag is passed
422+
423+ // Customize version output (supports `--version` and `version` command)
424+ cli .VersionPrinter = func (c * cli.Context ) {
425+ fmt .Printf ("%s version=%s commit=%s date=%s\n " , serviceName , buildVersion , buildCommit , buildDate )
426+ }
427+ // Add -v alias to the global --version flag
428+ cli .VersionFlag = & cli.BoolFlag {
429+ Name : "version" ,
430+ Aliases : []string {"v" },
431+ Usage : "Print version information" ,
432+ }
433+
434+ // Define commands
416435 app .Commands = []* cli.Command {
417436 {
418437 Name : "help" ,
@@ -422,13 +441,19 @@ func main() {
422441 },
423442 },
424443 }
425- app .Action = cliAction
444+ // Start service only for default action; version/help won't trigger this
445+ app .Action = func (c * cli.Context ) error {
446+ if err := cliAction (c ); err != nil {
447+ return err
448+ }
449+ // Initialize service logger
450+ initializeLoggers (flagParams .ConfigValues )
451+ // Service starts!
452+ osctrlService ()
453+ return nil
454+ }
426455 if err := app .Run (os .Args ); err != nil {
427456 fmt .Printf ("app.Run error: %s" , err .Error ())
428457 os .Exit (1 )
429458 }
430- // Initialize service logger
431- initializeLoggers (flagParams .ConfigValues )
432- // Service starts!
433- osctrlService ()
434459}
0 commit comments