forked from toolshed/abra
		
	refactor: put StripTagMeta into formatter package
Avoid circular import.
This commit is contained in:
		@ -23,7 +23,7 @@ func getImagePath(image string) (string, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	path := reference.Path(img)
 | 
						path := reference.Path(img)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	path = recipe.StripTagMeta(path)
 | 
						path = formatter.StripTagMeta(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	logrus.Debugf("parsed %s from %s", path, image)
 | 
						logrus.Debugf("parsed %s from %s", path, image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,8 +3,8 @@ package internal
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"coopcloud.tech/abra/pkg/formatter"
 | 
				
			||||||
	"coopcloud.tech/abra/pkg/recipe"
 | 
						"coopcloud.tech/abra/pkg/recipe"
 | 
				
			||||||
	recipePkg "coopcloud.tech/abra/pkg/recipe"
 | 
					 | 
				
			||||||
	"github.com/AlecAivazis/survey/v2"
 | 
						"github.com/AlecAivazis/survey/v2"
 | 
				
			||||||
	"github.com/docker/distribution/reference"
 | 
						"github.com/docker/distribution/reference"
 | 
				
			||||||
	"github.com/sirupsen/logrus"
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
@ -94,7 +94,7 @@ func GetMainAppImage(recipe recipe.Recipe) (string, error) {
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			path = reference.Path(img)
 | 
								path = reference.Path(img)
 | 
				
			||||||
			path = recipePkg.StripTagMeta(path)
 | 
								path = formatter.StripTagMeta(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			return path, nil
 | 
								return path, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
@ -143,7 +143,7 @@ func getImageVersions(recipe recipe.Recipe) (map[string]string, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		path := reference.Path(img)
 | 
							path := reference.Path(img)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		path = recipePkg.StripTagMeta(path)
 | 
							path = formatter.StripTagMeta(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		var tag string
 | 
							var tag string
 | 
				
			||||||
		switch img.(type) {
 | 
							switch img.(type) {
 | 
				
			||||||
 | 
				
			|||||||
@ -12,6 +12,7 @@ import (
 | 
				
			|||||||
	"coopcloud.tech/abra/pkg/autocomplete"
 | 
						"coopcloud.tech/abra/pkg/autocomplete"
 | 
				
			||||||
	"coopcloud.tech/abra/pkg/client"
 | 
						"coopcloud.tech/abra/pkg/client"
 | 
				
			||||||
	"coopcloud.tech/abra/pkg/config"
 | 
						"coopcloud.tech/abra/pkg/config"
 | 
				
			||||||
 | 
						"coopcloud.tech/abra/pkg/formatter"
 | 
				
			||||||
	recipePkg "coopcloud.tech/abra/pkg/recipe"
 | 
						recipePkg "coopcloud.tech/abra/pkg/recipe"
 | 
				
			||||||
	"coopcloud.tech/tagcmp"
 | 
						"coopcloud.tech/tagcmp"
 | 
				
			||||||
	"github.com/AlecAivazis/survey/v2"
 | 
						"github.com/AlecAivazis/survey/v2"
 | 
				
			||||||
@ -119,7 +120,7 @@ You may invoke this command in "wizard" mode and be prompted for input:
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			logrus.Debugf("retrieved %s from remote registry for %s", regVersions, image)
 | 
								logrus.Debugf("retrieved %s from remote registry for %s", regVersions, image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			image = recipePkg.StripTagMeta(image)
 | 
								image = formatter.StripTagMeta(image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			switch img.(type) {
 | 
								switch img.(type) {
 | 
				
			||||||
			case reference.NamedTagged:
 | 
								case reference.NamedTagged:
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"coopcloud.tech/abra/pkg/config"
 | 
						"coopcloud.tech/abra/pkg/config"
 | 
				
			||||||
 | 
						"coopcloud.tech/abra/pkg/formatter"
 | 
				
			||||||
	"coopcloud.tech/abra/pkg/upstream/stack"
 | 
						"coopcloud.tech/abra/pkg/upstream/stack"
 | 
				
			||||||
	loader "coopcloud.tech/abra/pkg/upstream/stack"
 | 
						loader "coopcloud.tech/abra/pkg/upstream/stack"
 | 
				
			||||||
	composetypes "github.com/docker/cli/cli/compose/types"
 | 
						composetypes "github.com/docker/cli/cli/compose/types"
 | 
				
			||||||
@ -57,7 +58,7 @@ func UpdateTag(pattern, image, tag, recipeName string) (bool, error) {
 | 
				
			|||||||
				return false, nil
 | 
									return false, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			composeImage := reference.Path(img)
 | 
								composeImage := formatter.StripTagMeta(reference.Path(img))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			logrus.Debugf("parsed %s from %s", composeTag, service.Image)
 | 
								logrus.Debugf("parsed %s from %s", composeTag, service.Image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -74,7 +75,7 @@ func UpdateTag(pattern, image, tag, recipeName string) (bool, error) {
 | 
				
			|||||||
				logrus.Debugf("updating %s to %s in %s", old, new, compose.Filename)
 | 
									logrus.Debugf("updating %s to %s in %s", old, new, compose.Filename)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if err := ioutil.WriteFile(compose.Filename, []byte(replacedBytes), 0764); err != nil {
 | 
									if err := ioutil.WriteFile(compose.Filename, []byte(replacedBytes), 0764); err != nil {
 | 
				
			||||||
					return true, err
 | 
										return false, err
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
				
			|||||||
@ -8,6 +8,7 @@ import (
 | 
				
			|||||||
	"github.com/docker/go-units"
 | 
						"github.com/docker/go-units"
 | 
				
			||||||
	"github.com/olekukonko/tablewriter"
 | 
						"github.com/olekukonko/tablewriter"
 | 
				
			||||||
	"github.com/schollz/progressbar/v3"
 | 
						"github.com/schollz/progressbar/v3"
 | 
				
			||||||
 | 
						"github.com/sirupsen/logrus"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func ShortenID(str string) string {
 | 
					func ShortenID(str string) string {
 | 
				
			||||||
@ -49,3 +50,22 @@ func CreateProgressbar(length int, title string) *progressbar.ProgressBar {
 | 
				
			|||||||
		progressbar.OptionSetDescription(title),
 | 
							progressbar.OptionSetDescription(title),
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// StripTagMeta strips front-matter image tag data that we don't need for parsing.
 | 
				
			||||||
 | 
					func StripTagMeta(image string) string {
 | 
				
			||||||
 | 
						originalImage := image
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if strings.Contains(image, "docker.io") {
 | 
				
			||||||
 | 
							image = strings.Split(image, "/")[1]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if strings.Contains(image, "library") {
 | 
				
			||||||
 | 
							image = strings.Split(image, "/")[1]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if originalImage != image {
 | 
				
			||||||
 | 
							logrus.Debugf("stripped %s to %s for parsing", originalImage, image)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return image
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -166,7 +166,7 @@ func (r Recipe) UpdateLabel(pattern, serviceName, label string) error {
 | 
				
			|||||||
func (r Recipe) UpdateTag(image, tag string) (bool, error) {
 | 
					func (r Recipe) UpdateTag(image, tag string) (bool, error) {
 | 
				
			||||||
	pattern := fmt.Sprintf("%s/%s/compose**yml", config.RECIPES_DIR, r.Name)
 | 
						pattern := fmt.Sprintf("%s/%s/compose**yml", config.RECIPES_DIR, r.Name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	image = StripTagMeta(image)
 | 
						image = formatter.StripTagMeta(image)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ok, err := compose.UpdateTag(pattern, image, tag, r.Name)
 | 
						ok, err := compose.UpdateTag(pattern, image, tag, r.Name)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@ -983,7 +983,7 @@ func GetRecipeVersions(recipeName, registryUsername, registryPassword string) (R
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			path := reference.Path(img)
 | 
								path := reference.Path(img)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			path = StripTagMeta(path)
 | 
								path = formatter.StripTagMeta(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			var tag string
 | 
								var tag string
 | 
				
			||||||
			switch img.(type) {
 | 
								switch img.(type) {
 | 
				
			||||||
@ -1050,25 +1050,6 @@ func GetRecipeCatalogueVersions(recipeName string, catl RecipeCatalogue) ([]stri
 | 
				
			|||||||
	return versions, nil
 | 
						return versions, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// StripTagMeta strips front-matter image tag data that we don't need for parsing.
 | 
					 | 
				
			||||||
func StripTagMeta(image string) string {
 | 
					 | 
				
			||||||
	originalImage := image
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if strings.Contains(image, "docker.io") {
 | 
					 | 
				
			||||||
		image = strings.Split(image, "/")[1]
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if strings.Contains(image, "library") {
 | 
					 | 
				
			||||||
		image = strings.Split(image, "/")[1]
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if originalImage != image {
 | 
					 | 
				
			||||||
		logrus.Debugf("stripped %s to %s for parsing", originalImage, image)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return image
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// EnsureCatalogue ensures that the catalogue is cloned locally & present.
 | 
					// EnsureCatalogue ensures that the catalogue is cloned locally & present.
 | 
				
			||||||
func EnsureCatalogue() error {
 | 
					func EnsureCatalogue() error {
 | 
				
			||||||
	catalogueDir := path.Join(config.ABRA_DIR, "catalogue")
 | 
						catalogueDir := path.Join(config.ABRA_DIR, "catalogue")
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user