-
Notifications
You must be signed in to change notification settings - Fork 203
/
parameterset.go
49 lines (42 loc) · 1.59 KB
/
parameterset.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package parameters
import (
"time"
"github.com/cnabio/cnab-go/schema"
"github.com/cnabio/cnab-go/valuesource"
)
const (
// DefaultSchemaVersion is the default SchemaVersion value
// set on new ParameterSet instances, and is the semver portion
// of CNABSpecVersion.
DefaultSchemaVersion = schema.Version("1.0.0-DRAFT+TODO")
// CNABSpecVersion represents the CNAB Spec version of the Parameters
// that this library implements.
// This value is prefixed with e.g. `cnab-parametersets-` so isn't itself valid semver.
CNABSpecVersion string = "cnab-parametersets-" + string(DefaultSchemaVersion)
)
// ParameterSet represents a collection of parameters and their
// sources/strategies for value resolution
type ParameterSet struct {
// SchemaVersion is the version of the parameter-set schema.
SchemaVersion schema.Version `json:"schemaVersion" yaml:"schemaVersion"`
// Name is the name of the parameter set.
Name string `json:"name" yaml:"name"`
// Created timestamp of the parameter set.
Created time.Time `json:"created" yaml:"created"`
// Modified timestamp of the parameter set.
Modified time.Time `json:"modified" yaml:"modified"`
// Parameters is a list of parameter specs.
Parameters []valuesource.Strategy `json:"parameters" yaml:"parameters"`
}
// NewParameterSet creates a new ParameterSet with the required fields initialized.
func NewParameterSet(name string, params ...valuesource.Strategy) ParameterSet {
now := time.Now()
ps := ParameterSet{
SchemaVersion: DefaultSchemaVersion,
Name: name,
Created: now,
Modified: now,
Parameters: params,
}
return ps
}