func parseFlags()

in ci/internal/cli/mitresync.go [217:249]


func parseFlags(stdout io.Writer, args []string) (*mitreSyncFlags, error) {
	f := mitreSyncFlags{
		repo: "..",
	}

	fs := flag.NewFlagSet("mitresync", flag.ContinueOnError)
	fs.StringVar(&f.sinceCommit, "since-commit", "", "check for record file changes since commit SHA")
	fs.BoolVar(&f.update, "update", true, "update modified records on MITRE")
	fs.StringVar(&f.mitreBaseURL, "mitre-base-url", mitre.DefaultBaseURL, "base URL to use for MITRE API requests")
	fs.BoolVar(&f.dryrun, "dry-run", false, "don't perform data changing actions")
	fs.BoolVar(&f.debug, "debug", false, "log debugging information")

	if err := fs.Parse(args); err != nil {
		if errors.Is(err, flag.ErrHelp) {
			fs.Usage()
			return nil, err
		}

		return nil, fmt.Errorf("parsing flags: %w", err)
	}

	if f.sinceCommit == "" {
		f.sinceCommit = os.Getenv("CI_COMMIT_BEFORE_SHA")
	}

	f.args = fs.Args()

	if len(f.args) > 0 {
		f.repo = f.args[0]
	}

	return &f, nil
}