From c7375949c277ed488c6a1e88e8bc16a08a4fd104 Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Wed, 7 May 2025 20:22:59 -0600 Subject: [PATCH] cli can pass -p 10_000 --- src/cmd/config.go | 7 ++++++- src/cmd/cron/main.go | 2 +- src/cmd/server/main.go | 2 +- src/feeds/db.go | 4 ++-- src/server/config.go | 18 +++++++++++------- 5 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/cmd/config.go b/src/cmd/config.go index ac4d71b..96a01ce 100644 --- a/src/cmd/config.go +++ b/src/cmd/config.go @@ -6,10 +6,12 @@ import ( "os" "show-rss/src/cleanup" "show-rss/src/db" + "show-rss/src/server" ) type Flags struct { - DB string + DB string + Port int } func NewFlags(args []string) (Flags, error) { @@ -17,6 +19,7 @@ func NewFlags(args []string) (Flags, error) { 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", 10_000, "port for http") err := fs.Parse(args) return result, err @@ -33,6 +36,8 @@ func Config(ctx context.Context, args []string) (context.Context, func(), error) return ctx, nil, err } + ctx = server.Inject(ctx, flags.Port) + return ctx, func() { cleanup.Extract(ctx)() }, nil diff --git a/src/cmd/cron/main.go b/src/cmd/cron/main.go index d280fad..ff2e325 100644 --- a/src/cmd/cron/main.go +++ b/src/cmd/cron/main.go @@ -70,7 +70,7 @@ func oneItem(ctx context.Context, feed feeds.Feed, item feeds.Item) error { Item: item, } - wmethod, wurl, wbody := feed.Webhook() + wmethod, wurl, wbody := feed.Webhook(ctx) method, err := render(wmethod, arg) if err != nil { diff --git a/src/cmd/server/main.go b/src/cmd/server/main.go index 6e2bebc..99c3e5e 100644 --- a/src/cmd/server/main.go +++ b/src/cmd/server/main.go @@ -10,7 +10,7 @@ import ( ) func Main(ctx context.Context) error { - return Run(ctx, fmt.Sprintf(":%d", server.Port)) + return Run(ctx, fmt.Sprintf(":%d", server.Extract(ctx))) } func Run(ctx context.Context, listen string) error { diff --git a/src/feeds/db.go b/src/feeds/db.go index 59cde60..573b8ff 100644 --- a/src/feeds/db.go +++ b/src/feeds/db.go @@ -263,11 +263,11 @@ func initDB(ctx context.Context) error { }) } -func (feed Feed) Webhook() (string, string, string) { +func (feed Feed) Webhook(ctx context.Context) (string, string, string) { u, _ := url.Parse(feed.Version.WebhookURL) switch u.Scheme { case "vpntor": - return "POST", fmt.Sprintf("http://localhost:%d/v1/vpntor", server.Port), fmt.Sprintf(`{ + return "POST", fmt.Sprintf("http://localhost:%d/v1/vpntor", server.Extract(ctx)), fmt.Sprintf(`{ "Magnet": "{{ .Item.Link }}", "Dir": %q, "URL": "https://vpntor.int.bel.blue/transmission/rpc" diff --git a/src/server/config.go b/src/server/config.go index dc010b0..e9d57dc 100644 --- a/src/server/config.go +++ b/src/server/config.go @@ -1,14 +1,18 @@ package server import ( - "os" - "strconv" + "context" ) -var Port = func() int { - port, _ := strconv.Atoi(os.Getenv("PORT")) - if port == 0 { - port = 10000 +func Inject(ctx context.Context, port int) context.Context { + return context.WithValue(ctx, "server.port", port) +} + +func Extract(ctx context.Context) int { + v := ctx.Value("server.port") + port, ok := v.(int) + if !ok { + return 10_000 } return port -}() +}