From 383c1bd5f0bb757137b4166ce2a68c6c864989e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=91=D0=BE=D1=80=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BD?= Date: Wed, 10 Jun 2026 17:49:55 +0200 Subject: [PATCH] working commit --- app/config/variant.go | 10 ++++++ app/starter/starter.go | 75 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 app/config/variant.go create mode 100644 app/starter/starter.go diff --git a/app/config/variant.go b/app/config/variant.go new file mode 100644 index 0000000..5cf1ccd --- /dev/null +++ b/app/config/variant.go @@ -0,0 +1,10 @@ +package config + +const ( + confdir = "/usr/local/etc/mbase" + rundir = "/var/run/mbase" + logdir = "/var/log/mbase" + datadir = "/var/lib/mbase" + version = "0.0.1" + srvname = "mbased" +) diff --git a/app/starter/starter.go b/app/starter/starter.go new file mode 100644 index 0000000..19223e6 --- /dev/null +++ b/app/starter/starter.go @@ -0,0 +1,75 @@ +/* + * Copyright 2026 Oleg Borodin + */ +package starter + +import ( + "os" + "path/filepath" + + "mbase/app/server" + + "github.com/spf13/cobra" +) + +type Starter struct { + runAsDaemon bool + port uint32 + cmd *cobra.Command + srv *server.Server +} + +func NewStarter() *Starter { + execName := filepath.Base(os.Args[0]) + sta := &Starter{} + cmd := &cobra.Command{ + Use: execName, + Short: "\nArtifact storage service", + SilenceUsage: true, + RunE: sta.run, + } + cmd.CompletionOptions.DisableDefaultCmd = true + cmd.Flags().BoolVarP(&sta.runAsDaemon, "asDaemon", "D", true, "Run service as daemon") + cmd.Flags().Uint32VarP(&sta.port, "port", "P", 1025, "Service port") + + sta.cmd = cmd + return sta +} + +func (sta *Starter) GetCmd() *cobra.Command { + return sta.cmd +} + +func (sta *Starter) run(cmd *cobra.Command, args []string) error { + var err error + srv, err := server.NewServer() + if err != nil { + return err + } + err = srv.Configure() + if err != nil { + return err + } + srv.SetAsDaemon(sta.runAsDaemon) + srv.SetPort(sta.port) + + err = srv.Daemonize() + if err != nil { + return err + } + + err = srv.Build() + if err != nil { + return err + } + err = srv.Run() + if err != nil { + return err + } + sta.srv = srv + return err +} + +func (sta *Starter) Exec() error { + return sta.cmd.Execute() +}