show-rss/src/cmd/config.go

49 lines
940 B
Go

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
}