// Copyright 2018 The Cluster Monitoring Operator Authors
//
// 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.

package manifests

import (
	"errors"
	"strings"
)

type image struct {
	repo string
	tag  string
}

var InvalidImage = errors.New("image string invalid")

func imageFromString(s string) (*image, error) {
	parts := strings.Split(s, ":")

	if len(parts) < 2 {
		return nil, InvalidImage
	}

	return &image{
		repo: strings.Join(parts[0:len(parts)-1], ":"),
		tag:  parts[len(parts)-1],
	}, nil
}

func (i *image) String() string {
	return i.repo + ":" + i.tag
}

func (i *image) SetTagIfNotEmpty(tag string) {
	if tag != "" {
		i.tag = tag
	}
}
