diff --git a/cmd/pkgserver/main.go b/cmd/pkgserver/main.go index 0c9faa7..b9b704b 100644 --- a/cmd/pkgserver/main.go +++ b/cmd/pkgserver/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "errors" "fmt" "log" "net/http" @@ -31,31 +32,43 @@ func main() { msg := message.New(log.Default()) c := command.New(os.Stderr, log.Printf, "pkgserver", func(args []string) error { - reportPath := args[0] - baseDir, err := check.NewAbs(flagBaseDir) - if err != nil { - return err - } - cache, err := pkg.Open(ctx, msg, 0, baseDir) - if err != nil { - return err - } - defer cache.Close() - report, err := rosa.OpenReport(reportPath) - if err != nil { - return err + var ( + cache *pkg.Cache + report *rosa.Report + ) + switch len(args) { + case 0: + break + + case 1: + baseDir, err := check.NewAbs(flagBaseDir) + if err != nil { + return err + } + + cache, err = pkg.Open(ctx, msg, 0, baseDir) + if err != nil { + return err + } + defer cache.Close() + + report, err = rosa.OpenReport(args[0]) + if err != nil { + return err + } + + default: + return errors.New("pkgserver requires 1 argument") + } + var index packageIndex - if err = index.populate(cache, report); err != nil { + if err := index.populate(cache, report); err != nil { return err } uiRoutes(http.DefaultServeMux) apiRoutes(http.DefaultServeMux, &index) - err = http.ListenAndServe(fmt.Sprintf(":%d", flagPort), nil) - if err != nil { - return err - } - return nil + return http.ListenAndServe(fmt.Sprintf(":%d", flagPort), nil) }).Flag( &flagBaseDir, "b", command.StringFlag(""),