Skip to content

Create a go generate command for generating/updating flag fields from comments #7

@arikkfir

Description

@arikkfir

It would be great if for a given struct field we could add comments for the different flag values like name, environment variable, description, etc - and have go generate create/update the corresponding Go struct tags for that field.

Example:

type MyConfig struct {
  // flag:description Everything you write from here until the
  //                  end of the comment group, including new lines
  //                  will be considered the flag's description.
  // flag:name        some-field
  // flag:env         HTTP_DEFAULT_RESPONSE_CODE
  // flag:value-name  CODE
  // flag:inherited
  ResponseCode int

  // flag:name        target
  // flag:env         HTTP_TARGET
  // flag:value-name  URL
  // flag:required
  TargetURL string

  // flag:args
  Args []string
}

This would result in the following struct:

type MyConfig struct {
  // flag:description Everything you write from here until the
  //                  end of the comment group, including new lines
  //                  will be considered the flag's description.
  // flag:name        some-field
  // flag:env         HTTP_DEFAULT_RESPONSE_CODE
  // flag:value-name  CODE
  // flag:inherited
  ResponseCode int `name:"some-field" env:"HTTP_DEFAULT_RESPONSE_CODE" valueName:"CODE" inherited:"true"`

  // flag:name        target
  // flag:env         HTTP_TARGET
  // flag:value-name  URL
  // flag:required
  TargetURL string `name:"target" env:"HTTP_TARGET" valueName:"URL" required:"true"`

  // flag:args
  Args []string `args:"true"`
}

The code generator would be idempotent, such that running it repeatedly would update the same tag and result in the same code, if the comments were unchanged.

Metadata

Metadata

Assignees

Labels

featureNew features and functionality

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions