forked from toolshed/abra
		
	feat: fetch all recipes when no recipe is specified (!401)
Closes coop-cloud/organising#530 Reviewed-on: coop-cloud/abra#401 Reviewed-by: decentral1se <decentral1se@noreply.git.coopcloud.tech> Co-authored-by: p4u1 <p4u1_f4u1@riseup.net> Co-committed-by: p4u1 <p4u1_f4u1@riseup.net>
This commit is contained in:
		@ -3,6 +3,7 @@ package recipe
 | 
			
		||||
import (
 | 
			
		||||
	"coopcloud.tech/abra/cli/internal"
 | 
			
		||||
	"coopcloud.tech/abra/pkg/autocomplete"
 | 
			
		||||
	"coopcloud.tech/abra/pkg/formatter"
 | 
			
		||||
	"coopcloud.tech/abra/pkg/recipe"
 | 
			
		||||
	"github.com/sirupsen/logrus"
 | 
			
		||||
	"github.com/urfave/cli"
 | 
			
		||||
@ -17,26 +18,31 @@ var recipeFetchCommand = cli.Command{
 | 
			
		||||
	Flags: []cli.Flag{
 | 
			
		||||
		internal.DebugFlag,
 | 
			
		||||
		internal.NoInputFlag,
 | 
			
		||||
		internal.OfflineFlag,
 | 
			
		||||
	},
 | 
			
		||||
	Before:       internal.SubCommandBefore,
 | 
			
		||||
	BashComplete: autocomplete.RecipeNameComplete,
 | 
			
		||||
	Action: func(c *cli.Context) error {
 | 
			
		||||
		recipeName := c.Args().First()
 | 
			
		||||
 | 
			
		||||
		if recipeName != "" {
 | 
			
		||||
			internal.ValidateRecipe(c)
 | 
			
		||||
			if err := recipe.Ensure(recipeName); err != nil {
 | 
			
		||||
				logrus.Fatal(err)
 | 
			
		||||
			}
 | 
			
		||||
			return nil
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := recipe.EnsureExists(recipeName); err != nil {
 | 
			
		||||
		catalogue, err := recipe.ReadRecipeCatalogue(internal.Offline)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			logrus.Fatal(err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := recipe.EnsureUpToDate(recipeName); err != nil {
 | 
			
		||||
			logrus.Fatal(err)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if err := recipe.EnsureLatest(recipeName); err != nil {
 | 
			
		||||
			logrus.Fatal(err)
 | 
			
		||||
		catlBar := formatter.CreateProgressbar(len(catalogue), "fetching latest recipes...")
 | 
			
		||||
		for recipeName := range catalogue {
 | 
			
		||||
			if err := recipe.Ensure(recipeName); err != nil {
 | 
			
		||||
				logrus.Error(err)
 | 
			
		||||
			}
 | 
			
		||||
			catlBar.Add(1)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return nil
 | 
			
		||||
 | 
			
		||||
@ -264,6 +264,20 @@ func (r Recipe) SampleEnv() (map[string]string, error) {
 | 
			
		||||
	return sampleEnv, nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Ensure makes sure the recipe exists, is up to date and has the latest version checked out.
 | 
			
		||||
func Ensure(recipeName string) error {
 | 
			
		||||
	if err := EnsureExists(recipeName); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := EnsureUpToDate(recipeName); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	if err := EnsureLatest(recipeName); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// EnsureExists ensures that a recipe is locally cloned
 | 
			
		||||
func EnsureExists(recipeName string) error {
 | 
			
		||||
	recipeDir := path.Join(config.RECIPES_DIR, recipeName)
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,17 @@ setup() {
 | 
			
		||||
  _common_setup
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "recipe fetch" {
 | 
			
		||||
@test "recipe fetch all" {
 | 
			
		||||
  run rm -rf "$ABRA_DIR/recipes/matrix-synapse"
 | 
			
		||||
  assert_success
 | 
			
		||||
  assert_not_exists "$ABRA_DIR/recipes/matrix-synapse"
 | 
			
		||||
 | 
			
		||||
  run $ABRA recipe fetch
 | 
			
		||||
  assert_success
 | 
			
		||||
  assert_exists "$ABRA_DIR/recipes/matrix-synapse"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@test "recipe fetch single recipe" {
 | 
			
		||||
  run rm -rf "$ABRA_DIR/recipes/matrix-synapse"
 | 
			
		||||
  assert_success
 | 
			
		||||
  assert_not_exists "$ABRA_DIR/recipes/matrix-synapse"
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user