...

Source file src/edge-infra.dev/pkg/f8n/warehouse/lift/cmd/lift.go

Documentation: edge-infra.dev/pkg/f8n/warehouse/lift/cmd

     1  // Package cmd contains the lift CLI, for working with Edge Pallets.
     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  // New instantiates the Lift CLI, loading Warehouse configuration and binding
    25  // all flags.
    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  	// orient current working directory
    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