// Copyright 2016 The Kubernetes Authors All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package hapi.chart;

option go_package = "chart";

// Maintainer describes a Chart maintainer.
message Maintainer {
	// Name is a user name or organization name
	string name = 1;

	// Email is an optional email address to contact the named maintainer
	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.
//
// 	Spec: https://k8s.io/helm/blob/master/docs/design/chart_format.md#the-chart-file
message Metadata {
	enum Engine {
		UNKNOWN = 0;
		GOTPL = 1;
	}
	// The name of the chart
	string name = 1;

	// The URL to a relevant project page, git repo, or contact person
	string home = 2;

	// Source is the URL to the source code of this chart
	repeated string sources = 3;

	// A SemVer 2 conformant version string of the chart
	string version = 4;

	// A one-sentence description of the chart
	string description = 5;

	// A list of string keywords
	repeated string keywords = 6;

	// A list of name and URL/email address combinations for the maintainer(s)
	repeated Maintainer maintainers = 7;

	// The name of the template engine to use. Defaults to 'gotpl'.
	string engine = 8;

	// The URL to an icon file.
	string icon = 9;

	// The API Version of this chart.
	string apiVersion = 10;

	// The condition to check to enable chart
	string condition = 11;

	// The tags to check to enable chart
	string tags = 12;

	// The version of the application enclosed inside of this chart.
	string appVersion = 13;

	// Whether or not this chart is deprecated
	bool deprecated = 14;

	// TillerVersion is a SemVer constraints on what version of Tiller is required.
	// See SemVer ranges here: https://github.com/Masterminds/semver#basic-comparisons
	string tillerVersion = 15;

	// Annotations are additional mappings uninterpreted by Tiller,
	// made available for inspection by other applications.
	map<string,string> annotations = 16;

	// KubeVersion is a SemVer constraint specifying the version of Kubernetes required.
        string kubeVersion = 17;
}
