feat(chart): Adding maintainer url

Each maintainer can have an optional URL. There are seceral use
cases for providing a URL instead of an email address:
- The case where a maintainer wants to hide their email address
  behind a webform for personal security
- When the maintainer is an organization and feedback should
  go to an issue queue

This change:
- Adds the proto field for url
- Updates the generated files for the chart proto
- Includes linting for the url
- Updates the docs to include the url

Closes #3056
pull/3060/head
Matt Farina 7 years ago
parent 4b6ecb459b
commit 22e5381251
No known key found for this signature in database
GPG Key ID: CDBDE65D3E544BF3

@ -25,6 +25,9 @@ message Maintainer {
// Email is an optional email address to contact the named maintainer // Email is an optional email address to contact the named maintainer
string email = 2; string email = 2;
// Url is an optional URL to an address for the named maintainer
string url = 3;
} }
// Metadata for a Chart file. This models the structure of a Chart.yaml file. // Metadata for a Chart file. This models the structure of a Chart.yaml file.

@ -52,6 +52,7 @@ sources:
maintainers: # (optional) maintainers: # (optional)
- name: The maintainer's name (required for each maintainer) - name: The maintainer's name (required for each maintainer)
email: The maintainer's email (optional for each maintainer) email: The maintainer's email (optional for each maintainer)
url: A URL for the maintainer (optional for each maintainer)
engine: gotpl # The name of the template engine (optional, defaults to gotpl) engine: gotpl # The name of the template engine (optional, defaults to gotpl)
icon: A URL to an SVG or PNG image to be used as an icon (optional). icon: A URL to an SVG or PNG image to be used as an icon (optional).
appVersion: The version of the app that this contains (optional). This needn't be SemVer. appVersion: The version of the app that this contains (optional). This needn't be SemVer.

@ -141,6 +141,8 @@ func validateChartMaintainer(cf *chart.Metadata) error {
return errors.New("each maintainer requires a name") return errors.New("each maintainer requires a name")
} else if maintainer.Email != "" && !govalidator.IsEmail(maintainer.Email) { } else if maintainer.Email != "" && !govalidator.IsEmail(maintainer.Email) {
return fmt.Errorf("invalid email '%s' for maintainer '%s'", maintainer.Email, maintainer.Name) return fmt.Errorf("invalid email '%s' for maintainer '%s'", maintainer.Email, maintainer.Name)
} else if maintainer.Url != "" && !govalidator.IsURL(maintainer.Url) {
return fmt.Errorf("invalid url '%s' for maintainer '%s'", maintainer.Url, maintainer.Name)
} }
} }
return nil return nil

