Skip to content

Commit

Permalink
refactor: moves project code to separate lib (#64)
Browse files Browse the repository at this point in the history
  • Loading branch information
jmgilman authored Oct 4, 2024
1 parent 3d77e66 commit 7de57df
Show file tree
Hide file tree
Showing 112 changed files with 604 additions and 499 deletions.
4 changes: 4 additions & 0 deletions cli/.earthlyignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Earthfile
README.md
LICENSE-*
blueprint.cue
4 changes: 2 additions & 2 deletions cli/Earthfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ deps:
ENV GOMODCACHE=/go/modcache
CACHE --persist --sharing shared /go

COPY ../lib/blueprint+src/src /lib/blueprint
COPY ../lib/project+src/src /lib/project
COPY ../lib/tools+src/src /lib/tools

COPY go.mod go.sum .
Expand All @@ -23,7 +23,7 @@ src:

CACHE --persist --sharing shared /go

COPY --dir cmd internal pkg tui .
COPY . .
RUN go generate ./...

check:
Expand Down
7 changes: 4 additions & 3 deletions cli/cmd/cmds/ci.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package cmds
import (
"log/slog"

"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/cli/tui/ci"
)

Expand All @@ -12,11 +13,11 @@ type CICmd struct {
Platform []string `short:"p" help:"Run the target with the given platform."`
}

func (c *CICmd) Run(logger *slog.Logger, global GlobalArgs) error {
func (c *CICmd) Run(ctx run.RunContext, logger *slog.Logger) error {
flags := RunCmd{
Artifact: c.Artifact,
Platform: c.Platform,
}
opts := generateOpts(&flags, &global)
return ci.Run(c.Path, global.Local, opts...)
opts := generateOpts(&flags, ctx)
return ci.Run(c.Path, ctx, opts...)
}
7 changes: 4 additions & 3 deletions cli/cmd/cmds/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ import (
"log/slog"

"github.com/input-output-hk/catalyst-forge/cli/pkg/deployment"
"github.com/input-output-hk/catalyst-forge/cli/pkg/secrets"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/lib/project/secrets"
)

type DeployCmd struct {
Project string `arg:"" help:"The path to the project to deploy."`
}

func (c *DeployCmd) Run(logger *slog.Logger, global GlobalArgs) error {
project, err := loadProject(global, c.Project, logger)
func (c *DeployCmd) Run(ctx run.RunContext, logger *slog.Logger) error {
project, err := loadProject(ctx, c.Project, logger)
if err != nil {
return fmt.Errorf("could not load project: %w", err)
}
Expand Down
6 changes: 4 additions & 2 deletions cli/cmd/cmds/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,17 @@ package cmds
import (
"fmt"
"log/slog"

"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
)

type DumpCmd struct {
Project string `arg:"" help:"Path to the project."`
Pretty bool `help:"Pretty print JSON output."`
}

func (c *DumpCmd) Run(logger *slog.Logger, global GlobalArgs) error {
project, err := loadProject(global, c.Project, logger)
func (c *DumpCmd) Run(ctx run.RunContext, logger *slog.Logger) error {
project, err := loadProject(ctx, c.Project, logger)
if err != nil {
return fmt.Errorf("could not load project: %w", err)
}
Expand Down
16 changes: 8 additions & 8 deletions cli/cmd/cmds/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ package cmds
import (
"log/slog"

"github.com/input-output-hk/catalyst-forge/cli/pkg/earthfile"
"github.com/input-output-hk/catalyst-forge/cli/pkg/executor"
"github.com/input-output-hk/catalyst-forge/cli/pkg/secrets"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/lib/project/secrets"
"github.com/input-output-hk/catalyst-forge/lib/tools/earthfile"
)

type RunCmd struct {
Expand All @@ -16,13 +17,13 @@ type RunCmd struct {
TargetArgs []string `arg:"" help:"Arguments to pass to the target." default:""`
}

func (c *RunCmd) Run(logger *slog.Logger, global GlobalArgs) error {
func (c *RunCmd) Run(ctx run.RunContext, logger *slog.Logger) error {
ref, err := earthfile.ParseEarthfileRef(c.Path)
if err != nil {
return err
}

project, err := loadProject(global, ref.Path, logger)
project, err := loadProject(ctx, ref.Path, logger)
if err != nil {
return err
}
Expand All @@ -32,11 +33,10 @@ func (c *RunCmd) Run(logger *slog.Logger, global GlobalArgs) error {
logger,
executor.WithRedirect(),
)
result, err := project.RunTarget(
runner := run.NewProjectRunner(ctx, localExec, logger, &project, secrets.NewDefaultSecretStore())
result, err := runner.RunTarget(
ref.Target,
localExec,
secrets.NewDefaultSecretStore(),
generateOpts(c, &global)...,
generateOpts(c, ctx)...,
)
if err != nil {
return err
Expand Down
13 changes: 6 additions & 7 deletions cli/cmd/cmds/scan.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ import (
"sort"

"cuelang.org/go/cue"
"github.com/input-output-hk/catalyst-forge/cli/pkg/project"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/cli/pkg/scan"
"github.com/input-output-hk/catalyst-forge/lib/tools/pkg/walker"
"github.com/input-output-hk/catalyst-forge/lib/project/project"
"github.com/input-output-hk/catalyst-forge/lib/tools/walker"
"golang.org/x/exp/maps"
)

Expand All @@ -23,11 +24,9 @@ type ScanCmd struct {
RootPath string `arg:"" help:"Root path to scan for Earthfiles and their respective targets."`
}

func (c *ScanCmd) Run(logger *slog.Logger, global GlobalArgs) error {
func (c *ScanCmd) Run(ctx run.RunContext, logger *slog.Logger) error {
walker := walker.NewDefaultFSWalker(logger)
loader := project.NewDefaultProjectLoader(
false,
false,
project.GetDefaultRuntimes(logger),
logger,
)
Expand Down Expand Up @@ -100,7 +99,7 @@ func (c *ScanCmd) Run(logger *slog.Logger, global GlobalArgs) error {
}
}

if global.CI {
if ctx.CI {
enumerated := make(map[string][]string)
for filter, targetMap := range result {
enumerated[filter] = enumerate(targetMap)
Expand All @@ -119,7 +118,7 @@ func (c *ScanCmd) Run(logger *slog.Logger, global GlobalArgs) error {
}
}

if global.CI {
if ctx.CI {
enumerated := enumerate(result)
sort.Strings(enumerated)
printJson(enumerated, c.Pretty)
Expand Down
13 changes: 7 additions & 6 deletions cli/cmd/cmds/secret.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import (
"log/slog"
"strings"

"github.com/input-output-hk/catalyst-forge/cli/pkg/secrets"
"github.com/input-output-hk/catalyst-forge/lib/blueprint/schema"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/lib/project/schema"
"github.com/input-output-hk/catalyst-forge/lib/project/secrets"
)

const (
Expand Down Expand Up @@ -35,12 +36,12 @@ type SecretCmd struct {
Set *Set `cmd:"" help:"Set a secret."`
}

func (c *Get) Run(logger *slog.Logger, global GlobalArgs) error {
func (c *Get) Run(ctx run.RunContext, logger *slog.Logger) error {
var path, provider string
var maps map[string]string

if c.Project != "" {
project, err := loadProject(global, c.Project, logger)
project, err := loadProject(ctx, c.Project, logger)
if err != nil {
return fmt.Errorf("could not load project: %w", err)
}
Expand Down Expand Up @@ -123,11 +124,11 @@ func (c *Get) Run(logger *slog.Logger, global GlobalArgs) error {
return nil
}

func (c *Set) Run(logger *slog.Logger, global GlobalArgs) error {
func (c *Set) Run(ctx run.RunContext, logger *slog.Logger) error {
var path, provider string

if c.Project != "" {
project, err := loadProject(global, c.Project, logger)
project, err := loadProject(ctx, c.Project, logger)
if err != nil {
return fmt.Errorf("could not load project: %w", err)
}
Expand Down
9 changes: 5 additions & 4 deletions cli/cmd/cmds/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import (
"fmt"
"log/slog"

p "github.com/input-output-hk/catalyst-forge/cli/pkg/project"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
p "github.com/input-output-hk/catalyst-forge/lib/project/project"
)

type TagCmd struct {
Expand All @@ -18,14 +19,14 @@ type TagOutput struct {
Git string `json:"git"`
}

func (c *TagCmd) Run(logger *slog.Logger, global GlobalArgs) error {
project, err := loadProject(global, c.Project, logger)
func (c *TagCmd) Run(ctx run.RunContext, logger *slog.Logger) error {
project, err := loadProject(ctx, c.Project, logger)
if err != nil {
return err
}

var output TagOutput
tagger := p.NewTagger(&project, global.CI, c.Trim, logger)
tagger := p.NewTagger(&project, ctx.CI, c.Trim, logger)

if project.Blueprint.Global.CI.Tagging.Strategy != "" {
tag, err := tagger.GenerateTag()
Expand Down
11 changes: 5 additions & 6 deletions cli/cmd/cmds/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ import (
"log/slog"

"github.com/input-output-hk/catalyst-forge/cli/pkg/earthly"
"github.com/input-output-hk/catalyst-forge/cli/pkg/project"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/lib/project/project"
)

type GlobalArgs struct {
Expand All @@ -29,15 +30,15 @@ func enumerate(data map[string][]string) []string {

// generateOpts generates the options for the Earthly executor based on command
// flags.
func generateOpts(flags *RunCmd, global *GlobalArgs) []earthly.EarthlyExecutorOption {
func generateOpts(flags *RunCmd, ctx run.RunContext) []earthly.EarthlyExecutorOption {
var opts []earthly.EarthlyExecutorOption

if flags != nil {
if flags.Artifact != "" {
opts = append(opts, earthly.WithArtifact(flags.Artifact))
}

if global.CI {
if ctx.CI {
opts = append(opts, earthly.WithCI())
}

Expand All @@ -55,10 +56,8 @@ func generateOpts(flags *RunCmd, global *GlobalArgs) []earthly.EarthlyExecutorOp
}

// loadProject loads the project from the given root path.
func loadProject(global GlobalArgs, rootPath string, logger *slog.Logger) (project.Project, error) {
func loadProject(ctx run.RunContext, rootPath string, logger *slog.Logger) (project.Project, error) {
loader := project.NewDefaultProjectLoader(
global.CI,
global.Local,
project.GetDefaultRuntimes(logger),
logger,
)
Expand Down
6 changes: 4 additions & 2 deletions cli/cmd/cmds/validate.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@ package cmds

import (
"log/slog"

"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
)

type ValidateCmd struct {
Project string `arg:"" help:"Path to the project."`
}

func (c *ValidateCmd) Run(logger *slog.Logger, global GlobalArgs) error {
_, err := loadProject(global, c.Project, logger)
func (c *ValidateCmd) Run(ctx run.RunContext, logger *slog.Logger) error {
_, err := loadProject(ctx, c.Project, logger)
if err != nil {
return err
}
Expand Down
10 changes: 8 additions & 2 deletions cli/cmd/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ import (
"github.com/alecthomas/kong"
"github.com/charmbracelet/log"
"github.com/input-output-hk/catalyst-forge/cli/cmd/cmds"
"github.com/input-output-hk/catalyst-forge/lib/blueprint/schema"
"github.com/input-output-hk/catalyst-forge/cli/pkg/run"
"github.com/input-output-hk/catalyst-forge/lib/project/schema"
)

var version = "dev"
Expand Down Expand Up @@ -61,7 +62,12 @@ func Run() int {
handler.SetLevel(log.DebugLevel)
}

ctx.Bind(slog.New(handler), cli.GlobalArgs)
runctx := run.RunContext{
CI: cli.GlobalArgs.CI,
Local: cli.GlobalArgs.Local,
Verbose: cli.GlobalArgs.Verbose,
}
ctx.Bind(runctx, slog.New(handler))

err := ctx.Run()
if err != nil {
Expand Down
Loading

0 comments on commit 7de57df

Please sign in to comment.