17840: Deduplicate flag-parsing code.
[arvados.git] / cmd / arvados-package / cmd.go
index b0c0e9e3c723918489f4ae0ecce889d102605123..863bbe925478c76df017bf45ac637f744f34b1f9 100644 (file)
@@ -64,12 +64,16 @@ type opts struct {
        RebuildImage   bool
        SourceDir      string
        TargetOS       string
+       Maintainer     string
+       Vendor         string
 }
 
 func parseFlags(args []string) (opts, error) {
        opts := opts{
-               SourceDir: ".",
-               TargetOS:  "debian:10",
+               SourceDir:  ".",
+               TargetOS:   "debian:10",
+               Maintainer: "Arvados Package Maintainers <packaging@arvados.org>",
+               Vendor:     "The Arvados Project",
        }
        flags := flag.NewFlagSet("", flag.ContinueOnError)
        flags.StringVar(&opts.PackageVersion, "package-version", opts.PackageVersion, "package version to build/test, like \"1.2.3\"")
@@ -77,6 +81,8 @@ func parseFlags(args []string) (opts, error) {
        flags.StringVar(&opts.PackageDir, "package-dir", opts.PackageDir, "destination directory for new package (default is cwd)")
        flags.StringVar(&opts.PackageChown, "package-chown", opts.PackageChown, "desired uid:gid for new package (default is current user:group)")
        flags.StringVar(&opts.TargetOS, "target-os", opts.TargetOS, "target operating system vendor:version")
+       flags.StringVar(&opts.Maintainer, "package-maintainer", opts.Maintainer, "maintainer to be listed in package metadata")
+       flags.StringVar(&opts.Vendor, "package-vendor", opts.Vendor, "vendor to be listed in package metadata")
        flags.BoolVar(&opts.RebuildImage, "rebuild-image", opts.RebuildImage, "rebuild docker image(s) instead of using existing")
        flags.Usage = func() {
                fmt.Fprint(flags.Output(), `Usage: arvados-package <subcommand> [options]
@@ -105,6 +111,11 @@ Automation/integration notes:
        image, and be prepared to rebuild that VM image when package-building
        slows down (this will happen when new dependencies are introduced).
 
+       The "build" subcommand, if successful, also runs
+       dpkg-scanpackages to create/replace Packages.gz in the package
+       dir. This enables the "testinstall" subcommand to list the
+       package dir as a source in /etc/apt/sources.*.
+
 Options:
 `)
                flags.PrintDefaults()
@@ -113,7 +124,7 @@ Options:
        if err != nil {
                return opts, err
        }
-       if len(flags.Args()) > 0 {
+       if flags.NArg() != 0 {
                return opts, fmt.Errorf("unrecognized command line arguments: %v", flags.Args())
        }
        if opts.SourceDir == "" {