@ -39,6 +39,8 @@ type Maintainer struct {
Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// Email is an optional email address to contact the named maintainer // Email is an optional email address to contact the named maintainer
Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"` Email string `protobuf:"bytes,2,opt,name=email" json:"email,omitempty"`
// Url is an optional URL to an address for the named maintainer
Url string `protobuf:"bytes,3,opt,name=url" json:"url,omitempty"`
} }
func (m *Maintainer) Reset() { *m = Maintainer{} } func (m *Maintainer) Reset() { *m = Maintainer{} }
@ -60,6 +62,13 @@ func (m *Maintainer) GetEmail() string {
return "" return ""
} }
func (m *Maintainer) GetUrl() string {
if m != nil {
return m.Url
}
return ""
}
// Metadata for a Chart file. This models the structure of a Chart.yaml file. // Metadata for a Chart file. This models the structure of a Chart.yaml file.
// //
// Spec: https://k8s.io/helm/blob/master/docs/design/chart_format.md#the-chart-file // Spec: https://k8s.io/helm/blob/master/docs/design/chart_format.md#the-chart-file
@ -226,31 +235,32 @@ func init() {
func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor2) } func init() { proto.RegisterFile("hapi/chart/metadata.proto", fileDescriptor2) }
var fileDescriptor2 = []byte{ var fileDescriptor2 = []byte{
// 412 bytes of a gzipped FileDescriptorProto // 420 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0x5d, 0x6b, 0xd5, 0x40, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x52, 0x5b, 0x6b, 0xd4, 0x40,
0x10, 0x35, 0xbd, 0x9f, 0x99, 0x58, 0x0d, 0x83, 0x94, 0xb5, 0x88, 0x84, 0x8b, 0x42, 0x9e, 0x52, 0x14, 0x36, 0xcd, 0xde, 0x72, 0x62, 0x35, 0x1c, 0xa4, 0x8c, 0x45, 0x24, 0x2c, 0x0a, 0xfb, 0xb4,
0x50, 0x90, 0xe2, 0x83, 0xa0, 0x50, 0xfa, 0xa0, 0xbd, 0x95, 0xe0, 0x07, 0xf8, 0xb6, 0x26, 0x43, 0x05, 0x7d, 0x29, 0x3e, 0x08, 0x0a, 0xa5, 0x82, 0x76, 0x2b, 0xc1, 0x0b, 0xf8, 0x36, 0x26, 0x87,
0xef, 0xd2, 0x64, 0x37, 0xec, 0x6e, 0x2b, 0xf7, 0x47, 0xfb, 0x1f, 0x64, 0x37, 0xd9, 0x26, 0x95, 0xee, 0xd0, 0x64, 0x26, 0x4c, 0x66, 0x2b, 0xfb, 0xa3, 0xfd, 0x0f, 0x32, 0x27, 0x49, 0x93, 0x95,
0xbe, 0xcd, 0x39, 0x67, 0xe6, 0xec, 0x9e, 0x61, 0xe0, 0xf9, 0x8e, 0x77, 0xe2, 0xa4, 0xda, 0x71, 0xbe, 0x7d, 0x97, 0x99, 0x6f, 0xe6, 0x1c, 0x3e, 0x78, 0xbe, 0x95, 0xb5, 0x3a, 0xcb, 0xb7, 0xd2,
0x6d, 0x4f, 0x5a, 0xb2, 0xbc, 0xe6, 0x96, 0x17, 0x9d, 0x56, 0x56, 0x21, 0x38, 0xa9, 0xf0, 0xd2, 0xba, 0xb3, 0x8a, 0x9c, 0x2c, 0xa4, 0x93, 0xeb, 0xda, 0x1a, 0x67, 0x10, 0xbc, 0xb5, 0x66, 0x6b,
0xe6, 0x1d, 0xc0, 0x05, 0x17, 0xd2, 0x72, 0x21, 0x49, 0x23, 0xc2, 0x5c, 0xf2, 0x96, 0x58, 0x94, 0xf9, 0x09, 0xe0, 0x4a, 0x2a, 0xed, 0xa4, 0xd2, 0x64, 0x11, 0x61, 0xa2, 0x65, 0x45, 0x22, 0x48,
0x45, 0x79, 0x5c, 0xfa, 0x1a, 0x9f, 0xc1, 0x82, 0x5a, 0x2e, 0x1a, 0x76, 0xe0, 0xc9, 0x1e, 0x6c, 0x83, 0x55, 0x94, 0x31, 0xc6, 0x67, 0x30, 0xa5, 0x4a, 0xaa, 0x52, 0x1c, 0xb1, 0xd8, 0x12, 0x4c,
0xfe, 0xce, 0x61, 0x7d, 0x31, 0xd8, 0x3e, 0x38, 0x86, 0x30, 0xdf, 0xa9, 0x96, 0x86, 0x29, 0x5f, 0x20, 0xdc, 0xd9, 0x52, 0x84, 0xac, 0x79, 0xb8, 0xfc, 0x3b, 0x81, 0xc5, 0x55, 0xf7, 0xd0, 0x83,
0x23, 0x83, 0x95, 0x51, 0x37, 0xba, 0x22, 0xc3, 0x66, 0xd9, 0x2c, 0x8f, 0xcb, 0x00, 0x9d, 0x72, 0x41, 0x08, 0x93, 0xad, 0xa9, 0xa8, 0xcb, 0x61, 0x8c, 0x02, 0xe6, 0x8d, 0xd9, 0xd9, 0x9c, 0x1a,
0x4b, 0xda, 0x08, 0x25, 0xd9, 0xdc, 0x0f, 0x04, 0x88, 0x19, 0x24, 0x35, 0x99, 0x4a, 0x8b, 0xce, 0x11, 0xa6, 0xe1, 0x2a, 0xca, 0x7a, 0xea, 0x9d, 0x3b, 0xb2, 0x8d, 0x32, 0x5a, 0x4c, 0xf8, 0x42,
0x3a, 0x75, 0xe1, 0xd5, 0x29, 0x85, 0xc7, 0xb0, 0xbe, 0xa6, 0xfd, 0x1f, 0xa5, 0x6b, 0xc3, 0x96, 0x4f, 0x31, 0x85, 0xb8, 0xa0, 0x26, 0xb7, 0xaa, 0x76, 0xde, 0x9d, 0xb2, 0x3b, 0x96, 0xf0, 0x14,
0xde, 0xf6, 0x0e, 0xe3, 0x29, 0x24, 0xed, 0x5d, 0x3c, 0xc3, 0x56, 0xd9, 0x2c, 0x4f, 0xde, 0x1c, 0x16, 0xb7, 0xb4, 0xff, 0x63, 0x6c, 0xd1, 0x88, 0x19, 0xc7, 0xde, 0x73, 0x3c, 0x87, 0xb8, 0xba,
0x15, 0xe3, 0x02, 0x8a, 0x31, 0x7d, 0x39, 0x6d, 0xc5, 0x23, 0x58, 0x92, 0xbc, 0x12, 0x92, 0xd8, 0x1f, 0xb8, 0x11, 0xf3, 0x34, 0x5c, 0xc5, 0x6f, 0x4e, 0xd6, 0xc3, 0x4a, 0xd6, 0xc3, 0x3e, 0xb2,
0xda, 0x3f, 0x39, 0x20, 0x97, 0x4b, 0x54, 0x4a, 0xb2, 0xb8, 0xcf, 0xe5, 0x6a, 0x7c, 0x09, 0xc0, 0xf1, 0x51, 0x3c, 0x81, 0x19, 0xe9, 0x1b, 0xa5, 0x49, 0x2c, 0xf8, 0xc9, 0x8e, 0xf9, 0xb9, 0x54,
0x3b, 0xf1, 0x63, 0x08, 0x00, 0x5e, 0x99, 0x30, 0xf8, 0x02, 0xe2, 0x4a, 0xc9, 0x5a, 0xf8, 0x04, 0x6e, 0xb4, 0x88, 0xda, 0xb9, 0x3c, 0xc6, 0x97, 0x00, 0xb2, 0x56, 0x3f, 0xba, 0x01, 0x80, 0x9d,
0x89, 0x97, 0x47, 0xc2, 0x39, 0x5a, 0x7e, 0x65, 0xd8, 0xe3, 0xde, 0xd1, 0xd5, 0xbd, 0x63, 0x17, 0x91, 0x82, 0x2f, 0x20, 0xca, 0x8d, 0x2e, 0x14, 0x4f, 0x10, 0xb3, 0x3d, 0x08, 0x3e, 0xd1, 0xc9,
0x1c, 0x0f, 0x83, 0x63, 0x60, 0x9c, 0x5e, 0x53, 0xa7, 0xa9, 0xe2, 0x96, 0x6a, 0xf6, 0x24, 0x8b, 0x9b, 0x46, 0x3c, 0x6e, 0x13, 0x3d, 0x6e, 0x13, 0xeb, 0x3e, 0xf1, 0xb8, 0x4f, 0xec, 0x15, 0xef,
0xf2, 0x75, 0x39, 0x61, 0xf0, 0x15, 0x1c, 0x5a, 0xd1, 0x34, 0xa4, 0x83, 0xc5, 0x53, 0x6f, 0x71, 0x17, 0x54, 0x5b, 0xca, 0xa5, 0xa3, 0x42, 0x3c, 0x49, 0x83, 0xd5, 0x22, 0x1b, 0x29, 0xf8, 0x0a,
0x9f, 0xc4, 0x73, 0x48, 0xb8, 0x94, 0xca, 0x72, 0xf7, 0x0f, 0xc3, 0x52, 0xbf, 0x9d, 0xd7, 0xf7, 0x8e, 0x9d, 0x2a, 0x4b, 0xb2, 0x7d, 0xc4, 0x53, 0x8e, 0x38, 0x14, 0xf1, 0x12, 0x62, 0xa9, 0xb5,
0xb6, 0x13, 0x2e, 0xe7, 0xe3, 0xd8, 0x77, 0x26, 0xad, 0xde, 0x97, 0xd3, 0xc9, 0xe3, 0x0f, 0x90, 0x71, 0xd2, 0xff, 0xa3, 0x11, 0x09, 0x6f, 0xe7, 0xf5, 0xc1, 0x76, 0xfa, 0x2e, 0x7d, 0x18, 0xce,
0xfe, 0xdf, 0x80, 0x29, 0xcc, 0xae, 0x69, 0x3f, 0xdc, 0x84, 0x2b, 0xdd, 0x25, 0xdd, 0xf2, 0xe6, 0x5d, 0x68, 0x67, 0xf7, 0xd9, 0xf8, 0xe6, 0xe9, 0x7b, 0x48, 0xfe, 0x3f, 0xe0, 0x3b, 0x73, 0x4b,
0x26, 0xdc, 0x44, 0x0f, 0xde, 0x1f, 0x9c, 0x46, 0x9b, 0x0c, 0x96, 0x67, 0xfd, 0x7a, 0x13, 0x58, 0xfb, 0xae, 0x13, 0x1e, 0xfa, 0x6e, 0xdd, 0xc9, 0x72, 0xd7, 0x77, 0xa2, 0x25, 0xef, 0x8e, 0xce,
0x7d, 0xdf, 0x7e, 0xde, 0x5e, 0xfe, 0xdc, 0xa6, 0x8f, 0x30, 0x86, 0xc5, 0xf9, 0xe5, 0xb7, 0xaf, 0x83, 0x65, 0x0a, 0xb3, 0x8b, 0x76, 0xbd, 0x31, 0xcc, 0xbf, 0x6f, 0x3e, 0x6f, 0xae, 0x7f, 0x6e,
0x5f, 0xd2, 0xe8, 0xd3, 0xea, 0xd7, 0xc2, 0xff, 0xe8, 0xf7, 0xd2, 0xdf, 0xf0, 0xdb, 0x7f, 0x01, 0x92, 0x47, 0x18, 0xc1, 0xf4, 0xf2, 0xfa, 0xdb, 0xd7, 0x2f, 0x49, 0xf0, 0x71, 0xfe, 0x6b, 0xca,
0x00, 0x00, 0xff, 0xff, 0xd7, 0x2b, 0xf5, 0x83, 0xe0, 0x02, 0x00, 0x00, 0x3f, 0xfa, 0x3d, 0xe3, 0x56, 0xbf, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x40, 0x4c, 0x34, 0x92,
0xf2, 0x02, 0x00, 0x00,
} }

Loading…
Cancel
Save