Alexey Kim 1 年之前
當前提交
57ce98ad94
共有 7 個文件被更改,包括 154 次插入0 次删除
  1. 1 0
      .gitignore
  2. 35 0
      app/daemon/cmd.go
  3. 11 0
      app/daemon/config.go
  4. 53 0
      app/main.go
  5. 19 0
      go.mod
  6. 29 0
      go.sum
  7. 6 0
      version/info.go

+ 1 - 0
.gitignore

@@ -0,0 +1 @@
+.idea

+ 35 - 0
app/daemon/cmd.go

@@ -0,0 +1,35 @@
+package daemon
+
+import (
+	"fmt"
+	"git.beejay.kim/tool/service/config"
+	"github.com/urfave/cli/v2"
+)
+
+var (
+	CMD = cli.Command{
+		Name:  "daemon",
+		Usage: "run daemon",
+		Action: func(ctx *cli.Context) error {
+			var (
+				cfg = config.Get[Configuration](ctx)
+			)
+
+			if cfg == nil {
+				return fmt.Errorf("could not load Configuration")
+			}
+
+			return fmt.Errorf("implement me")
+		},
+		Flags: []cli.Flag{
+			&cli.PathFlag{
+				Name:      "config",
+				Usage:     "config file path",
+				Required:  true,
+				Aliases:   []string{"C"},
+				TakesFile: false,
+				Action:    config.Load[Configuration],
+			},
+		},
+	}
+)

+ 11 - 0
app/daemon/config.go

@@ -0,0 +1,11 @@
+package daemon
+
+import "git.beejay.kim/tool/service/config"
+
+type Configuration struct {
+	config.Configuration `yaml:",inline"`
+}
+
+func (c Configuration) Invalidate() error {
+	return config.Invalidate(c)
+}

+ 53 - 0
app/main.go

@@ -0,0 +1,53 @@
+package main
+
+import (
+	"git.beejay.kim/WatchDog/ward/app/daemon"
+	"git.beejay.kim/WatchDog/ward/version"
+	"github.com/rs/zerolog"
+	"github.com/rs/zerolog/log"
+	"github.com/urfave/cli/v2"
+	"os"
+	"time"
+)
+
+var app *cli.App
+
+func init() {
+	// Default log level is info, unless debug flag is present
+	zerolog.SetGlobalLevel(zerolog.InfoLevel)
+	zerolog.TimeFieldFormat = zerolog.TimeFormatUnix
+
+	app = &cli.App{
+		Name:                 version.Name,
+		Version:              version.BuildVersion,
+		EnableBashCompletion: true,
+		Compiled:             time.Now(),
+		Authors: []*cli.Author{
+			{
+				Name:  "BeeJay Kim",
+				Email: "i@beejay.kim",
+			},
+		},
+		Copyright: "(c) 2024 BeeJay Kim",
+		Flags: []cli.Flag{
+			&cli.BoolFlag{
+				Name:    "debug",
+				Usage:   "sets log level to debug",
+				Aliases: []string{"d"},
+				Action: func(ctx *cli.Context, debug bool) error {
+					zerolog.SetGlobalLevel(zerolog.DebugLevel)
+					return nil
+				},
+			},
+		},
+		Commands: []*cli.Command{
+			&daemon.CMD,
+		},
+	}
+}
+
+func main() {
+	if err := app.Run(os.Args); err != nil {
+		log.Fatal().Err(err).Send()
+	}
+}

+ 19 - 0
go.mod

@@ -0,0 +1,19 @@
+module git.beejay.kim/WatchDog/ward
+
+go 1.21
+
+require (
+	git.beejay.kim/tool/service v0.0.0-20231223110332-69ac9e9302cb
+	github.com/rs/zerolog v1.31.0
+	github.com/urfave/cli/v2 v2.26.0
+)
+
+require (
+	github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect
+	github.com/mattn/go-colorable v0.1.13 // indirect
+	github.com/mattn/go-isatty v0.0.19 // indirect
+	github.com/russross/blackfriday/v2 v2.1.0 // indirect
+	github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
+	golang.org/x/sys v0.12.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)

+ 29 - 0
go.sum

@@ -0,0 +1,29 @@
+git.beejay.kim/tool/service v0.0.0-20231223110332-69ac9e9302cb h1:5wOaoz9C0hEpymKvhxJREWc9Vg99u8g86i/qAbCDUjA=
+git.beejay.kim/tool/service v0.0.0-20231223110332-69ac9e9302cb/go.mod h1:1coTPEnnbgq/Mp1LpyDH2HmUqHQ3h091xCWCQ18ncqs=
+github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
+github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
+github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
+github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
+github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
+github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
+github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA=
+github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.31.0 h1:FcTR3NnLWW+NnTwwhFWiJSZr4ECLpqCm6QsEnyvbV4A=
+github.com/rs/zerolog v1.31.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
+github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
+github.com/urfave/cli/v2 v2.26.0 h1:3f3AMg3HpThFNT4I++TKOejZO8yU55t3JnnSr4S4QEI=
+github.com/urfave/cli/v2 v2.26.0/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
+github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
+golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 6 - 0
version/info.go

@@ -0,0 +1,6 @@
+package version
+
+var (
+	Name         = "ward"
+	BuildVersion = "0.0.0"
+)