pkg/volume/volume.go (25 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package volume
import (
"regexp"
"github.com/pkg/errors"
)
// Volume describes a Docker bind mounted volume.
type Volume struct {
Name string `yaml:"name"`
Source Source `yaml:",inline"`
}
// Validate checks whether Volume is well formed
func (v *Volume) Validate() error {
if v == nil {
return nil
}
if v.Name == "" {
return errors.New("volume name is empty")
}
var IsCorrectVolumeName = regexp.MustCompile(`^[a-zA-Z0-9-_]+$`).MatchString
if !IsCorrectVolumeName(v.Name) {
return errors.New("volume name is not well formed. Only use alphanumeric and - _")
}
if err := v.Source.Validate(); err != nil {
return err
}
return nil
}