...
1
2 package cmd
3
4 import (
5 "context"
6 "fmt"
7 "os"
8
9 "edge-infra.dev/pkg/f8n/warehouse/lift"
10 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/apply"
11 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/flatten"
12 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/graph"
13 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/inspect"
14 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/pack"
15 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/pallet"
16 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/render"
17 "edge-infra.dev/pkg/f8n/warehouse/lift/cmd/warehouse"
18 "edge-infra.dev/pkg/lib/build/bazel"
19 "edge-infra.dev/pkg/lib/cli"
20 "edge-infra.dev/pkg/lib/cli/sink"
21 "edge-infra.dev/pkg/lib/runtime/version"
22 )
23
24
25
26 func New() (*sink.Command, error) {
27 cfg, err := lift.NewConfig()
28 if err != nil {
29 return nil, err
30 }
31
32 cmd := &sink.Command{
33 Use: "lift [command] [flags]",
34 Short: "lift is a tool for working with Warehouse packages",
35 Commands: []*sink.Command{
36 warehouse.New(cfg),
37 pack.New(cfg),
38 render.New(cfg),
39 apply.New(cfg),
40 flatten.New(cfg),
41 graph.New(cfg),
42 inspect.New(cfg),
43 pallet.New(),
44 cli.NewVersionCmd(version.New()),
45 },
46 }
47
48 return cmd, nil
49 }
50
51 func Run(ctx context.Context) error {
52
53 cwd, err := bazel.ResolveWd()
54 if err != nil {
55 fmt.Fprintln(os.Stderr, "error: failed to resolve working directory: ", err)
56 return err
57 }
58 if err := os.Chdir(cwd); err != nil {
59 fmt.Fprintln(os.Stderr, "error: failed to set working directory: ", err)
60 return err
61 }
62
63 c, err := New()
64 if err != nil {
65 fmt.Fprintln(os.Stderr, "error: failed to instantiate CLI: ", err)
66 return err
67 }
68
69 return c.ParseAndRun(ctx, os.Args[1:])
70 }
71
View as plain text