49 lines
940 B
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
|
|
}
|