...
1
16
17 package mage
18
19 import (
20 "fmt"
21 "log"
22
23 "github.com/blang/semver/v4"
24 "github.com/uwu-tools/magex/pkg"
25 "github.com/uwu-tools/magex/shx"
26 )
27
28 const (
29
30 defaultZeitgeistVersion = "v0.4.3"
31 zeitgeistCmd = "zeitgeist"
32 zeitgeistModule = "sigs.k8s.io/zeitgeist"
33 )
34
35
36 func EnsureZeitgeist(version string) error {
37 if version == "" {
38 log.Printf(
39 "A zeitgeist version to install was not specified. Using default version: %s",
40 defaultZeitgeistVersion,
41 )
42
43 version = defaultZeitgeistVersion
44 }
45
46 if _, err := semver.ParseTolerant(version); err != nil {
47 return fmt.Errorf(
48 "%s was not SemVer-compliant, cannot continue: %w",
49 version, err,
50 )
51 }
52
53 if err := pkg.EnsurePackageWith(pkg.EnsurePackageOptions{
54 Name: zeitgeistModule,
55 DefaultVersion: version,
56 VersionCommand: "version",
57 }); err != nil {
58 return fmt.Errorf("ensuring package: %w", err)
59 }
60
61 return nil
62 }
63
64
65 func VerifyDeps(version, basePath, configPath string, localOnly bool) error {
66 if err := EnsureZeitgeist(version); err != nil {
67 return fmt.Errorf("ensuring zeitgeist is installed: %w", err)
68 }
69
70 args := []string{"validate"}
71 if localOnly {
72 args = append(args, "--local-only")
73 }
74
75 if basePath != "" {
76 args = append(args, "--base-path", basePath)
77 }
78
79 if configPath != "" {
80 args = append(args, "--config", configPath)
81 }
82
83 if err := shx.RunV(zeitgeistCmd, args...); err != nil {
84 return fmt.Errorf("running zeitgeist: %w", err)
85 }
86
87 return nil
88 }
89
90
116
View as plain text