package cmd import ( "context" "flag" "os" "show-rss/src/cleanup" "show-rss/src/db" "show-rss/src/server" ) type Flags struct { DB string Port int Entrypoint Entrypoint Pos []string } func NewFlags(args []string) (Flags, error) { var result Flags fs := flag.NewFlagSet(os.Args[0], flag.ContinueOnError) fs.StringVar(&result.DB, "db", "/tmp/f.db", "path to sqlite.db") fs.IntVar(&result.Port, "p", 10000, "port for http") fs.Var(&result.Entrypoint, "e", "entrypoint") err := fs.Parse(args) result.Pos = fs.Args() return result, err } func Config(ctx context.Context, args []string) (context.Context, func(), Flags, error) { flags, err := NewFlags(args) if err != nil { return ctx, nil, flags, err } ctx, err = db.Inject(ctx, flags.DB) if err != nil { return ctx, nil, flags, err } ctx = server.Inject(ctx, flags.Port) return ctx, func() { cleanup.Extract(ctx)() }, flags, nil }