Skip to content

ValidateRequiredFlags() and ValidateFlagGroups() should be executed before PersistentRunE() and PreRunE() #2013

Closed
@FLAGLORD

Description

@FLAGLORD

I'm a little confused why ValidateRequiredFlags() and ValidateFlagGroups() are executed after PersistentRunE() and PreRunE() in the current implementation. IMO, PersistentRunE() and PreRunE() can be set and controlled by developers, and all pre-check provided by cobra framework should throw error as soon as possible.

cobra/command.go

Lines 913 to 937 in fd865a4

for p := c; p != nil; p = p.Parent() {
if p.PersistentPreRunE != nil {
if err := p.PersistentPreRunE(c, argWoFlags); err != nil {
return err
}
break
} else if p.PersistentPreRun != nil {
p.PersistentPreRun(c, argWoFlags)
break
}
}
if c.PreRunE != nil {
if err := c.PreRunE(c, argWoFlags); err != nil {
return err
}
} else if c.PreRun != nil {
c.PreRun(c, argWoFlags)
}
if err := c.ValidateRequiredFlags(); err != nil {
return err
}
if err := c.ValidateFlagGroups(); err != nil {
return err
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions