From 8858927fd45519ae7e75b3de82a40c3bb7c2899c Mon Sep 17 00:00:00 2001 From: Miguel Martinez Date: Fri, 19 Sep 2025 15:14:04 +0200 Subject: [PATCH 1/4] extract action opts Signed-off-by: Miguel Martinez --- app/cli/cmd/casbackend.go | 9 +++++---- app/cli/cmd/options/options.go | 14 ++++++++++++-- app/cli/cmd/root.go | 7 ++++--- app/cli/internal/action/action.go | 7 ------- app/cli/internal/action/apitoken_create.go | 5 +++-- app/cli/internal/action/apitoken_list.go | 5 +++-- app/cli/internal/action/apitoken_revoke.go | 5 +++-- app/cli/internal/action/artifact_download.go | 5 +++-- app/cli/internal/action/artifact_upload.go | 5 +++-- .../internal/action/attached_integration_add.go | 5 +++-- .../action/attached_integration_delete.go | 5 +++-- .../action/attached_integration_list.go | 5 +++-- app/cli/internal/action/attestation_add.go | 5 +++-- app/cli/internal/action/attestation_init.go | 5 +++-- app/cli/internal/action/attestation_push.go | 7 ++++--- app/cli/internal/action/attestation_reset.go | 5 +++-- app/cli/internal/action/attestation_status.go | 5 +++-- app/cli/internal/action/attestation_verify.go | 7 ++++--- .../action/available_integration_describe.go | 5 +++-- .../action/available_integration_list.go | 5 +++-- app/cli/internal/action/casbackend_add.go | 5 +++-- app/cli/internal/action/casbackend_delete.go | 5 +++-- app/cli/internal/action/casbackend_list.go | 5 +++-- app/cli/internal/action/casbackend_update.go | 5 +++-- .../internal/action/config_current_context.go | 5 +++-- app/cli/internal/action/delete_account.go | 5 +++-- app/cli/internal/action/membership_delete.go | 5 +++-- app/cli/internal/action/membership_leave.go | 5 +++-- app/cli/internal/action/membership_list.go | 5 +++-- app/cli/internal/action/membership_set.go | 5 +++-- app/cli/internal/action/membership_update.go | 5 +++-- app/cli/internal/action/org_create.go | 5 +++-- .../internal/action/org_invitation_create.go | 5 +++-- .../internal/action/org_invitation_list_sent.go | 5 +++-- .../internal/action/org_invitation_revoke.go | 5 +++-- app/cli/internal/action/org_update.go | 5 +++-- app/cli/internal/action/organization_delete.go | 5 +++-- app/cli/internal/action/plugin_actions.go | 17 +++++++++-------- app/cli/internal/action/policy_develop_eval.go | 5 +++-- app/cli/internal/action/policy_develop_init.go | 5 +++-- app/cli/internal/action/policy_develop_lint.go | 5 +++-- app/cli/internal/action/referrer_discover.go | 9 +++++---- .../action/registered_integration_add.go | 5 +++-- .../action/registered_integration_delete.go | 5 +++-- .../action/registered_integration_describe.go | 5 +++-- .../action/registered_integration_list.go | 5 +++-- .../internal/action/workflow_contract_create.go | 5 +++-- .../internal/action/workflow_contract_delete.go | 5 +++-- .../action/workflow_contract_describe.go | 5 +++-- .../internal/action/workflow_contract_list.go | 5 +++-- .../internal/action/workflow_contract_update.go | 5 +++-- app/cli/internal/action/workflow_create.go | 5 +++-- app/cli/internal/action/workflow_delete.go | 5 +++-- app/cli/internal/action/workflow_describe.go | 5 +++-- app/cli/internal/action/workflow_list.go | 5 +++-- .../internal/action/workflow_run_describe.go | 5 +++-- app/cli/internal/action/workflow_run_list.go | 5 +++-- app/cli/internal/action/workflow_update.go | 5 +++-- 58 files changed, 193 insertions(+), 134 deletions(-) diff --git a/app/cli/cmd/casbackend.go b/app/cli/cmd/casbackend.go index 3d6eaa5a6..048353772 100644 --- a/app/cli/cmd/casbackend.go +++ b/app/cli/cmd/casbackend.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -69,7 +70,7 @@ func newCASBackendUpdateCmd() *cobra.Command { // confirmDefaultCASBackendOverride asks the user to confirm the override of the default CAS backend // in the event that there is one already set and its not the same as the one we are setting -func confirmDefaultCASBackendOverride(actionOpts *action.ActionsOpts, id string) (bool, error) { +func confirmDefaultCASBackendOverride(actionOpts *options.ActionsOpts, id string) (bool, error) { // get existing backends backends, err := action.NewCASBackendList(actionOpts).Run() if err != nil { @@ -95,11 +96,11 @@ func confirmDefaultCASBackendOverride(actionOpts *action.ActionsOpts, id string) } // If we are removing the default we confirm too -func confirmDefaultCASBackendRemoval(actionOpts *action.ActionsOpts, name string) (bool, error) { +func confirmDefaultCASBackendRemoval(actionOpts *options.ActionsOpts, name string) (bool, error) { return confirmDefaultCASBackendUnset(name, "You are deleting the default CAS backend.", actionOpts) } -func confirmDefaultCASBackendUnset(name, msg string, actionOpts *action.ActionsOpts) (bool, error) { +func confirmDefaultCASBackendUnset(name, msg string, actionOpts *options.ActionsOpts) (bool, error) { // get existing backends backends, err := action.NewCASBackendList(actionOpts).Run() if err != nil { @@ -151,7 +152,7 @@ func captureUpdateFlags(cmd *cobra.Command) error { // handleDefaultUpdateConfirmation centralizes the confirmation logic when the --default flag // is provided. It returns (true, nil) when it's ok to proceed, (false, nil) when the user // declined confirmation, or (false, err) when an error happened. -func handleDefaultUpdateConfirmation(actionOpts *action.ActionsOpts, name string) (bool, error) { +func handleDefaultUpdateConfirmation(actionOpts *options.ActionsOpts, name string) (bool, error) { if isDefaultCASBackendUpdateOption == nil { return true, nil } diff --git a/app/cli/cmd/options/options.go b/app/cli/cmd/options/options.go index 439371a00..654de9db7 100644 --- a/app/cli/cmd/options/options.go +++ b/app/cli/cmd/options/options.go @@ -1,5 +1,5 @@ // -// Copyright 2023 The Chainloop Authors. +// Copyright 2023-2025 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -15,9 +15,19 @@ package options -import "github.com/spf13/cobra" +import ( + "github.com/rs/zerolog" + "github.com/spf13/cobra" + "google.golang.org/grpc" +) type Interface interface { // AddFlags adds this options' flags to the cobra command. AddFlags(cmd *cobra.Command) } + +type ActionsOpts struct { + CPConnection *grpc.ClientConn + Logger zerolog.Logger + AuthTokenRaw string +} diff --git a/app/cli/cmd/root.go b/app/cli/cmd/root.go index 0694fcb8d..a12044b8e 100644 --- a/app/cli/cmd/root.go +++ b/app/cli/cmd/root.go @@ -27,6 +27,7 @@ import ( "time" "github.com/adrg/xdg" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/app/cli/internal/telemetry" "github.com/chainloop-dev/chainloop/app/cli/internal/telemetry/posthog" @@ -44,7 +45,7 @@ var ( flagCfgFile string flagDebug bool flagOutputFormat string - actionOpts *action.ActionsOpts + actionOpts *options.ActionsOpts logger zerolog.Logger defaultCPAPI = "api.cp.chainloop.dev:443" defaultCASAPI = "api.cas.chainloop.dev:443" @@ -337,8 +338,8 @@ func initConfigFile() { cobra.CheckErr(viper.ReadInConfig()) } -func newActionOpts(logger zerolog.Logger, conn *grpc.ClientConn, token string) *action.ActionsOpts { - return &action.ActionsOpts{CPConnection: conn, Logger: logger, AuthTokenRaw: token} +func newActionOpts(logger zerolog.Logger, conn *grpc.ClientConn, token string) *options.ActionsOpts { + return &options.ActionsOpts{CPConnection: conn, Logger: logger, AuthTokenRaw: token} } func cleanup(conn *grpc.ClientConn) error { diff --git a/app/cli/internal/action/action.go b/app/cli/internal/action/action.go index f16c965e2..8ca95cc19 100644 --- a/app/cli/internal/action/action.go +++ b/app/cli/internal/action/action.go @@ -25,7 +25,6 @@ import ( "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/statemanager/filesystem" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/statemanager/remote" - "github.com/rs/zerolog" "google.golang.org/grpc" ) @@ -34,12 +33,6 @@ const ( PolicyViolationBlockingStrategyAdvisory = "ADVISORY" ) -type ActionsOpts struct { - CPConnection *grpc.ClientConn - Logger zerolog.Logger - AuthTokenRaw string -} - type OffsetPagination struct { Page int `json:"page"` PageSize int `json:"pageSize"` diff --git a/app/cli/internal/action/apitoken_create.go b/app/cli/internal/action/apitoken_create.go index b19421b48..fdd12e716 100644 --- a/app/cli/internal/action/apitoken_create.go +++ b/app/cli/internal/action/apitoken_create.go @@ -21,15 +21,16 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/durationpb" ) type APITokenCreate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewAPITokenCreate(cfg *ActionsOpts) *APITokenCreate { +func NewAPITokenCreate(cfg *options.ActionsOpts) *APITokenCreate { return &APITokenCreate{cfg} } diff --git a/app/cli/internal/action/apitoken_list.go b/app/cli/internal/action/apitoken_list.go index 489d53245..6842fa155 100644 --- a/app/cli/internal/action/apitoken_list.go +++ b/app/cli/internal/action/apitoken_list.go @@ -19,14 +19,15 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type APITokenList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewAPITokenList(cfg *ActionsOpts) *APITokenList { +func NewAPITokenList(cfg *options.ActionsOpts) *APITokenList { return &APITokenList{cfg} } diff --git a/app/cli/internal/action/apitoken_revoke.go b/app/cli/internal/action/apitoken_revoke.go index 6c57fc9bc..027b79fc9 100644 --- a/app/cli/internal/action/apitoken_revoke.go +++ b/app/cli/internal/action/apitoken_revoke.go @@ -19,14 +19,15 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type APITokenRevoke struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewAPITokenRevoke(cfg *ActionsOpts) *APITokenRevoke { +func NewAPITokenRevoke(cfg *options.ActionsOpts) *APITokenRevoke { return &APITokenRevoke{cfg} } diff --git a/app/cli/internal/action/artifact_download.go b/app/cli/internal/action/artifact_download.go index e6181b0ad..2d46b67a3 100644 --- a/app/cli/internal/action/artifact_download.go +++ b/app/cli/internal/action/artifact_download.go @@ -25,6 +25,7 @@ import ( "path" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/pkg/casclient" "github.com/jedib0t/go-pretty/v6/progress" "google.golang.org/grpc" @@ -33,13 +34,13 @@ import ( ) type ArtifactDownload struct { - *ActionsOpts + *options.ActionsOpts artifactsCASConn *grpc.ClientConn stdout io.Writer } type ArtifactDownloadOpts struct { - *ActionsOpts + *options.ActionsOpts ArtifactsCASConn *grpc.ClientConn Stdout io.Writer } diff --git a/app/cli/internal/action/artifact_upload.go b/app/cli/internal/action/artifact_upload.go index 11bf64fb6..80eff9de1 100644 --- a/app/cli/internal/action/artifact_upload.go +++ b/app/cli/internal/action/artifact_upload.go @@ -21,6 +21,7 @@ import ( "os" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/pkg/casclient" "github.com/jedib0t/go-pretty/v6/progress" "google.golang.org/grpc" @@ -31,12 +32,12 @@ type CASArtifact struct { } type ArtifactUpload struct { - *ActionsOpts + *options.ActionsOpts artifactsCASConn *grpc.ClientConn } type ArtifactUploadOpts struct { - *ActionsOpts + *options.ActionsOpts ArtifactsCASConn *grpc.ClientConn } diff --git a/app/cli/internal/action/attached_integration_add.go b/app/cli/internal/action/attached_integration_add.go index 98ea5ebdb..5b07740a3 100644 --- a/app/cli/internal/action/attached_integration_add.go +++ b/app/cli/internal/action/attached_integration_add.go @@ -19,14 +19,15 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) // Attach a third party integration to a workflow -type AttachedIntegrationAdd struct{ cfg *ActionsOpts } +type AttachedIntegrationAdd struct{ cfg *options.ActionsOpts } -func NewAttachedIntegrationAdd(cfg *ActionsOpts) *AttachedIntegrationAdd { +func NewAttachedIntegrationAdd(cfg *options.ActionsOpts) *AttachedIntegrationAdd { return &AttachedIntegrationAdd{cfg} } diff --git a/app/cli/internal/action/attached_integration_delete.go b/app/cli/internal/action/attached_integration_delete.go index a8958556c..7ff50e818 100644 --- a/app/cli/internal/action/attached_integration_delete.go +++ b/app/cli/internal/action/attached_integration_delete.go @@ -18,12 +18,13 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) -type AttachedIntegrationDelete struct{ cfg *ActionsOpts } +type AttachedIntegrationDelete struct{ cfg *options.ActionsOpts } -func NewAttachedIntegrationDelete(cfg *ActionsOpts) *AttachedIntegrationDelete { +func NewAttachedIntegrationDelete(cfg *options.ActionsOpts) *AttachedIntegrationDelete { return &AttachedIntegrationDelete{cfg} } diff --git a/app/cli/internal/action/attached_integration_list.go b/app/cli/internal/action/attached_integration_list.go index 13617d4cb..aff0dc54d 100644 --- a/app/cli/internal/action/attached_integration_list.go +++ b/app/cli/internal/action/attached_integration_list.go @@ -20,12 +20,13 @@ import ( "encoding/json" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) -type AttachedIntegrationList struct{ cfg *ActionsOpts } +type AttachedIntegrationList struct{ cfg *options.ActionsOpts } -func NewAttachedIntegrationList(cfg *ActionsOpts) *AttachedIntegrationList { +func NewAttachedIntegrationList(cfg *options.ActionsOpts) *AttachedIntegrationList { return &AttachedIntegrationList{cfg} } diff --git a/app/cli/internal/action/attestation_add.go b/app/cli/internal/action/attestation_add.go index f214c6a8e..4ad20624e 100644 --- a/app/cli/internal/action/attestation_add.go +++ b/app/cli/internal/action/attestation_add.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" api "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/api/attestation/v1" @@ -29,7 +30,7 @@ import ( ) type AttestationAddOpts struct { - *ActionsOpts + *options.ActionsOpts ArtifactsCASConn *grpc.ClientConn CASURI string CASCAPath string // optional CA certificate for the CAS connection @@ -45,7 +46,7 @@ type newCrafterOpts struct { } type AttestationAdd struct { - *ActionsOpts + *options.ActionsOpts casURI string // optional CA certificate for the CAS connection casCAPath string diff --git a/app/cli/internal/action/attestation_init.go b/app/cli/internal/action/attestation_init.go index 3374c9062..d39cbf6ef 100644 --- a/app/cli/internal/action/attestation_init.go +++ b/app/cli/internal/action/attestation_init.go @@ -21,6 +21,7 @@ import ( "fmt" "strconv" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/token" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" v1 "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" @@ -31,7 +32,7 @@ import ( ) type AttestationInitOpts struct { - *ActionsOpts + *options.ActionsOpts DryRun bool // Force the initialization and override any existing, in-progress ones. // Note that this is only useful when local-based attestation state is configured @@ -42,7 +43,7 @@ type AttestationInitOpts struct { } type AttestationInit struct { - *ActionsOpts + *options.ActionsOpts dryRun, force bool c *crafter.Crafter useRemoteState bool diff --git a/app/cli/internal/action/attestation_push.go b/app/cli/internal/action/attestation_push.go index 2cc3ce75f..581a4b190 100644 --- a/app/cli/internal/action/attestation_push.go +++ b/app/cli/internal/action/attestation_push.go @@ -22,6 +22,7 @@ import ( "os" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" @@ -35,7 +36,7 @@ import ( ) type AttestationPushOpts struct { - *ActionsOpts + *options.ActionsOpts KeyPath, CLIVersion, CLIDigest, BundlePath string LocalStatePath string @@ -57,7 +58,7 @@ type AttestationResult struct { } type AttestationPush struct { - *ActionsOpts + *options.ActionsOpts keyPath, cliVersion, cliDigest, bundlePath string localStatePath string signServerOpts *SignServerOpts @@ -221,7 +222,7 @@ func (action *AttestationPush) Run(ctx context.Context, attestationID string, ru workflow := crafter.CraftingState.Attestation.GetWorkflow() - attestationResult.Digest, err = pushToControlPlane(ctx, action.ActionsOpts.CPConnection, envelope, bundle, workflow.GetWorkflowRunId(), workflow.GetVersion().GetMarkAsReleased()) + attestationResult.Digest, err = pushToControlPlane(ctx, action.CPConnection, envelope, bundle, workflow.GetWorkflowRunId(), workflow.GetVersion().GetMarkAsReleased()) if err != nil { return nil, fmt.Errorf("pushing to control plane: %w", err) } diff --git a/app/cli/internal/action/attestation_reset.go b/app/cli/internal/action/attestation_reset.go index 321dfe641..d119b6e6e 100644 --- a/app/cli/internal/action/attestation_reset.go +++ b/app/cli/internal/action/attestation_reset.go @@ -19,6 +19,7 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" "github.com/go-kratos/kratos/v2/errors" @@ -28,12 +29,12 @@ const AttestationResetTriggerFailed = "failure" const AttestationResetTriggerCancelled = "cancellation" type AttestationResetOpts struct { - *ActionsOpts + *options.ActionsOpts LocalStatePath string } type AttestationReset struct { - *ActionsOpts + *options.ActionsOpts *newCrafterOpts localStatePath string } diff --git a/app/cli/internal/action/attestation_status.go b/app/cli/internal/action/attestation_status.go index cbee1af48..dd3d24206 100644 --- a/app/cli/internal/action/attestation_status.go +++ b/app/cli/internal/action/attestation_status.go @@ -20,6 +20,7 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" pbc "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" @@ -29,14 +30,14 @@ import ( ) type AttestationStatusOpts struct { - *ActionsOpts + *options.ActionsOpts UseAttestationRemoteState bool isPushed bool LocalStatePath string } type AttestationStatus struct { - *ActionsOpts + *options.ActionsOpts c *crafter.Crafter // Do not show information about the project version release status isPushed bool diff --git a/app/cli/internal/action/attestation_verify.go b/app/cli/internal/action/attestation_verify.go index f172f1a7e..f8e2cabac 100644 --- a/app/cli/internal/action/attestation_verify.go +++ b/app/cli/internal/action/attestation_verify.go @@ -20,6 +20,7 @@ import ( "errors" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/verifier" "github.com/sigstore/cosign/v2/pkg/blob" @@ -28,10 +29,10 @@ import ( ) type AttestationVerifyAction struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewAttestationVerifyAction(cfg *ActionsOpts) *AttestationVerifyAction { +func NewAttestationVerifyAction(cfg *options.ActionsOpts) *AttestationVerifyAction { return &AttestationVerifyAction{cfg} } @@ -44,7 +45,7 @@ func (action *AttestationVerifyAction) Run(ctx context.Context, fileOrURL string return verifyBundle(ctx, content, action.cfg) } -func verifyBundle(ctx context.Context, content []byte, opts *ActionsOpts) (bool, error) { +func verifyBundle(ctx context.Context, content []byte, opts *options.ActionsOpts) (bool, error) { sc := pb.NewSigningServiceClient(opts.CPConnection) trResp, err := sc.GetTrustedRoot(ctx, &pb.GetTrustedRootRequest{}) if err != nil { diff --git a/app/cli/internal/action/available_integration_describe.go b/app/cli/internal/action/available_integration_describe.go index 7b02cbd1f..63ad0157c 100644 --- a/app/cli/internal/action/available_integration_describe.go +++ b/app/cli/internal/action/available_integration_describe.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type AvailableIntegrationDescribe struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewAvailableIntegrationDescribe(cfg *ActionsOpts) *AvailableIntegrationDescribe { +func NewAvailableIntegrationDescribe(cfg *options.ActionsOpts) *AvailableIntegrationDescribe { return &AvailableIntegrationDescribe{cfg} } diff --git a/app/cli/internal/action/available_integration_list.go b/app/cli/internal/action/available_integration_list.go index 6a2dfbda6..e26ee099f 100644 --- a/app/cli/internal/action/available_integration_list.go +++ b/app/cli/internal/action/available_integration_list.go @@ -20,13 +20,14 @@ import ( "errors" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/app/controlplane/plugins/sdk/v1" "github.com/santhosh-tekuri/jsonschema/v5" ) type AvailableIntegrationList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type AvailableIntegrationItem struct { @@ -48,7 +49,7 @@ type JSONSchema struct { Properties sdk.SchemaPropertiesMap `json:"-"` } -func NewAvailableIntegrationList(cfg *ActionsOpts) *AvailableIntegrationList { +func NewAvailableIntegrationList(cfg *options.ActionsOpts) *AvailableIntegrationList { return &AvailableIntegrationList{cfg} } diff --git a/app/cli/internal/action/casbackend_add.go b/app/cli/internal/action/casbackend_add.go index 004c2e249..50be37f04 100644 --- a/app/cli/internal/action/casbackend_add.go +++ b/app/cli/internal/action/casbackend_add.go @@ -19,12 +19,13 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) type CASBackendAdd struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type NewCASBackendAddOpts struct { @@ -36,7 +37,7 @@ type NewCASBackendAddOpts struct { Credentials map[string]any } -func NewCASBackendAdd(cfg *ActionsOpts) *CASBackendAdd { +func NewCASBackendAdd(cfg *options.ActionsOpts) *CASBackendAdd { return &CASBackendAdd{cfg} } diff --git a/app/cli/internal/action/casbackend_delete.go b/app/cli/internal/action/casbackend_delete.go index 20dddcfe5..70bcd2001 100644 --- a/app/cli/internal/action/casbackend_delete.go +++ b/app/cli/internal/action/casbackend_delete.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type CASBackendDelete struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewCASBackendDelete(cfg *ActionsOpts) *CASBackendDelete { +func NewCASBackendDelete(cfg *options.ActionsOpts) *CASBackendDelete { return &CASBackendDelete{cfg} } diff --git a/app/cli/internal/action/casbackend_list.go b/app/cli/internal/action/casbackend_list.go index 85121f48f..8fa5ce5c9 100644 --- a/app/cli/internal/action/casbackend_list.go +++ b/app/cli/internal/action/casbackend_list.go @@ -19,11 +19,12 @@ import ( "context" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type CASBackendList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type CASBackendItem struct { @@ -54,7 +55,7 @@ const ( Invalid ValidationStatus = "invalid" ) -func NewCASBackendList(cfg *ActionsOpts) *CASBackendList { +func NewCASBackendList(cfg *options.ActionsOpts) *CASBackendList { return &CASBackendList{cfg} } diff --git a/app/cli/internal/action/casbackend_update.go b/app/cli/internal/action/casbackend_update.go index 592bd35d6..ff3efc2ab 100644 --- a/app/cli/internal/action/casbackend_update.go +++ b/app/cli/internal/action/casbackend_update.go @@ -19,12 +19,13 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) type CASBackendUpdate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type NewCASBackendUpdateOpts struct { @@ -34,7 +35,7 @@ type NewCASBackendUpdateOpts struct { Credentials map[string]any } -func NewCASBackendUpdate(cfg *ActionsOpts) *CASBackendUpdate { +func NewCASBackendUpdate(cfg *options.ActionsOpts) *CASBackendUpdate { return &CASBackendUpdate{cfg} } diff --git a/app/cli/internal/action/config_current_context.go b/app/cli/internal/action/config_current_context.go index ae01954bf..bf4a39ee5 100644 --- a/app/cli/internal/action/config_current_context.go +++ b/app/cli/internal/action/config_current_context.go @@ -19,14 +19,15 @@ import ( "context" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type ConfigCurrentContext struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewConfigCurrentContext(cfg *ActionsOpts) *ConfigCurrentContext { +func NewConfigCurrentContext(cfg *options.ActionsOpts) *ConfigCurrentContext { return &ConfigCurrentContext{cfg} } diff --git a/app/cli/internal/action/delete_account.go b/app/cli/internal/action/delete_account.go index d6b1a90ba..20b838983 100644 --- a/app/cli/internal/action/delete_account.go +++ b/app/cli/internal/action/delete_account.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type DeleteAccount struct { - *ActionsOpts + *options.ActionsOpts } -func NewDeleteAccount(cfg *ActionsOpts) *DeleteAccount { +func NewDeleteAccount(cfg *options.ActionsOpts) *DeleteAccount { return &DeleteAccount{cfg} } diff --git a/app/cli/internal/action/membership_delete.go b/app/cli/internal/action/membership_delete.go index 8c30ee98c..c998bf3fe 100644 --- a/app/cli/internal/action/membership_delete.go +++ b/app/cli/internal/action/membership_delete.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipDelete struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewMembershipDelete(cfg *ActionsOpts) *MembershipDelete { +func NewMembershipDelete(cfg *options.ActionsOpts) *MembershipDelete { return &MembershipDelete{cfg} } diff --git a/app/cli/internal/action/membership_leave.go b/app/cli/internal/action/membership_leave.go index 75c5bc327..dc66c560f 100644 --- a/app/cli/internal/action/membership_leave.go +++ b/app/cli/internal/action/membership_leave.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipLeave struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewMembershipLeave(cfg *ActionsOpts) *MembershipLeave { +func NewMembershipLeave(cfg *options.ActionsOpts) *MembershipLeave { return &MembershipLeave{cfg} } diff --git a/app/cli/internal/action/membership_list.go b/app/cli/internal/action/membership_list.go index 120ae61f0..7aee61b3c 100644 --- a/app/cli/internal/action/membership_list.go +++ b/app/cli/internal/action/membership_list.go @@ -21,11 +21,12 @@ import ( "strings" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type OrgItem struct { @@ -61,7 +62,7 @@ type ListMembershipResult struct { PaginationMeta *OffsetPagination } -func NewMembershipList(cfg *ActionsOpts) *MembershipList { +func NewMembershipList(cfg *options.ActionsOpts) *MembershipList { return &MembershipList{cfg} } diff --git a/app/cli/internal/action/membership_set.go b/app/cli/internal/action/membership_set.go index d0db30cee..5d896658f 100644 --- a/app/cli/internal/action/membership_set.go +++ b/app/cli/internal/action/membership_set.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipSetCurrent struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewMembershipSet(cfg *ActionsOpts) *MembershipSetCurrent { +func NewMembershipSet(cfg *options.ActionsOpts) *MembershipSetCurrent { return &MembershipSetCurrent{cfg} } diff --git a/app/cli/internal/action/membership_update.go b/app/cli/internal/action/membership_update.go index c74557cf3..577ff1bfe 100644 --- a/app/cli/internal/action/membership_update.go +++ b/app/cli/internal/action/membership_update.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipUpdate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewMembershipUpdate(cfg *ActionsOpts) *MembershipUpdate { +func NewMembershipUpdate(cfg *options.ActionsOpts) *MembershipUpdate { return &MembershipUpdate{cfg} } diff --git a/app/cli/internal/action/org_create.go b/app/cli/internal/action/org_create.go index 95574479b..09982016f 100644 --- a/app/cli/internal/action/org_create.go +++ b/app/cli/internal/action/org_create.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgCreate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewOrgCreate(cfg *ActionsOpts) *OrgCreate { +func NewOrgCreate(cfg *options.ActionsOpts) *OrgCreate { return &OrgCreate{cfg} } diff --git a/app/cli/internal/action/org_invitation_create.go b/app/cli/internal/action/org_invitation_create.go index 2747503fa..0c7d268d0 100644 --- a/app/cli/internal/action/org_invitation_create.go +++ b/app/cli/internal/action/org_invitation_create.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgInvitationCreate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewOrgInvitationCreate(cfg *ActionsOpts) *OrgInvitationCreate { +func NewOrgInvitationCreate(cfg *options.ActionsOpts) *OrgInvitationCreate { return &OrgInvitationCreate{cfg} } diff --git a/app/cli/internal/action/org_invitation_list_sent.go b/app/cli/internal/action/org_invitation_list_sent.go index c9bdca16e..2549cf973 100644 --- a/app/cli/internal/action/org_invitation_list_sent.go +++ b/app/cli/internal/action/org_invitation_list_sent.go @@ -19,11 +19,12 @@ import ( "context" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgInvitationListSent struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type OrgInvitationItem struct { @@ -36,7 +37,7 @@ type OrgInvitationItem struct { Role Role `json:"role"` } -func NewOrgInvitationListSent(cfg *ActionsOpts) *OrgInvitationListSent { +func NewOrgInvitationListSent(cfg *options.ActionsOpts) *OrgInvitationListSent { return &OrgInvitationListSent{cfg} } diff --git a/app/cli/internal/action/org_invitation_revoke.go b/app/cli/internal/action/org_invitation_revoke.go index 0199f0e7c..5fe969f03 100644 --- a/app/cli/internal/action/org_invitation_revoke.go +++ b/app/cli/internal/action/org_invitation_revoke.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgInvitationRevoke struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewOrgInvitationRevoke(cfg *ActionsOpts) *OrgInvitationRevoke { +func NewOrgInvitationRevoke(cfg *options.ActionsOpts) *OrgInvitationRevoke { return &OrgInvitationRevoke{cfg} } diff --git a/app/cli/internal/action/org_update.go b/app/cli/internal/action/org_update.go index 61e883681..cb9b49d9c 100644 --- a/app/cli/internal/action/org_update.go +++ b/app/cli/internal/action/org_update.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgUpdate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewOrgUpdate(cfg *ActionsOpts) *OrgUpdate { +func NewOrgUpdate(cfg *options.ActionsOpts) *OrgUpdate { return &OrgUpdate{cfg} } diff --git a/app/cli/internal/action/organization_delete.go b/app/cli/internal/action/organization_delete.go index 2637a2fce..19bc24575 100644 --- a/app/cli/internal/action/organization_delete.go +++ b/app/cli/internal/action/organization_delete.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrganizationDelete struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewOrganizationDelete(cfg *ActionsOpts) *OrganizationDelete { +func NewOrganizationDelete(cfg *options.ActionsOpts) *OrganizationDelete { return &OrganizationDelete{cfg} } diff --git a/app/cli/internal/action/plugin_actions.go b/app/cli/internal/action/plugin_actions.go index dbf01528b..f7965c015 100644 --- a/app/cli/internal/action/plugin_actions.go +++ b/app/cli/internal/action/plugin_actions.go @@ -21,24 +21,25 @@ import ( "os" "path/filepath" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/pkg/plugins" ) // PluginList handles listing installed plugins type PluginList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts manager *plugins.Manager } // PluginInfo handles showing detailed information about a specific plugin type PluginDescribe struct { - cfg *ActionsOpts + cfg *options.ActionsOpts manager *plugins.Manager } // PluginExec handles executing a command provided by a plugin type PluginExec struct { - cfg *ActionsOpts + cfg *options.ActionsOpts manager *plugins.Manager } @@ -63,7 +64,7 @@ type PluginExecResult struct { // PluginInstall handles downloading a plugin type PluginInstall struct { - cfg *ActionsOpts + cfg *options.ActionsOpts manager *plugins.Manager } @@ -80,7 +81,7 @@ type PluginInstallResult struct { } // NewPluginList creates a new PluginList action -func NewPluginList(cfg *ActionsOpts, manager *plugins.Manager) *PluginList { +func NewPluginList(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginList { return &PluginList{cfg: cfg, manager: manager} } @@ -105,7 +106,7 @@ func (action *PluginList) Run(_ context.Context) (*PluginListResult, error) { } // NewPluginDescribe creates a new NewPluginDescribe action -func NewPluginDescribe(cfg *ActionsOpts, manager *plugins.Manager) *PluginDescribe { +func NewPluginDescribe(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginDescribe { return &PluginDescribe{cfg: cfg, manager: manager} } @@ -124,7 +125,7 @@ func (action *PluginDescribe) Run(_ context.Context, pluginName string) (*Plugin } // NewPluginExec creates a new PluginExec action -func NewPluginExec(cfg *ActionsOpts, manager *plugins.Manager) *PluginExec { +func NewPluginExec(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginExec { return &PluginExec{cfg: cfg, manager: manager} } @@ -155,7 +156,7 @@ func (action *PluginExec) Run(ctx context.Context, pluginName string, commandNam } // NewPluginInstall creates a new PluginInstall action -func NewPluginInstall(cfg *ActionsOpts, manager *plugins.Manager) *PluginInstall { +func NewPluginInstall(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginInstall { return &PluginInstall{cfg: cfg, manager: manager} } diff --git a/app/cli/internal/action/policy_develop_eval.go b/app/cli/internal/action/policy_develop_eval.go index 708e28446..ee15cbda4 100644 --- a/app/cli/internal/action/policy_develop_eval.go +++ b/app/cli/internal/action/policy_develop_eval.go @@ -16,6 +16,7 @@ package action import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/policydevel" ) @@ -30,11 +31,11 @@ type PolicyEvalOpts struct { } type PolicyEval struct { - *ActionsOpts + *options.ActionsOpts opts *PolicyEvalOpts } -func NewPolicyEval(opts *PolicyEvalOpts, actionOpts *ActionsOpts) (*PolicyEval, error) { +func NewPolicyEval(opts *PolicyEvalOpts, actionOpts *options.ActionsOpts) (*PolicyEval, error) { return &PolicyEval{ ActionsOpts: actionOpts, opts: opts, diff --git a/app/cli/internal/action/policy_develop_init.go b/app/cli/internal/action/policy_develop_init.go index 735d3efc8..8fb2f3a6e 100644 --- a/app/cli/internal/action/policy_develop_init.go +++ b/app/cli/internal/action/policy_develop_init.go @@ -18,6 +18,7 @@ package action import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/policydevel" ) @@ -30,11 +31,11 @@ type PolicyInitOpts struct { } type PolicyInit struct { - *ActionsOpts + *options.ActionsOpts opts *PolicyInitOpts } -func NewPolicyInit(opts *PolicyInitOpts, actionOpts *ActionsOpts) (*PolicyInit, error) { +func NewPolicyInit(opts *PolicyInitOpts, actionOpts *options.ActionsOpts) (*PolicyInit, error) { return &PolicyInit{ ActionsOpts: actionOpts, opts: opts, diff --git a/app/cli/internal/action/policy_develop_lint.go b/app/cli/internal/action/policy_develop_lint.go index 259c4ec86..51afaf446 100644 --- a/app/cli/internal/action/policy_develop_lint.go +++ b/app/cli/internal/action/policy_develop_lint.go @@ -18,6 +18,7 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/policydevel" ) @@ -33,10 +34,10 @@ type PolicyLintResult struct { } type PolicyLint struct { - *ActionsOpts + *options.ActionsOpts } -func NewPolicyLint(actionOpts *ActionsOpts) (*PolicyLint, error) { +func NewPolicyLint(actionOpts *options.ActionsOpts) (*PolicyLint, error) { return &PolicyLint{ ActionsOpts: actionOpts, }, nil diff --git a/app/cli/internal/action/referrer_discover.go b/app/cli/internal/action/referrer_discover.go index 5dc4d49e8..1590279df 100644 --- a/app/cli/internal/action/referrer_discover.go +++ b/app/cli/internal/action/referrer_discover.go @@ -19,14 +19,15 @@ import ( "context" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type ReferrerDiscover struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type ReferrerDiscoverPublic struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type ReferrerItem struct { @@ -40,7 +41,7 @@ type ReferrerItem struct { Annotations map[string]string `json:"annotations,omitempty"` } -func NewReferrerDiscoverPrivate(cfg *ActionsOpts) *ReferrerDiscover { +func NewReferrerDiscoverPrivate(cfg *options.ActionsOpts) *ReferrerDiscover { return &ReferrerDiscover{cfg} } @@ -56,7 +57,7 @@ func (action *ReferrerDiscover) Run(ctx context.Context, digest, kind string) (* return pbReferrerItemToAction(resp.Result), nil } -func NewReferrerDiscoverPublicIndex(cfg *ActionsOpts) *ReferrerDiscoverPublic { +func NewReferrerDiscoverPublicIndex(cfg *options.ActionsOpts) *ReferrerDiscoverPublic { return &ReferrerDiscoverPublic{cfg} } diff --git a/app/cli/internal/action/registered_integration_add.go b/app/cli/internal/action/registered_integration_add.go index 1f55d3c7f..1a2ce4512 100644 --- a/app/cli/internal/action/registered_integration_add.go +++ b/app/cli/internal/action/registered_integration_add.go @@ -19,15 +19,16 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) type RegisteredIntegrationAdd struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewRegisteredIntegrationAdd(cfg *ActionsOpts) *RegisteredIntegrationAdd { +func NewRegisteredIntegrationAdd(cfg *options.ActionsOpts) *RegisteredIntegrationAdd { return &RegisteredIntegrationAdd{cfg} } diff --git a/app/cli/internal/action/registered_integration_delete.go b/app/cli/internal/action/registered_integration_delete.go index 92d2949e9..e44f0bbe7 100644 --- a/app/cli/internal/action/registered_integration_delete.go +++ b/app/cli/internal/action/registered_integration_delete.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type RegisteredIntegrationDelete struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewRegisteredIntegrationDelete(cfg *ActionsOpts) *RegisteredIntegrationDelete { +func NewRegisteredIntegrationDelete(cfg *options.ActionsOpts) *RegisteredIntegrationDelete { return &RegisteredIntegrationDelete{cfg} } diff --git a/app/cli/internal/action/registered_integration_describe.go b/app/cli/internal/action/registered_integration_describe.go index bfc6d1598..639b04ff7 100644 --- a/app/cli/internal/action/registered_integration_describe.go +++ b/app/cli/internal/action/registered_integration_describe.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type RegisteredIntegrationDescribe struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewRegisteredIntegrationDescribe(cfg *ActionsOpts) *RegisteredIntegrationDescribe { +func NewRegisteredIntegrationDescribe(cfg *options.ActionsOpts) *RegisteredIntegrationDescribe { return &RegisteredIntegrationDescribe{cfg} } diff --git a/app/cli/internal/action/registered_integration_list.go b/app/cli/internal/action/registered_integration_list.go index 690f73833..b14e69ab0 100644 --- a/app/cli/internal/action/registered_integration_list.go +++ b/app/cli/internal/action/registered_integration_list.go @@ -21,11 +21,12 @@ import ( "errors" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type RegisteredIntegrationList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type RegisteredIntegrationItem struct { @@ -40,7 +41,7 @@ type RegisteredIntegrationItem struct { Config map[string]interface{} `json:"config"` } -func NewRegisteredIntegrationList(cfg *ActionsOpts) *RegisteredIntegrationList { +func NewRegisteredIntegrationList(cfg *options.ActionsOpts) *RegisteredIntegrationList { return &RegisteredIntegrationList{cfg} } diff --git a/app/cli/internal/action/workflow_contract_create.go b/app/cli/internal/action/workflow_contract_create.go index d0de3933e..5960d76f1 100644 --- a/app/cli/internal/action/workflow_contract_create.go +++ b/app/cli/internal/action/workflow_contract_create.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractCreate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowContractCreate(cfg *ActionsOpts) *WorkflowContractCreate { +func NewWorkflowContractCreate(cfg *options.ActionsOpts) *WorkflowContractCreate { return &WorkflowContractCreate{cfg} } diff --git a/app/cli/internal/action/workflow_contract_delete.go b/app/cli/internal/action/workflow_contract_delete.go index cf7038464..5abca0e37 100644 --- a/app/cli/internal/action/workflow_contract_delete.go +++ b/app/cli/internal/action/workflow_contract_delete.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractDelete struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowContractDelete(cfg *ActionsOpts) *WorkflowContractDelete { +func NewWorkflowContractDelete(cfg *options.ActionsOpts) *WorkflowContractDelete { return &WorkflowContractDelete{cfg} } diff --git a/app/cli/internal/action/workflow_contract_describe.go b/app/cli/internal/action/workflow_contract_describe.go index 8759ba821..249ec8058 100644 --- a/app/cli/internal/action/workflow_contract_describe.go +++ b/app/cli/internal/action/workflow_contract_describe.go @@ -18,11 +18,12 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractDescribe struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type WorkflowContractWithVersionItem struct { @@ -30,7 +31,7 @@ type WorkflowContractWithVersionItem struct { Revision *WorkflowContractVersionItem `json:"revision"` } -func NewWorkflowContractDescribe(cfg *ActionsOpts) *WorkflowContractDescribe { +func NewWorkflowContractDescribe(cfg *options.ActionsOpts) *WorkflowContractDescribe { return &WorkflowContractDescribe{cfg} } diff --git a/app/cli/internal/action/workflow_contract_list.go b/app/cli/internal/action/workflow_contract_list.go index 87989c9dd..eefb8e5bb 100644 --- a/app/cli/internal/action/workflow_contract_list.go +++ b/app/cli/internal/action/workflow_contract_list.go @@ -20,12 +20,13 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" schemav1 "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" ) type WorkflowContractList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type WorkflowContractItem struct { @@ -73,7 +74,7 @@ type ContractRawBody struct { Format string `json:"format"` } -func NewWorkflowContractList(cfg *ActionsOpts) *WorkflowContractList { +func NewWorkflowContractList(cfg *options.ActionsOpts) *WorkflowContractList { return &WorkflowContractList{cfg} } diff --git a/app/cli/internal/action/workflow_contract_update.go b/app/cli/internal/action/workflow_contract_update.go index da6c73570..af70efdac 100644 --- a/app/cli/internal/action/workflow_contract_update.go +++ b/app/cli/internal/action/workflow_contract_update.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractUpdate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowContractUpdate(cfg *ActionsOpts) *WorkflowContractUpdate { +func NewWorkflowContractUpdate(cfg *options.ActionsOpts) *WorkflowContractUpdate { return &WorkflowContractUpdate{cfg} } diff --git a/app/cli/internal/action/workflow_create.go b/app/cli/internal/action/workflow_create.go index ed3426220..e90215b41 100644 --- a/app/cli/internal/action/workflow_create.go +++ b/app/cli/internal/action/workflow_create.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowCreate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowCreate(cfg *ActionsOpts) *WorkflowCreate { +func NewWorkflowCreate(cfg *options.ActionsOpts) *WorkflowCreate { return &WorkflowCreate{cfg} } diff --git a/app/cli/internal/action/workflow_delete.go b/app/cli/internal/action/workflow_delete.go index 95767c764..a5c54ce8a 100644 --- a/app/cli/internal/action/workflow_delete.go +++ b/app/cli/internal/action/workflow_delete.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowDelete struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowDelete(cfg *ActionsOpts) *WorkflowDelete { +func NewWorkflowDelete(cfg *options.ActionsOpts) *WorkflowDelete { return &WorkflowDelete{cfg} } diff --git a/app/cli/internal/action/workflow_describe.go b/app/cli/internal/action/workflow_describe.go index 2d51b77fa..a134c0349 100644 --- a/app/cli/internal/action/workflow_describe.go +++ b/app/cli/internal/action/workflow_describe.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowDescribe struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowDescribe(cfg *ActionsOpts) *WorkflowDescribe { +func NewWorkflowDescribe(cfg *options.ActionsOpts) *WorkflowDescribe { return &WorkflowDescribe{cfg} } diff --git a/app/cli/internal/action/workflow_list.go b/app/cli/internal/action/workflow_list.go index c235718de..cec317c5b 100644 --- a/app/cli/internal/action/workflow_list.go +++ b/app/cli/internal/action/workflow_list.go @@ -20,11 +20,12 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type WorkflowItem struct { @@ -51,7 +52,7 @@ type WorkflowListResult struct { } // NewWorkflowList creates a new instance of WorkflowList -func NewWorkflowList(cfg *ActionsOpts) *WorkflowList { +func NewWorkflowList(cfg *options.ActionsOpts) *WorkflowList { return &WorkflowList{cfg} } diff --git a/app/cli/internal/action/workflow_run_describe.go b/app/cli/internal/action/workflow_run_describe.go index b5f6a2e54..02f779c3a 100644 --- a/app/cli/internal/action/workflow_run_describe.go +++ b/app/cli/internal/action/workflow_run_describe.go @@ -24,6 +24,7 @@ import ( "sort" "strings" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/renderer/chainloop" "github.com/chainloop-dev/chainloop/pkg/attestation/verifier" @@ -38,7 +39,7 @@ import ( ) type WorkflowRunDescribe struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type WorkflowRunItemFull struct { @@ -120,7 +121,7 @@ func (i *WorkflowRunAttestationItem) Statement() *intoto.Statement { return i.statement } -func NewWorkflowRunDescribe(cfg *ActionsOpts) *WorkflowRunDescribe { +func NewWorkflowRunDescribe(cfg *options.ActionsOpts) *WorkflowRunDescribe { return &WorkflowRunDescribe{cfg} } diff --git a/app/cli/internal/action/workflow_run_list.go b/app/cli/internal/action/workflow_run_list.go index 28ae50b9d..f90e8c91c 100644 --- a/app/cli/internal/action/workflow_run_list.go +++ b/app/cli/internal/action/workflow_run_list.go @@ -20,6 +20,7 @@ import ( "strings" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" v1 "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" ) @@ -36,7 +37,7 @@ var WorkflowRunStatus = func() map[string]pb.RunStatus { } type WorkflowRunList struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } type WorkflowRunItem struct { @@ -66,7 +67,7 @@ type PaginatedWorkflowRunItem struct { PaginationMeta *PaginationOpts } -func NewWorkflowRunList(cfg *ActionsOpts) *WorkflowRunList { +func NewWorkflowRunList(cfg *options.ActionsOpts) *WorkflowRunList { return &WorkflowRunList{cfg} } diff --git a/app/cli/internal/action/workflow_update.go b/app/cli/internal/action/workflow_update.go index 9f521f49d..f74750056 100644 --- a/app/cli/internal/action/workflow_update.go +++ b/app/cli/internal/action/workflow_update.go @@ -18,14 +18,15 @@ package action import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowUpdate struct { - cfg *ActionsOpts + cfg *options.ActionsOpts } -func NewWorkflowUpdate(cfg *ActionsOpts) *WorkflowUpdate { +func NewWorkflowUpdate(cfg *options.ActionsOpts) *WorkflowUpdate { return &WorkflowUpdate{cfg} } From a1086aff8df632e17843cd3065864280bd598987 Mon Sep 17 00:00:00 2001 From: Miguel Martinez Date: Fri, 19 Sep 2025 15:32:08 +0200 Subject: [PATCH 2/4] chore: refactor CLI Signed-off-by: Miguel Martinez --- app/cli/cmd/attached_integration_add.go | 3 +- app/cli/cmd/attached_integration_list.go | 5 +-- app/cli/cmd/attestation_add.go | 5 +-- app/cli/cmd/attestation_init.go | 3 +- app/cli/cmd/attestation_push.go | 5 +-- app/cli/cmd/attestation_status.go | 15 ++++---- app/cli/cmd/available_integration_describe.go | 7 ++-- app/cli/cmd/available_integration_list.go | 5 +-- app/cli/cmd/casbackend_add_azureblob.go | 3 +- app/cli/cmd/casbackend_add_oci.go | 3 +- app/cli/cmd/casbackend_add_s3.go | 3 +- app/cli/cmd/casbackend_list.go | 5 +-- app/cli/cmd/casbackend_update_azureblob.go | 3 +- app/cli/cmd/casbackend_update_inline.go | 3 +- app/cli/cmd/casbackend_update_oci.go | 3 +- app/cli/cmd/casbackend_update_s3.go | 3 +- app/cli/cmd/organization_apitoken_create.go | 5 +-- app/cli/cmd/organization_apitoken_list.go | 3 +- app/cli/cmd/organization_describe.go | 5 +-- app/cli/cmd/organization_invitation_create.go | 3 +- .../cmd/organization_invitation_list_sent.go | 5 +-- app/cli/cmd/organization_list.go | 5 +-- app/cli/cmd/organization_member_list.go | 5 +-- app/cli/cmd/organization_member_update.go | 3 +- app/cli/cmd/organization_set.go | 3 +- app/cli/cmd/{ => output}/output.go | 34 +++++++++---------- app/cli/cmd/plugins.go | 15 ++++---- app/cli/cmd/policy_develop_eval.go | 3 +- app/cli/cmd/policy_develop_lint.go | 3 +- app/cli/cmd/referrer_discover.go | 3 +- app/cli/cmd/registered_integration_add.go | 3 +- app/cli/cmd/registered_integration_list.go | 5 +-- app/cli/cmd/version.go | 5 +-- app/cli/cmd/workflow_contract_create.go | 3 +- app/cli/cmd/workflow_contract_describe.go | 11 +++--- app/cli/cmd/workflow_contract_list.go | 5 +-- app/cli/cmd/workflow_contract_update.go | 3 +- app/cli/cmd/workflow_create.go | 3 +- app/cli/cmd/workflow_describe.go | 3 +- app/cli/cmd/workflow_list.go | 5 +-- app/cli/cmd/workflow_update.go | 3 +- app/cli/cmd/workflow_workflow_run_describe.go | 19 ++++++----- app/cli/cmd/workflow_workflow_run_list.go | 5 +-- 43 files changed, 142 insertions(+), 100 deletions(-) rename app/cli/cmd/{ => output}/output.go (79%) diff --git a/app/cli/cmd/attached_integration_add.go b/app/cli/cmd/attached_integration_add.go index 203d050cc..de53f78f0 100644 --- a/app/cli/cmd/attached_integration_add.go +++ b/app/cli/cmd/attached_integration_add.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -61,7 +62,7 @@ func newAttachedIntegrationAttachCmd() *cobra.Command { return err } - return encodeOutput([]*action.AttachedIntegrationItem{res}, attachedIntegrationListTableOutput) + return output.EncodeOutput(flagOutputFormat, []*action.AttachedIntegrationItem{res}, attachedIntegrationListTableOutput) }, } diff --git a/app/cli/cmd/attached_integration_list.go b/app/cli/cmd/attached_integration_list.go index 9029741bd..3232ea593 100644 --- a/app/cli/cmd/attached_integration_list.go +++ b/app/cli/cmd/attached_integration_list.go @@ -20,6 +20,7 @@ import ( "strings" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -38,7 +39,7 @@ func newAttachedIntegrationListCmd() *cobra.Command { return err } - return encodeOutput(res, attachedIntegrationListTableOutput) + return output.EncodeOutput(flagOutputFormat, res, attachedIntegrationListTableOutput) }, } @@ -58,7 +59,7 @@ func attachedIntegrationListTableOutput(attachments []*action.AttachedIntegratio fmt.Println("Integrations attached to workflows") } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"ID", "Kind", "Config", "Workflow", "Attached At"}) for _, attachment := range attachments { wf := attachment.Workflow diff --git a/app/cli/cmd/attestation_add.go b/app/cli/cmd/attestation_add.go index d3bff30a5..c22ea374e 100644 --- a/app/cli/cmd/attestation_add.go +++ b/app/cli/cmd/attestation_add.go @@ -26,6 +26,7 @@ import ( "github.com/spf13/viper" "google.golang.org/grpc" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" schemaapi "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" "github.com/chainloop-dev/chainloop/pkg/resourceloader" @@ -118,7 +119,7 @@ func newAttestationAddCmd() *cobra.Command { return err } - return encodeOutput(resp, func(s *action.AttestationStatusMaterial) error { + return output.EncodeOutput(flagOutputFormat, resp, func(s *action.AttestationStatusMaterial) error { return displayMaterialInfo(s, policies[resp.Name]) }) }, @@ -168,7 +169,7 @@ func displayMaterialInfo(status *action.AttestationStatusMaterial, policyEvaluat return nil } - mt := newTableWriter() + mt := output.NewTableWriter() mt.AppendRow(table.Row{"Name", status.Material.Name}) mt.AppendRow(table.Row{"Type", status.Material.Type}) diff --git a/app/cli/cmd/attestation_init.go b/app/cli/cmd/attestation_init.go index 87b015f03..ca3c2874f 100644 --- a/app/cli/cmd/attestation_init.go +++ b/app/cli/cmd/attestation_init.go @@ -19,6 +19,7 @@ import ( "errors" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -129,7 +130,7 @@ func newAttestationInitCmd() *cobra.Command { logger.Warn().Msg("DEPRECATION WARNING: --project not set, this will be required in the near future") } - return encodeOutput(res, fullStatusTable) + return output.EncodeOutput(flagOutputFormat, res, fullStatusTable) }} // This option is only useful for local-based attestation states diff --git a/app/cli/cmd/attestation_push.go b/app/cli/cmd/attestation_push.go index 74d2aabba..117eed628 100644 --- a/app/cli/cmd/attestation_push.go +++ b/app/cli/cmd/attestation_push.go @@ -24,6 +24,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" ) @@ -106,7 +107,7 @@ func newAttestationPushCmd() *cobra.Command { res.Status.Digest = res.Digest // If we are returning the json format, we also want to render the attestation table as one property so it can also be consumed - if flagOutputFormat == formatJSON { + if flagOutputFormat == output.FormatJSON { // Render the attestation status to a string buf := &bytes.Buffer{} if err := fullStatusTableWithWriter(res.Status, buf); err != nil { @@ -117,7 +118,7 @@ func newAttestationPushCmd() *cobra.Command { } // In TABLE format, we render the attestation status - if err := encodeOutput(res.Status, fullStatusTable); err != nil { + if err := output.EncodeOutput(flagOutputFormat, res.Status, fullStatusTable); err != nil { return fmt.Errorf("failed to render output: %w", err) } diff --git a/app/cli/cmd/attestation_status.go b/app/cli/cmd/attestation_status.go index f6dcc6673..da4281468 100644 --- a/app/cli/cmd/attestation_status.go +++ b/app/cli/cmd/attestation_status.go @@ -28,6 +28,7 @@ import ( "github.com/muesli/reflow/wrap" "github.com/spf13/cobra" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/pkg/attestation/renderer/chainloop" ) @@ -58,12 +59,12 @@ func newAttestationStatusCmd() *cobra.Command { return err } - output := simpleStatusTable + outputF := simpleStatusTable if full { - output = fullStatusTable + outputF = fullStatusTable } - return encodeOutput(res, output) + return output.EncodeOutput(flagOutputFormat, res, outputF) }, } @@ -87,7 +88,7 @@ func fullStatusTableWithWriter(status *action.AttestationStatusResult, w io.Writ func attestationStatusTableOutput(status *action.AttestationStatusResult, w io.Writer, full bool) error { // General info table - gt := newTableWriterWithWriter(w) + gt := output.NewTableWriterWithWriter(w) gt.AppendRow(table.Row{"Initialized At", status.InitializedAt.Format(time.RFC822)}) gt.AppendSeparator() meta := status.WorkflowMeta @@ -154,7 +155,7 @@ func envVarsTable(status *action.AttestationStatusResult, w io.Writer, full bool if len(status.EnvVars) > 0 { // Env Variables table - evt := newTableWriterWithWriter(w) + evt := output.NewTableWriterWithWriter(w) evt.SetTitle("Env Variables") for k, v := range status.EnvVars { if v == "" { @@ -167,7 +168,7 @@ func envVarsTable(status *action.AttestationStatusResult, w io.Writer, full bool runnerVars := status.RunnerContext.EnvVars if len(runnerVars) > 0 && full { - evt := newTableWriterWithWriter(w) + evt := output.NewTableWriterWithWriter(w) evt.SetTitle("Runner context") for k, v := range runnerVars { if v == "" { @@ -190,7 +191,7 @@ func materialsTable(status *action.AttestationStatusResult, w io.Writer, full bo return strings.Compare(a.Name, b.Name) }) - mt := newTableWriterWithWriter(w) + mt := output.NewTableWriterWithWriter(w) mt.SetTitle("Materials") for _, m := range status.Materials { diff --git a/app/cli/cmd/available_integration_describe.go b/app/cli/cmd/available_integration_describe.go index fc139a4bd..68ca78b70 100644 --- a/app/cli/cmd/available_integration_describe.go +++ b/app/cli/cmd/available_integration_describe.go @@ -21,6 +21,7 @@ import ( "fmt" "sort" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/app/controlplane/plugins/sdk/v1" "github.com/jedib0t/go-pretty/v6/table" @@ -44,7 +45,7 @@ func newAvailableIntegrationDescribeCmd() *cobra.Command { return fmt.Errorf("integration %q not found", integrationName) } - return encodeOutput([]*action.AvailableIntegrationItem{item}, availableIntegrationDescribeTableOutput) + return output.EncodeOutput(flagOutputFormat, []*action.AvailableIntegrationItem{item}, availableIntegrationDescribeTableOutput) }, } @@ -97,7 +98,7 @@ func renderSchemaTable(tableTitle string, properties sdk.SchemaPropertiesMap) er return nil } - t := newTableWriter() + t := output.NewTableWriter() t.SetTitle(tableTitle) t.AppendHeader(table.Row{"Field", "Type", "Required", "Description"}) @@ -143,7 +144,7 @@ func renderSchemaRaw(tableTitle string, s string) error { return err } - rt := newTableWriter() + rt := output.NewTableWriter() rt.SetTitle(tableTitle) rt.AppendRow(table.Row{prettyAttachmentJSON.String()}) rt.Render() diff --git a/app/cli/cmd/available_integration_list.go b/app/cli/cmd/available_integration_list.go index 1cb5a1901..3948c6725 100644 --- a/app/cli/cmd/available_integration_list.go +++ b/app/cli/cmd/available_integration_list.go @@ -19,6 +19,7 @@ import ( "fmt" "strings" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -35,7 +36,7 @@ func newAvailableIntegrationListCmd() *cobra.Command { return err } - return encodeOutput(res, availableIntegrationListTableOutput) + return output.EncodeOutput(flagOutputFormat, res, availableIntegrationListTableOutput) }, } @@ -48,7 +49,7 @@ func availableIntegrationListTableOutput(items []*action.AvailableIntegrationIte return nil } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"Name", "Version", "Material Requirement", "Description"}) for _, i := range items { t.AppendRow(table.Row{i.Name, i.Version, strings.Join(i.SubscribedInputs, ", "), i.Description}) diff --git a/app/cli/cmd/casbackend_add_azureblob.go b/app/cli/cmd/casbackend_add_azureblob.go index 85a548040..d69368890 100644 --- a/app/cli/cmd/casbackend_add_azureblob.go +++ b/app/cli/cmd/casbackend_add_azureblob.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/pkg/blobmanager/azureblob" "github.com/go-kratos/kratos/v2/log" @@ -70,7 +71,7 @@ func newCASBackendAddAzureBlobStorageCmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/casbackend_add_oci.go b/app/cli/cmd/casbackend_add_oci.go index 591bd2bb3..eee9c75df 100644 --- a/app/cli/cmd/casbackend_add_oci.go +++ b/app/cli/cmd/casbackend_add_oci.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/go-kratos/kratos/v2/log" "github.com/spf13/cobra" @@ -65,7 +66,7 @@ func newCASBackendAddOCICmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/casbackend_add_s3.go b/app/cli/cmd/casbackend_add_s3.go index f9449c6c8..cfab425bf 100644 --- a/app/cli/cmd/casbackend_add_s3.go +++ b/app/cli/cmd/casbackend_add_s3.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/pkg/blobmanager/s3" "github.com/go-kratos/kratos/v2/log" @@ -74,7 +75,7 @@ func newCASBackendAddAWSS3Cmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/casbackend_list.go b/app/cli/cmd/casbackend_list.go index 8d1f40166..0c259c7a9 100644 --- a/app/cli/cmd/casbackend_list.go +++ b/app/cli/cmd/casbackend_list.go @@ -21,6 +21,7 @@ import ( "time" "code.cloudfoundry.org/bytefmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/muesli/reflow/wrap" @@ -38,7 +39,7 @@ func newCASBackendListCmd() *cobra.Command { return err } - return encodeOutput(res, casBackendListTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendListTableOutput) }, } @@ -56,7 +57,7 @@ func casBackendListTableOutput(backends []*action.CASBackendItem) error { return nil } - t := newTableWriter() + t := output.NewTableWriter() header := table.Row{"Name", "Location", "Provider", "Description", "Limits", "Default", "Status"} if full { header = append(header, "Created At", "Validated At") diff --git a/app/cli/cmd/casbackend_update_azureblob.go b/app/cli/cmd/casbackend_update_azureblob.go index 53a7b7817..b67ddceb9 100644 --- a/app/cli/cmd/casbackend_update_azureblob.go +++ b/app/cli/cmd/casbackend_update_azureblob.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/go-kratos/kratos/v2/log" "github.com/spf13/cobra" @@ -63,7 +64,7 @@ func newCASBackendUpdateAzureBlobCmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/casbackend_update_inline.go b/app/cli/cmd/casbackend_update_inline.go index 75640a2fe..ef96ee1d4 100644 --- a/app/cli/cmd/casbackend_update_inline.go +++ b/app/cli/cmd/casbackend_update_inline.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/go-kratos/kratos/v2/log" "github.com/spf13/cobra" @@ -53,7 +54,7 @@ func newCASBackendUpdateInlineCmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/casbackend_update_oci.go b/app/cli/cmd/casbackend_update_oci.go index d9909a018..1cae0e07b 100644 --- a/app/cli/cmd/casbackend_update_oci.go +++ b/app/cli/cmd/casbackend_update_oci.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/go-kratos/kratos/v2/log" "github.com/spf13/cobra" @@ -61,7 +62,7 @@ func newCASBackendUpdateOCICmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/casbackend_update_s3.go b/app/cli/cmd/casbackend_update_s3.go index e6e1b16b0..583171b70 100644 --- a/app/cli/cmd/casbackend_update_s3.go +++ b/app/cli/cmd/casbackend_update_s3.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/go-kratos/kratos/v2/log" "github.com/spf13/cobra" @@ -63,7 +64,7 @@ func newCASBackendUpdateAWSS3Cmd() *cobra.Command { return nil } - return encodeOutput(res, casBackendItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, casBackendItemTableOutput) }, } diff --git a/app/cli/cmd/organization_apitoken_create.go b/app/cli/cmd/organization_apitoken_create.go index 4f04aa2c5..de922abb4 100644 --- a/app/cli/cmd/organization_apitoken_create.go +++ b/app/cli/cmd/organization_apitoken_create.go @@ -20,6 +20,7 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -50,7 +51,7 @@ func newAPITokenCreateCmd() *cobra.Command { return nil } - return encodeOutput(res, apiTokenItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, apiTokenItemTableOutput) }, } @@ -76,7 +77,7 @@ func apiTokenListTableOutput(tokens []*action.APITokenItem) error { return nil } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"ID", "Name", "Scope", "Description", "Created At", "Expires At", "Revoked At", "Last used at"}) for _, p := range tokens { diff --git a/app/cli/cmd/organization_apitoken_list.go b/app/cli/cmd/organization_apitoken_list.go index 46a79edce..3ce1f0b20 100644 --- a/app/cli/cmd/organization_apitoken_list.go +++ b/app/cli/cmd/organization_apitoken_list.go @@ -20,6 +20,7 @@ import ( "fmt" "slices" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -53,7 +54,7 @@ func newAPITokenListCmd() *cobra.Command { return fmt.Errorf("listing API tokens: %w", err) } - return encodeOutput(res, apiTokenListTableOutput) + return output.EncodeOutput(flagOutputFormat, res, apiTokenListTableOutput) }, } diff --git a/app/cli/cmd/organization_describe.go b/app/cli/cmd/organization_describe.go index 3bf3a9b73..858acf6b7 100644 --- a/app/cli/cmd/organization_describe.go +++ b/app/cli/cmd/organization_describe.go @@ -19,6 +19,7 @@ import ( "fmt" "strings" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -35,7 +36,7 @@ func newOrganizationDescribeCmd() *cobra.Command { return err } - return encodeOutput(res, contextTableOutput) + return output.EncodeOutput(flagOutputFormat, res, contextTableOutput) }, } @@ -43,7 +44,7 @@ func newOrganizationDescribeCmd() *cobra.Command { } func contextTableOutput(config *action.ConfigContextItem) error { - gt := newTableWriter() + gt := output.NewTableWriter() gt.SetTitle("Current Context") gt.AppendRow(table.Row{"Logged in as", config.CurrentUser.PrintUserProfileWithEmail()}) gt.AppendSeparator() diff --git a/app/cli/cmd/organization_invitation_create.go b/app/cli/cmd/organization_invitation_create.go index 71db0a734..5bc964e5c 100644 --- a/app/cli/cmd/organization_invitation_create.go +++ b/app/cli/cmd/organization_invitation_create.go @@ -19,6 +19,7 @@ import ( "context" "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -47,7 +48,7 @@ func newOrganizationInvitationCreateCmd() *cobra.Command { return err } - return encodeOutput([]*action.OrgInvitationItem{res}, orgInvitationTableOutput) + return output.EncodeOutput(flagOutputFormat, []*action.OrgInvitationItem{res}, orgInvitationTableOutput) }, } diff --git a/app/cli/cmd/organization_invitation_list_sent.go b/app/cli/cmd/organization_invitation_list_sent.go index 5d22fc094..147f32ddc 100644 --- a/app/cli/cmd/organization_invitation_list_sent.go +++ b/app/cli/cmd/organization_invitation_list_sent.go @@ -20,6 +20,7 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -36,7 +37,7 @@ func newOrganizationInvitationListSentCmd() *cobra.Command { return err } - return encodeOutput(res, orgInvitationTableOutput) + return output.EncodeOutput(flagOutputFormat, res, orgInvitationTableOutput) }, } @@ -49,7 +50,7 @@ func orgInvitationTableOutput(items []*action.OrgInvitationItem) error { return nil } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"ID", "Receiver Email", "Role", "Status", "Created At"}) for _, i := range items { diff --git a/app/cli/cmd/organization_list.go b/app/cli/cmd/organization_list.go index e86da2d0b..dc20c6aec 100644 --- a/app/cli/cmd/organization_list.go +++ b/app/cli/cmd/organization_list.go @@ -19,6 +19,7 @@ import ( "fmt" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -38,7 +39,7 @@ func newOrganizationList() *cobra.Command { return err } - return encodeOutput(res, orgMembershipTableOutput) + return output.EncodeOutput(flagOutputFormat, res, orgMembershipTableOutput) }, } @@ -54,7 +55,7 @@ func orgMembershipTableOutput(items []*action.MembershipItem) error { // Get the current organization from viper configuration currentOrg := viper.GetString(confOptions.organization.viperKey) - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"Name", "Current", "Default", "Role", "Default Policy strategy", "Joined At"}) for _, i := range items { diff --git a/app/cli/cmd/organization_member_list.go b/app/cli/cmd/organization_member_list.go index a95c6e38c..714fc9d89 100644 --- a/app/cli/cmd/organization_member_list.go +++ b/app/cli/cmd/organization_member_list.go @@ -20,6 +20,7 @@ import ( "time" "github.com/chainloop-dev/chainloop/app/cli/cmd/options" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" @@ -83,7 +84,7 @@ func newOrganizationMemberList() *cobra.Command { return err } - if err := encodeOutput(res, orgMembershipsTableOutput); err != nil { + if err := output.EncodeOutput(flagOutputFormat, res, orgMembershipsTableOutput); err != nil { return err } @@ -112,7 +113,7 @@ func newOrganizationMemberList() *cobra.Command { } func orgMembershipsTableOutput(res *action.ListMembershipResult) error { - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"ID", "Email", "Role", "Joined At"}) for _, m := range res.Memberships { diff --git a/app/cli/cmd/organization_member_update.go b/app/cli/cmd/organization_member_update.go index d59adf331..f5575e041 100644 --- a/app/cli/cmd/organization_member_update.go +++ b/app/cli/cmd/organization_member_update.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -46,7 +47,7 @@ func newOrganizationMemberUpdateCmd() *cobra.Command { return err } - return encodeOutput(&action.ListMembershipResult{Memberships: []*action.MembershipItem{res}}, orgMembershipsTableOutput) + return output.EncodeOutput(flagOutputFormat, &action.ListMembershipResult{Memberships: []*action.MembershipItem{res}}, orgMembershipsTableOutput) }, } diff --git a/app/cli/cmd/organization_set.go b/app/cli/cmd/organization_set.go index d4f3ed137..976efaed0 100644 --- a/app/cli/cmd/organization_set.go +++ b/app/cli/cmd/organization_set.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -61,7 +62,7 @@ func newOrganizationSet() *cobra.Command { } logger.Info().Msg("Organization switched!") - return encodeOutput([]*action.MembershipItem{membership}, orgMembershipTableOutput) + return output.EncodeOutput(flagOutputFormat, []*action.MembershipItem{membership}, orgMembershipTableOutput) }, } diff --git a/app/cli/cmd/output.go b/app/cli/cmd/output/output.go similarity index 79% rename from app/cli/cmd/output.go rename to app/cli/cmd/output/output.go index a7f4d1434..826ae77da 100644 --- a/app/cli/cmd/output.go +++ b/app/cli/cmd/output/output.go @@ -1,5 +1,5 @@ // -// Copyright 2023-2025 The Chainloop Authors. +// Copyright 2025 The Chainloop Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package cmd +package output import ( "encoding/json" @@ -28,8 +28,10 @@ import ( "google.golang.org/protobuf/proto" ) -const formatJSON = "json" -const formatTable = "table" +const FormatJSON = "json" +const FormatTable = "table" + +var ErrOutputFormatNotImplemented = errors.New("format not implemented") // Supported list of tabulated data that can be rendered as a table type tabulatedData interface { @@ -58,25 +60,23 @@ type tabulatedData interface { *action.PolicyLintResult } -var ErrOutputFormatNotImplemented = errors.New("format not implemented") - // returns either json or table representation of the result -func encodeOutput[messageType tabulatedData, f func(messageType) error](v messageType, tableWriter f) error { +func EncodeOutput[messageType tabulatedData, f func(messageType) error](flagOutputFormat string, v messageType, tableWriter f) error { switch flagOutputFormat { - case formatJSON: - return encodeJSON(v) - case formatTable: + case FormatJSON: + return EncodeJSON(v) + case FormatTable: return tableWriter(v) default: return ErrOutputFormatNotImplemented } } -func encodeJSON(v interface{}) error { - return encodeJSONToWriter(v, os.Stdout) +func EncodeJSON(v interface{}) error { + return EncodeJSONToWriter(v, os.Stdout) } -func encodeProtoJSON(v proto.Message) error { +func EncodeProtoJSON(v proto.Message) error { options := protojson.MarshalOptions{ Multiline: true, Indent: " ", @@ -92,7 +92,7 @@ func encodeProtoJSON(v proto.Message) error { return nil } -func encodeJSONToWriter(v interface{}, w io.Writer) error { +func EncodeJSONToWriter(v interface{}, w io.Writer) error { encoder := json.NewEncoder(w) encoder.SetIndent("", " ") if err := encoder.Encode(v); err != nil { @@ -102,11 +102,11 @@ func encodeJSONToWriter(v interface{}, w io.Writer) error { return nil } -func newTableWriter() table.Writer { - return newTableWriterWithWriter(os.Stdout) +func NewTableWriter() table.Writer { + return NewTableWriterWithWriter(os.Stdout) } -func newTableWriterWithWriter(w io.Writer) table.Writer { +func NewTableWriterWithWriter(w io.Writer) table.Writer { tw := table.NewWriter() tw.SetStyle(table.StyleLight) tw.SetOutputMirror(w) diff --git a/app/cli/cmd/plugins.go b/app/cli/cmd/plugins.go index e57520507..cc3fa73c0 100644 --- a/app/cli/cmd/plugins.go +++ b/app/cli/cmd/plugins.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/app/cli/pkg/plugins" "github.com/jedib0t/go-pretty/v6/table" @@ -174,7 +175,7 @@ func newPluginListCmd() *cobra.Command { return err } - if flagOutputFormat == formatJSON { + if flagOutputFormat == output.FormatJSON { type pluginInfo struct { Name string `json:"name"` Version string `json:"version"` @@ -192,7 +193,7 @@ func newPluginListCmd() *cobra.Command { }) } - return encodeJSON(items) + return output.EncodeJSON(items) } pluginListTableOutput(result.Plugins) @@ -219,7 +220,7 @@ func newPluginDescribeCmd() *cobra.Command { return err } - if flagOutputFormat == formatJSON { + if flagOutputFormat == output.FormatJSON { type pluginDetail struct { Name string `json:"name"` Version string `json:"version"` @@ -236,7 +237,7 @@ func newPluginDescribeCmd() *cobra.Command { Commands: result.Plugin.Metadata.Commands, } - return encodeJSON(detail) + return output.EncodeJSON(detail) } pluginInfoTableOutput(result.Plugin) @@ -363,7 +364,7 @@ func pluginListTableOutput(plugins map[string]*plugins.LoadedPlugin) { return } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"Name", "Version", "Description", "Commands"}) for name, plugin := range plugins { @@ -380,7 +381,7 @@ func pluginListTableOutput(plugins map[string]*plugins.LoadedPlugin) { } func pluginInfoTableOutput(plugin *plugins.LoadedPlugin) { - t := newTableWriter() + t := output.NewTableWriter() t.SetTitle(fmt.Sprintf("Plugin: %s", plugin.Metadata.Name)) t.AppendSeparator() t.AppendRow(table.Row{"Version", plugin.Metadata.Version}) @@ -411,7 +412,7 @@ func pluginInfoFlagsTableOutput(plugin *plugins.LoadedPlugin) { } for _, cmd := range plugin.Metadata.Commands { - t := newTableWriter() + t := output.NewTableWriter() t.SetTitle(fmt.Sprintf("Command: %s", cmd.Name)) t.AppendSeparator() diff --git a/app/cli/cmd/policy_develop_eval.go b/app/cli/cmd/policy_develop_eval.go index 4aae0d702..e47df5fe8 100644 --- a/app/cli/cmd/policy_develop_eval.go +++ b/app/cli/cmd/policy_develop_eval.go @@ -19,6 +19,7 @@ import ( "fmt" "strings" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" schemaapi "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" "github.com/spf13/cobra" @@ -65,7 +66,7 @@ evaluates the policy against the provided material or attestation.`, return err } - return encodeJSON(result) + return output.EncodeJSON(result) }, } diff --git a/app/cli/cmd/policy_develop_lint.go b/app/cli/cmd/policy_develop_lint.go index 28d1f1500..15398c86c 100644 --- a/app/cli/cmd/policy_develop_lint.go +++ b/app/cli/cmd/policy_develop_lint.go @@ -19,6 +19,7 @@ import ( "fmt" "os" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -57,7 +58,7 @@ func newPolicyDevelopLintCmd() *cobra.Command { return nil } - if err := encodeOutput(result, policyLintTable); err != nil { + if err := output.EncodeOutput(flagOutputFormat, result, policyLintTable); err != nil { return fmt.Errorf("failed to encode output: %w", err) } return fmt.Errorf("%d issues found", len(result.Errors)) diff --git a/app/cli/cmd/referrer_discover.go b/app/cli/cmd/referrer_discover.go index 9607f7b3d..c1e66af15 100644 --- a/app/cli/cmd/referrer_discover.go +++ b/app/cli/cmd/referrer_discover.go @@ -18,6 +18,7 @@ package cmd import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -44,7 +45,7 @@ func newReferrerDiscoverCmd() *cobra.Command { } // NOTE: this is a preview/beta command, for now we only return JSON format - return encodeJSON(res) + return output.EncodeJSON(res) }, } diff --git a/app/cli/cmd/registered_integration_add.go b/app/cli/cmd/registered_integration_add.go index 0e531c348..484f50e0b 100644 --- a/app/cli/cmd/registered_integration_add.go +++ b/app/cli/cmd/registered_integration_add.go @@ -21,6 +21,7 @@ import ( "strconv" "strings" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/app/controlplane/plugins/sdk/v1" "github.com/santhosh-tekuri/jsonschema/v5" @@ -62,7 +63,7 @@ func newRegisteredIntegrationAddCmd() *cobra.Command { return err } - return encodeOutput(res, registeredIntegrationItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, registeredIntegrationItemTableOutput) }, } diff --git a/app/cli/cmd/registered_integration_list.go b/app/cli/cmd/registered_integration_list.go index 9a6279acf..987e79daa 100644 --- a/app/cli/cmd/registered_integration_list.go +++ b/app/cli/cmd/registered_integration_list.go @@ -20,6 +20,7 @@ import ( "strings" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -36,7 +37,7 @@ func newRegisteredIntegrationListCmd() *cobra.Command { return err } - return encodeOutput(res, registeredIntegrationListTableOutput) + return output.EncodeOutput(flagOutputFormat, res, registeredIntegrationListTableOutput) }, } @@ -56,7 +57,7 @@ func registeredIntegrationListTableOutput(items []*action.RegisteredIntegrationI fmt.Println("Integrations registered and configured in your organization") } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"Name", "Description", "Kind", "Config", "Created At"}) for _, i := range items { var options []string diff --git a/app/cli/cmd/version.go b/app/cli/cmd/version.go index c3ff8d1d4..596ecf698 100644 --- a/app/cli/cmd/version.go +++ b/app/cli/cmd/version.go @@ -23,6 +23,7 @@ import ( "io" "os" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/spf13/cobra" ) @@ -56,8 +57,8 @@ func NewVersionCmd() *cobra.Command { } } - if flagOutputFormat == formatJSON { - return encodeJSON(version) + if flagOutputFormat == output.FormatJSON { + return output.EncodeJSON(version) } fmt.Printf("Client Version: %s\n", version.Client) diff --git a/app/cli/cmd/workflow_contract_create.go b/app/cli/cmd/workflow_contract_create.go index 68f5f361b..492c97332 100644 --- a/app/cli/cmd/workflow_contract_create.go +++ b/app/cli/cmd/workflow_contract_create.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -37,7 +38,7 @@ func newWorkflowContractCreateCmd() *cobra.Command { } logger.Info().Msg("Contract created!") - return encodeOutput(res, contractItemTableOutput) + return output.EncodeOutput(flagOutputFormat, res, contractItemTableOutput) }, } diff --git a/app/cli/cmd/workflow_contract_describe.go b/app/cli/cmd/workflow_contract_describe.go index 16251af4f..d7ad72d66 100644 --- a/app/cli/cmd/workflow_contract_describe.go +++ b/app/cli/cmd/workflow_contract_describe.go @@ -23,6 +23,7 @@ import ( "strings" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -64,8 +65,8 @@ func encodeContractOutput(run *action.WorkflowContractWithVersionItem) error { logger.Info().Msg("To download the contract, run the command with the \"--output schema\" option") } - err := encodeOutput(run, contractDescribeTableOutput) - if err == nil || !errors.Is(err, ErrOutputFormatNotImplemented) { + err := output.EncodeOutput(flagOutputFormat, run, contractDescribeTableOutput) + if err == nil || !errors.Is(err, output.ErrOutputFormatNotImplemented) { return err } @@ -74,7 +75,7 @@ func encodeContractOutput(run *action.WorkflowContractWithVersionItem) error { fmt.Fprintln(os.Stdout, run.Revision.RawBody.Body) return nil default: - return ErrOutputFormatNotImplemented + return output.ErrOutputFormatNotImplemented } } @@ -82,7 +83,7 @@ func contractDescribeTableOutput(contractWithVersion *action.WorkflowContractWit revision := contractWithVersion.Revision c := contractWithVersion.Contract - t := newTableWriter() + t := output.NewTableWriter() t.SetTitle("Contract") t.AppendRow(table.Row{"Name", c.Name}) t.AppendSeparator() @@ -97,7 +98,7 @@ func contractDescribeTableOutput(contractWithVersion *action.WorkflowContractWit t.AppendRow(table.Row{"Revision Created At", revision.CreatedAt.Format(time.RFC822)}) t.Render() - vt := newTableWriter() + vt := output.NewTableWriter() vt.AppendRow(table.Row{revision.RawBody.Body}) vt.Render() diff --git a/app/cli/cmd/workflow_contract_list.go b/app/cli/cmd/workflow_contract_list.go index becf759dd..d838ecdbb 100644 --- a/app/cli/cmd/workflow_contract_list.go +++ b/app/cli/cmd/workflow_contract_list.go @@ -18,6 +18,7 @@ package cmd import ( "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -34,7 +35,7 @@ func newWorkflowContractListCmd() *cobra.Command { return err } - return encodeOutput(res, contractListTableOutput) + return output.EncodeOutput(flagOutputFormat, res, contractListTableOutput) }, } @@ -46,7 +47,7 @@ func contractItemTableOutput(contract *action.WorkflowContractItem) error { } func contractListTableOutput(contracts []*action.WorkflowContractItem) error { - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(table.Row{"Name", "Latest Revision", "Created At", "Updated At", "# Workflows", "Scope"}) for _, p := range contracts { diff --git a/app/cli/cmd/workflow_contract_update.go b/app/cli/cmd/workflow_contract_update.go index 94d086b1a..4414edd79 100644 --- a/app/cli/cmd/workflow_contract_update.go +++ b/app/cli/cmd/workflow_contract_update.go @@ -18,6 +18,7 @@ package cmd import ( "errors" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -47,7 +48,7 @@ func newWorkflowContractUpdateCmd() *cobra.Command { } logger.Info().Msg("Contract updated!") - return encodeOutput(res, contractDescribeTableOutput) + return output.EncodeOutput(flagOutputFormat, res, contractDescribeTableOutput) }, } diff --git a/app/cli/cmd/workflow_create.go b/app/cli/cmd/workflow_create.go index 56aa128de..c0700a11f 100644 --- a/app/cli/cmd/workflow_create.go +++ b/app/cli/cmd/workflow_create.go @@ -18,6 +18,7 @@ package cmd import ( "fmt" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" "google.golang.org/grpc/codes" @@ -74,7 +75,7 @@ func newWorkflowCreateCmd() *cobra.Command { } // Print the workflow table - if err := encodeOutput(wf, workflowItemTableOutput); err != nil { + if err := output.EncodeOutput(flagOutputFormat, wf, workflowItemTableOutput); err != nil { return fmt.Errorf("failed to print workflow: %w", err) } diff --git a/app/cli/cmd/workflow_describe.go b/app/cli/cmd/workflow_describe.go index 010bf6f51..bd527ef85 100644 --- a/app/cli/cmd/workflow_describe.go +++ b/app/cli/cmd/workflow_describe.go @@ -16,6 +16,7 @@ package cmd import ( + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -32,7 +33,7 @@ func newWorkflowDescribeCmd() *cobra.Command { return err } - return encodeOutput(wf, workflowItemTableOutput) + return output.EncodeOutput(flagOutputFormat, wf, workflowItemTableOutput) }, } diff --git a/app/cli/cmd/workflow_list.go b/app/cli/cmd/workflow_list.go index e58163c84..049585b6c 100644 --- a/app/cli/cmd/workflow_list.go +++ b/app/cli/cmd/workflow_list.go @@ -20,6 +20,7 @@ import ( "time" "github.com/chainloop-dev/chainloop/app/cli/cmd/options" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -60,7 +61,7 @@ func newWorkflowListCmd() *cobra.Command { return err } - if err := encodeOutput(res, WorkflowListTableOutput); err != nil { + if err := output.EncodeOutput(flagOutputFormat, res, WorkflowListTableOutput); err != nil { return err } @@ -99,7 +100,7 @@ func WorkflowListTableOutput(workflowListResult *action.WorkflowListResult) erro headerRow := table.Row{"Name", "Project", "Contract", "Public", "Runner", "Last Run status", "Created At"} headerRowFull := table.Row{"Name", "Description", "Project", "Team", "Contract", "Public", "Runner", "Last Run status", "Created At"} - t := newTableWriter() + t := output.NewTableWriter() if full { t.AppendHeader(headerRowFull) } else { diff --git a/app/cli/cmd/workflow_update.go b/app/cli/cmd/workflow_update.go index c49ff4119..96f4e5a60 100644 --- a/app/cli/cmd/workflow_update.go +++ b/app/cli/cmd/workflow_update.go @@ -18,6 +18,7 @@ package cmd import ( "context" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -52,7 +53,7 @@ func newWorkflowUpdateCmd() *cobra.Command { } logger.Info().Msg("Workflow updated!") - return encodeOutput(&action.WorkflowListResult{Workflows: []*action.WorkflowItem{res}}, WorkflowListTableOutput) + return output.EncodeOutput(flagOutputFormat, &action.WorkflowListResult{Workflows: []*action.WorkflowItem{res}}, WorkflowListTableOutput) }, } diff --git a/app/cli/cmd/workflow_workflow_run_describe.go b/app/cli/cmd/workflow_workflow_run_describe.go index 6b807a9c2..f2f4568b4 100644 --- a/app/cli/cmd/workflow_workflow_run_describe.go +++ b/app/cli/cmd/workflow_workflow_run_describe.go @@ -24,6 +24,7 @@ import ( "strings" "time" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/pkg/attestation/renderer/chainloop" "github.com/jedib0t/go-pretty/v6/table" @@ -107,7 +108,7 @@ func workflowRunDescribeTableOutput(run *action.WorkflowRunItemFull) error { wf := run.Workflow wr := run.WorkflowRun - gt := newTableWriter() + gt := output.NewTableWriter() gt.SetTitle("Workflow") gt.AppendRow(table.Row{"ID", wf.ID}) gt.AppendRow(table.Row{"Name", wf.Name}) @@ -181,7 +182,7 @@ func predicateV1Table(att *action.WorkflowRunAttestationItem) { // Materials materials := att.Materials if len(materials) > 0 { - mt := newTableWriter() + mt := output.NewTableWriter() mt.SetTitle("Materials") for _, m := range materials { @@ -225,7 +226,7 @@ func predicateV1Table(att *action.WorkflowRunAttestationItem) { envVars := att.EnvVars if len(envVars) > 0 { - mt := newTableWriter() + mt := output.NewTableWriter() mt.SetTitle("Environment Variables") header := table.Row{"Name", "Value"} @@ -272,14 +273,14 @@ func policiesTable(evs []*action.PolicyEvaluation, mt table.Writer) { func encodeAttestationOutput(run *action.WorkflowRunItemFull, writer io.Writer) error { // Try to encode as a table or json - err := encodeOutput(run, workflowRunDescribeTableOutput) + err := output.EncodeOutput(flagOutputFormat, run, workflowRunDescribeTableOutput) // It was correctly encoded, we are done if err == nil { return nil } // It could not be encoded but for a reason that's not because it was a custom format - if !errors.Is(err, ErrOutputFormatNotImplemented) { + if !errors.Is(err, output.ErrOutputFormatNotImplemented) { return err } @@ -291,7 +292,7 @@ func encodeAttestationOutput(run *action.WorkflowRunItemFull, writer io.Writer) switch flagOutputFormat { case formatStatement: - return encodeJSON(run.Attestation.Statement()) + return output.EncodeJSON(run.Attestation.Statement()) case formatAttestation: if run.Attestation.Bundle != nil { var bundle protobundle.Bundle @@ -299,14 +300,14 @@ func encodeAttestationOutput(run *action.WorkflowRunItemFull, writer io.Writer) if err != nil { return fmt.Errorf("unmarshaling attestation: %w", err) } - return encodeProtoJSON(&bundle) + return output.EncodeProtoJSON(&bundle) } else { - return encodeJSON(run.Attestation.Envelope) + return output.EncodeJSON(run.Attestation.Envelope) } case formatPayloadPAE: return encodePAE(run, writer) default: - return ErrOutputFormatNotImplemented + return output.ErrOutputFormatNotImplemented } } diff --git a/app/cli/cmd/workflow_workflow_run_list.go b/app/cli/cmd/workflow_workflow_run_list.go index 0d7c67dca..467ac4ed7 100644 --- a/app/cli/cmd/workflow_workflow_run_list.go +++ b/app/cli/cmd/workflow_workflow_run_list.go @@ -22,6 +22,7 @@ import ( "time" "github.com/chainloop-dev/chainloop/app/cli/cmd/options" + "github.com/chainloop-dev/chainloop/app/cli/cmd/output" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/jedib0t/go-pretty/v6/table" "github.com/spf13/cobra" @@ -61,7 +62,7 @@ func newWorkflowWorkflowRunListCmd() *cobra.Command { return err } - if err := encodeOutput(res.Result, workflowRunListTableOutput); err != nil { + if err := output.EncodeOutput(flagOutputFormat, res.Result, workflowRunListTableOutput); err != nil { return err } @@ -101,7 +102,7 @@ func workflowRunListTableOutput(runs []*action.WorkflowRunItem) error { header = append(header, "Finished At", "Failure reason") } - t := newTableWriter() + t := output.NewTableWriter() t.AppendHeader(header) for _, p := range runs { From efd5443e98d66d63aa4a190c8bdb4d5d7bae2502 Mon Sep 17 00:00:00 2001 From: Miguel Martinez Date: Fri, 19 Sep 2025 16:13:06 +0200 Subject: [PATCH 3/4] fix pointers Signed-off-by: Miguel Martinez --- app/cli/cmd/root.go | 15 +++++++++++++-- app/cli/main.go | 3 +-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/app/cli/cmd/root.go b/app/cli/cmd/root.go index a12044b8e..da9e9356a 100644 --- a/app/cli/cmd/root.go +++ b/app/cli/cmd/root.go @@ -88,7 +88,17 @@ func Execute(rootCmd *cobra.Command) error { return nil } -func NewRootCmd(l zerolog.Logger) *cobra.Command { +type RootCmd struct { + *cobra.Command + // ActionOpts is a pointer-to-pointer to the global actionOpts variable. + // This allows the RootCmd to reference the global state that gets initialized + // in PersistentPreRunE and used across all subcommands. The double indirection + // ensures that when the global actionOpts is updated (e.g., with new connection), + // all references automatically point to the updated value. + ActionOpts **options.ActionsOpts +} + +func NewRootCmd(l zerolog.Logger) *RootCmd { rootCmd := &cobra.Command{ Use: appName, Short: "Chainloop Command Line Interface", @@ -155,6 +165,7 @@ func NewRootCmd(l zerolog.Logger) *cobra.Command { if err != nil { return err } + actionOpts = newActionOpts(logger, conn, authToken) if !isTelemetryDisabled() { @@ -259,7 +270,7 @@ func NewRootCmd(l zerolog.Logger) *cobra.Command { } } - return rootCmd + return &RootCmd{Command: rootCmd, ActionOpts: &actionOpts} } // this could have been done using automatic + prefix but we want to have control and know the values diff --git a/app/cli/main.go b/app/cli/main.go index bbaf98712..19a5eed13 100644 --- a/app/cli/main.go +++ b/app/cli/main.go @@ -35,8 +35,7 @@ func main() { // Couldn't find an easier way to disable the timestamp logger := zerolog.New(zerolog.ConsoleWriter{Out: os.Stderr, FormatTimestamp: func(interface{}) string { return "" }}) rootCmd := cmd.NewRootCmd(logger) - // Run the command - if err := cmd.Execute(rootCmd); err != nil { + if err := cmd.Execute(rootCmd.Command); err != nil { msg, exitCode := errorInfo(err, logger) logger.Error().Msg(msg) os.Exit(exitCode) From 7285e321da2e7ea5344f7867a9106b6579e5d188 Mon Sep 17 00:00:00 2001 From: Miguel Martinez Date: Fri, 19 Sep 2025 16:22:12 +0200 Subject: [PATCH 4/4] revert Signed-off-by: Miguel Martinez --- app/cli/cmd/casbackend.go | 9 ++++----- app/cli/cmd/options/options.go | 8 -------- app/cli/cmd/root.go | 9 ++++----- app/cli/internal/action/action.go | 7 +++++++ app/cli/internal/action/apitoken_create.go | 5 ++--- app/cli/internal/action/apitoken_list.go | 5 ++--- app/cli/internal/action/apitoken_revoke.go | 5 ++--- app/cli/internal/action/artifact_download.go | 5 ++--- app/cli/internal/action/artifact_upload.go | 5 ++--- .../internal/action/attached_integration_add.go | 5 ++--- .../action/attached_integration_delete.go | 5 ++--- .../action/attached_integration_list.go | 5 ++--- app/cli/internal/action/attestation_add.go | 5 ++--- app/cli/internal/action/attestation_init.go | 5 ++--- app/cli/internal/action/attestation_push.go | 5 ++--- app/cli/internal/action/attestation_reset.go | 5 ++--- app/cli/internal/action/attestation_status.go | 5 ++--- app/cli/internal/action/attestation_verify.go | 7 +++---- .../action/available_integration_describe.go | 5 ++--- .../action/available_integration_list.go | 5 ++--- app/cli/internal/action/casbackend_add.go | 5 ++--- app/cli/internal/action/casbackend_delete.go | 5 ++--- app/cli/internal/action/casbackend_list.go | 5 ++--- app/cli/internal/action/casbackend_update.go | 5 ++--- .../internal/action/config_current_context.go | 5 ++--- app/cli/internal/action/delete_account.go | 5 ++--- app/cli/internal/action/membership_delete.go | 5 ++--- app/cli/internal/action/membership_leave.go | 5 ++--- app/cli/internal/action/membership_list.go | 5 ++--- app/cli/internal/action/membership_set.go | 5 ++--- app/cli/internal/action/membership_update.go | 5 ++--- app/cli/internal/action/org_create.go | 5 ++--- .../internal/action/org_invitation_create.go | 5 ++--- .../internal/action/org_invitation_list_sent.go | 5 ++--- .../internal/action/org_invitation_revoke.go | 5 ++--- app/cli/internal/action/org_update.go | 5 ++--- app/cli/internal/action/organization_delete.go | 5 ++--- app/cli/internal/action/plugin_actions.go | 17 ++++++++--------- app/cli/internal/action/policy_develop_eval.go | 5 ++--- app/cli/internal/action/policy_develop_init.go | 5 ++--- app/cli/internal/action/policy_develop_lint.go | 5 ++--- app/cli/internal/action/referrer_discover.go | 9 ++++----- .../action/registered_integration_add.go | 5 ++--- .../action/registered_integration_delete.go | 5 ++--- .../action/registered_integration_describe.go | 5 ++--- .../action/registered_integration_list.go | 5 ++--- .../internal/action/workflow_contract_create.go | 5 ++--- .../internal/action/workflow_contract_delete.go | 5 ++--- .../action/workflow_contract_describe.go | 5 ++--- .../internal/action/workflow_contract_list.go | 5 ++--- .../internal/action/workflow_contract_update.go | 5 ++--- app/cli/internal/action/workflow_create.go | 5 ++--- app/cli/internal/action/workflow_delete.go | 5 ++--- app/cli/internal/action/workflow_describe.go | 5 ++--- app/cli/internal/action/workflow_list.go | 5 ++--- .../internal/action/workflow_run_describe.go | 5 ++--- app/cli/internal/action/workflow_run_list.go | 5 ++--- app/cli/internal/action/workflow_update.go | 5 ++--- 58 files changed, 132 insertions(+), 189 deletions(-) diff --git a/app/cli/cmd/casbackend.go b/app/cli/cmd/casbackend.go index 048353772..3d6eaa5a6 100644 --- a/app/cli/cmd/casbackend.go +++ b/app/cli/cmd/casbackend.go @@ -18,7 +18,6 @@ package cmd import ( "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/spf13/cobra" ) @@ -70,7 +69,7 @@ func newCASBackendUpdateCmd() *cobra.Command { // confirmDefaultCASBackendOverride asks the user to confirm the override of the default CAS backend // in the event that there is one already set and its not the same as the one we are setting -func confirmDefaultCASBackendOverride(actionOpts *options.ActionsOpts, id string) (bool, error) { +func confirmDefaultCASBackendOverride(actionOpts *action.ActionsOpts, id string) (bool, error) { // get existing backends backends, err := action.NewCASBackendList(actionOpts).Run() if err != nil { @@ -96,11 +95,11 @@ func confirmDefaultCASBackendOverride(actionOpts *options.ActionsOpts, id string } // If we are removing the default we confirm too -func confirmDefaultCASBackendRemoval(actionOpts *options.ActionsOpts, name string) (bool, error) { +func confirmDefaultCASBackendRemoval(actionOpts *action.ActionsOpts, name string) (bool, error) { return confirmDefaultCASBackendUnset(name, "You are deleting the default CAS backend.", actionOpts) } -func confirmDefaultCASBackendUnset(name, msg string, actionOpts *options.ActionsOpts) (bool, error) { +func confirmDefaultCASBackendUnset(name, msg string, actionOpts *action.ActionsOpts) (bool, error) { // get existing backends backends, err := action.NewCASBackendList(actionOpts).Run() if err != nil { @@ -152,7 +151,7 @@ func captureUpdateFlags(cmd *cobra.Command) error { // handleDefaultUpdateConfirmation centralizes the confirmation logic when the --default flag // is provided. It returns (true, nil) when it's ok to proceed, (false, nil) when the user // declined confirmation, or (false, err) when an error happened. -func handleDefaultUpdateConfirmation(actionOpts *options.ActionsOpts, name string) (bool, error) { +func handleDefaultUpdateConfirmation(actionOpts *action.ActionsOpts, name string) (bool, error) { if isDefaultCASBackendUpdateOption == nil { return true, nil } diff --git a/app/cli/cmd/options/options.go b/app/cli/cmd/options/options.go index 654de9db7..f613cf4d1 100644 --- a/app/cli/cmd/options/options.go +++ b/app/cli/cmd/options/options.go @@ -16,18 +16,10 @@ package options import ( - "github.com/rs/zerolog" "github.com/spf13/cobra" - "google.golang.org/grpc" ) type Interface interface { // AddFlags adds this options' flags to the cobra command. AddFlags(cmd *cobra.Command) } - -type ActionsOpts struct { - CPConnection *grpc.ClientConn - Logger zerolog.Logger - AuthTokenRaw string -} diff --git a/app/cli/cmd/root.go b/app/cli/cmd/root.go index da9e9356a..5013e9e39 100644 --- a/app/cli/cmd/root.go +++ b/app/cli/cmd/root.go @@ -27,7 +27,6 @@ import ( "time" "github.com/adrg/xdg" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/action" "github.com/chainloop-dev/chainloop/app/cli/internal/telemetry" "github.com/chainloop-dev/chainloop/app/cli/internal/telemetry/posthog" @@ -45,7 +44,7 @@ var ( flagCfgFile string flagDebug bool flagOutputFormat string - actionOpts *options.ActionsOpts + actionOpts *action.ActionsOpts logger zerolog.Logger defaultCPAPI = "api.cp.chainloop.dev:443" defaultCASAPI = "api.cas.chainloop.dev:443" @@ -95,7 +94,7 @@ type RootCmd struct { // in PersistentPreRunE and used across all subcommands. The double indirection // ensures that when the global actionOpts is updated (e.g., with new connection), // all references automatically point to the updated value. - ActionOpts **options.ActionsOpts + ActionOpts **action.ActionsOpts } func NewRootCmd(l zerolog.Logger) *RootCmd { @@ -349,8 +348,8 @@ func initConfigFile() { cobra.CheckErr(viper.ReadInConfig()) } -func newActionOpts(logger zerolog.Logger, conn *grpc.ClientConn, token string) *options.ActionsOpts { - return &options.ActionsOpts{CPConnection: conn, Logger: logger, AuthTokenRaw: token} +func newActionOpts(logger zerolog.Logger, conn *grpc.ClientConn, token string) *action.ActionsOpts { + return &action.ActionsOpts{CPConnection: conn, Logger: logger, AuthTokenRaw: token} } func cleanup(conn *grpc.ClientConn) error { diff --git a/app/cli/internal/action/action.go b/app/cli/internal/action/action.go index 8ca95cc19..f16c965e2 100644 --- a/app/cli/internal/action/action.go +++ b/app/cli/internal/action/action.go @@ -25,6 +25,7 @@ import ( "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/statemanager/filesystem" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/statemanager/remote" + "github.com/rs/zerolog" "google.golang.org/grpc" ) @@ -33,6 +34,12 @@ const ( PolicyViolationBlockingStrategyAdvisory = "ADVISORY" ) +type ActionsOpts struct { + CPConnection *grpc.ClientConn + Logger zerolog.Logger + AuthTokenRaw string +} + type OffsetPagination struct { Page int `json:"page"` PageSize int `json:"pageSize"` diff --git a/app/cli/internal/action/apitoken_create.go b/app/cli/internal/action/apitoken_create.go index fdd12e716..b19421b48 100644 --- a/app/cli/internal/action/apitoken_create.go +++ b/app/cli/internal/action/apitoken_create.go @@ -21,16 +21,15 @@ import ( "fmt" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/durationpb" ) type APITokenCreate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewAPITokenCreate(cfg *options.ActionsOpts) *APITokenCreate { +func NewAPITokenCreate(cfg *ActionsOpts) *APITokenCreate { return &APITokenCreate{cfg} } diff --git a/app/cli/internal/action/apitoken_list.go b/app/cli/internal/action/apitoken_list.go index 6842fa155..489d53245 100644 --- a/app/cli/internal/action/apitoken_list.go +++ b/app/cli/internal/action/apitoken_list.go @@ -19,15 +19,14 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type APITokenList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewAPITokenList(cfg *options.ActionsOpts) *APITokenList { +func NewAPITokenList(cfg *ActionsOpts) *APITokenList { return &APITokenList{cfg} } diff --git a/app/cli/internal/action/apitoken_revoke.go b/app/cli/internal/action/apitoken_revoke.go index 027b79fc9..6c57fc9bc 100644 --- a/app/cli/internal/action/apitoken_revoke.go +++ b/app/cli/internal/action/apitoken_revoke.go @@ -19,15 +19,14 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type APITokenRevoke struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewAPITokenRevoke(cfg *options.ActionsOpts) *APITokenRevoke { +func NewAPITokenRevoke(cfg *ActionsOpts) *APITokenRevoke { return &APITokenRevoke{cfg} } diff --git a/app/cli/internal/action/artifact_download.go b/app/cli/internal/action/artifact_download.go index 2d46b67a3..e6181b0ad 100644 --- a/app/cli/internal/action/artifact_download.go +++ b/app/cli/internal/action/artifact_download.go @@ -25,7 +25,6 @@ import ( "path" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/pkg/casclient" "github.com/jedib0t/go-pretty/v6/progress" "google.golang.org/grpc" @@ -34,13 +33,13 @@ import ( ) type ArtifactDownload struct { - *options.ActionsOpts + *ActionsOpts artifactsCASConn *grpc.ClientConn stdout io.Writer } type ArtifactDownloadOpts struct { - *options.ActionsOpts + *ActionsOpts ArtifactsCASConn *grpc.ClientConn Stdout io.Writer } diff --git a/app/cli/internal/action/artifact_upload.go b/app/cli/internal/action/artifact_upload.go index 80eff9de1..11bf64fb6 100644 --- a/app/cli/internal/action/artifact_upload.go +++ b/app/cli/internal/action/artifact_upload.go @@ -21,7 +21,6 @@ import ( "os" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/pkg/casclient" "github.com/jedib0t/go-pretty/v6/progress" "google.golang.org/grpc" @@ -32,12 +31,12 @@ type CASArtifact struct { } type ArtifactUpload struct { - *options.ActionsOpts + *ActionsOpts artifactsCASConn *grpc.ClientConn } type ArtifactUploadOpts struct { - *options.ActionsOpts + *ActionsOpts ArtifactsCASConn *grpc.ClientConn } diff --git a/app/cli/internal/action/attached_integration_add.go b/app/cli/internal/action/attached_integration_add.go index 5b07740a3..98ea5ebdb 100644 --- a/app/cli/internal/action/attached_integration_add.go +++ b/app/cli/internal/action/attached_integration_add.go @@ -19,15 +19,14 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) // Attach a third party integration to a workflow -type AttachedIntegrationAdd struct{ cfg *options.ActionsOpts } +type AttachedIntegrationAdd struct{ cfg *ActionsOpts } -func NewAttachedIntegrationAdd(cfg *options.ActionsOpts) *AttachedIntegrationAdd { +func NewAttachedIntegrationAdd(cfg *ActionsOpts) *AttachedIntegrationAdd { return &AttachedIntegrationAdd{cfg} } diff --git a/app/cli/internal/action/attached_integration_delete.go b/app/cli/internal/action/attached_integration_delete.go index 7ff50e818..a8958556c 100644 --- a/app/cli/internal/action/attached_integration_delete.go +++ b/app/cli/internal/action/attached_integration_delete.go @@ -18,13 +18,12 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) -type AttachedIntegrationDelete struct{ cfg *options.ActionsOpts } +type AttachedIntegrationDelete struct{ cfg *ActionsOpts } -func NewAttachedIntegrationDelete(cfg *options.ActionsOpts) *AttachedIntegrationDelete { +func NewAttachedIntegrationDelete(cfg *ActionsOpts) *AttachedIntegrationDelete { return &AttachedIntegrationDelete{cfg} } diff --git a/app/cli/internal/action/attached_integration_list.go b/app/cli/internal/action/attached_integration_list.go index aff0dc54d..13617d4cb 100644 --- a/app/cli/internal/action/attached_integration_list.go +++ b/app/cli/internal/action/attached_integration_list.go @@ -20,13 +20,12 @@ import ( "encoding/json" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) -type AttachedIntegrationList struct{ cfg *options.ActionsOpts } +type AttachedIntegrationList struct{ cfg *ActionsOpts } -func NewAttachedIntegrationList(cfg *options.ActionsOpts) *AttachedIntegrationList { +func NewAttachedIntegrationList(cfg *ActionsOpts) *AttachedIntegrationList { return &AttachedIntegrationList{cfg} } diff --git a/app/cli/internal/action/attestation_add.go b/app/cli/internal/action/attestation_add.go index 4ad20624e..f214c6a8e 100644 --- a/app/cli/internal/action/attestation_add.go +++ b/app/cli/internal/action/attestation_add.go @@ -20,7 +20,6 @@ import ( "errors" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" api "github.com/chainloop-dev/chainloop/pkg/attestation/crafter/api/attestation/v1" @@ -30,7 +29,7 @@ import ( ) type AttestationAddOpts struct { - *options.ActionsOpts + *ActionsOpts ArtifactsCASConn *grpc.ClientConn CASURI string CASCAPath string // optional CA certificate for the CAS connection @@ -46,7 +45,7 @@ type newCrafterOpts struct { } type AttestationAdd struct { - *options.ActionsOpts + *ActionsOpts casURI string // optional CA certificate for the CAS connection casCAPath string diff --git a/app/cli/internal/action/attestation_init.go b/app/cli/internal/action/attestation_init.go index d39cbf6ef..3374c9062 100644 --- a/app/cli/internal/action/attestation_init.go +++ b/app/cli/internal/action/attestation_init.go @@ -21,7 +21,6 @@ import ( "fmt" "strconv" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/token" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" v1 "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" @@ -32,7 +31,7 @@ import ( ) type AttestationInitOpts struct { - *options.ActionsOpts + *ActionsOpts DryRun bool // Force the initialization and override any existing, in-progress ones. // Note that this is only useful when local-based attestation state is configured @@ -43,7 +42,7 @@ type AttestationInitOpts struct { } type AttestationInit struct { - *options.ActionsOpts + *ActionsOpts dryRun, force bool c *crafter.Crafter useRemoteState bool diff --git a/app/cli/internal/action/attestation_push.go b/app/cli/internal/action/attestation_push.go index 581a4b190..fcd337720 100644 --- a/app/cli/internal/action/attestation_push.go +++ b/app/cli/internal/action/attestation_push.go @@ -22,7 +22,6 @@ import ( "os" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" @@ -36,7 +35,7 @@ import ( ) type AttestationPushOpts struct { - *options.ActionsOpts + *ActionsOpts KeyPath, CLIVersion, CLIDigest, BundlePath string LocalStatePath string @@ -58,7 +57,7 @@ type AttestationResult struct { } type AttestationPush struct { - *options.ActionsOpts + *ActionsOpts keyPath, cliVersion, cliDigest, bundlePath string localStatePath string signServerOpts *SignServerOpts diff --git a/app/cli/internal/action/attestation_reset.go b/app/cli/internal/action/attestation_reset.go index d119b6e6e..321dfe641 100644 --- a/app/cli/internal/action/attestation_reset.go +++ b/app/cli/internal/action/attestation_reset.go @@ -19,7 +19,6 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" "github.com/go-kratos/kratos/v2/errors" @@ -29,12 +28,12 @@ const AttestationResetTriggerFailed = "failure" const AttestationResetTriggerCancelled = "cancellation" type AttestationResetOpts struct { - *options.ActionsOpts + *ActionsOpts LocalStatePath string } type AttestationReset struct { - *options.ActionsOpts + *ActionsOpts *newCrafterOpts localStatePath string } diff --git a/app/cli/internal/action/attestation_status.go b/app/cli/internal/action/attestation_status.go index dd3d24206..cbee1af48 100644 --- a/app/cli/internal/action/attestation_status.go +++ b/app/cli/internal/action/attestation_status.go @@ -20,7 +20,6 @@ import ( "fmt" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" pbc "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/crafter" @@ -30,14 +29,14 @@ import ( ) type AttestationStatusOpts struct { - *options.ActionsOpts + *ActionsOpts UseAttestationRemoteState bool isPushed bool LocalStatePath string } type AttestationStatus struct { - *options.ActionsOpts + *ActionsOpts c *crafter.Crafter // Do not show information about the project version release status isPushed bool diff --git a/app/cli/internal/action/attestation_verify.go b/app/cli/internal/action/attestation_verify.go index f8e2cabac..f172f1a7e 100644 --- a/app/cli/internal/action/attestation_verify.go +++ b/app/cli/internal/action/attestation_verify.go @@ -20,7 +20,6 @@ import ( "errors" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/verifier" "github.com/sigstore/cosign/v2/pkg/blob" @@ -29,10 +28,10 @@ import ( ) type AttestationVerifyAction struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewAttestationVerifyAction(cfg *options.ActionsOpts) *AttestationVerifyAction { +func NewAttestationVerifyAction(cfg *ActionsOpts) *AttestationVerifyAction { return &AttestationVerifyAction{cfg} } @@ -45,7 +44,7 @@ func (action *AttestationVerifyAction) Run(ctx context.Context, fileOrURL string return verifyBundle(ctx, content, action.cfg) } -func verifyBundle(ctx context.Context, content []byte, opts *options.ActionsOpts) (bool, error) { +func verifyBundle(ctx context.Context, content []byte, opts *ActionsOpts) (bool, error) { sc := pb.NewSigningServiceClient(opts.CPConnection) trResp, err := sc.GetTrustedRoot(ctx, &pb.GetTrustedRootRequest{}) if err != nil { diff --git a/app/cli/internal/action/available_integration_describe.go b/app/cli/internal/action/available_integration_describe.go index 63ad0157c..7b02cbd1f 100644 --- a/app/cli/internal/action/available_integration_describe.go +++ b/app/cli/internal/action/available_integration_describe.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type AvailableIntegrationDescribe struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewAvailableIntegrationDescribe(cfg *options.ActionsOpts) *AvailableIntegrationDescribe { +func NewAvailableIntegrationDescribe(cfg *ActionsOpts) *AvailableIntegrationDescribe { return &AvailableIntegrationDescribe{cfg} } diff --git a/app/cli/internal/action/available_integration_list.go b/app/cli/internal/action/available_integration_list.go index e26ee099f..6a2dfbda6 100644 --- a/app/cli/internal/action/available_integration_list.go +++ b/app/cli/internal/action/available_integration_list.go @@ -20,14 +20,13 @@ import ( "errors" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/app/controlplane/plugins/sdk/v1" "github.com/santhosh-tekuri/jsonschema/v5" ) type AvailableIntegrationList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type AvailableIntegrationItem struct { @@ -49,7 +48,7 @@ type JSONSchema struct { Properties sdk.SchemaPropertiesMap `json:"-"` } -func NewAvailableIntegrationList(cfg *options.ActionsOpts) *AvailableIntegrationList { +func NewAvailableIntegrationList(cfg *ActionsOpts) *AvailableIntegrationList { return &AvailableIntegrationList{cfg} } diff --git a/app/cli/internal/action/casbackend_add.go b/app/cli/internal/action/casbackend_add.go index 50be37f04..004c2e249 100644 --- a/app/cli/internal/action/casbackend_add.go +++ b/app/cli/internal/action/casbackend_add.go @@ -19,13 +19,12 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) type CASBackendAdd struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type NewCASBackendAddOpts struct { @@ -37,7 +36,7 @@ type NewCASBackendAddOpts struct { Credentials map[string]any } -func NewCASBackendAdd(cfg *options.ActionsOpts) *CASBackendAdd { +func NewCASBackendAdd(cfg *ActionsOpts) *CASBackendAdd { return &CASBackendAdd{cfg} } diff --git a/app/cli/internal/action/casbackend_delete.go b/app/cli/internal/action/casbackend_delete.go index 70bcd2001..20dddcfe5 100644 --- a/app/cli/internal/action/casbackend_delete.go +++ b/app/cli/internal/action/casbackend_delete.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type CASBackendDelete struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewCASBackendDelete(cfg *options.ActionsOpts) *CASBackendDelete { +func NewCASBackendDelete(cfg *ActionsOpts) *CASBackendDelete { return &CASBackendDelete{cfg} } diff --git a/app/cli/internal/action/casbackend_list.go b/app/cli/internal/action/casbackend_list.go index 8fa5ce5c9..85121f48f 100644 --- a/app/cli/internal/action/casbackend_list.go +++ b/app/cli/internal/action/casbackend_list.go @@ -19,12 +19,11 @@ import ( "context" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type CASBackendList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type CASBackendItem struct { @@ -55,7 +54,7 @@ const ( Invalid ValidationStatus = "invalid" ) -func NewCASBackendList(cfg *options.ActionsOpts) *CASBackendList { +func NewCASBackendList(cfg *ActionsOpts) *CASBackendList { return &CASBackendList{cfg} } diff --git a/app/cli/internal/action/casbackend_update.go b/app/cli/internal/action/casbackend_update.go index ff3efc2ab..592bd35d6 100644 --- a/app/cli/internal/action/casbackend_update.go +++ b/app/cli/internal/action/casbackend_update.go @@ -19,13 +19,12 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) type CASBackendUpdate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type NewCASBackendUpdateOpts struct { @@ -35,7 +34,7 @@ type NewCASBackendUpdateOpts struct { Credentials map[string]any } -func NewCASBackendUpdate(cfg *options.ActionsOpts) *CASBackendUpdate { +func NewCASBackendUpdate(cfg *ActionsOpts) *CASBackendUpdate { return &CASBackendUpdate{cfg} } diff --git a/app/cli/internal/action/config_current_context.go b/app/cli/internal/action/config_current_context.go index bf4a39ee5..ae01954bf 100644 --- a/app/cli/internal/action/config_current_context.go +++ b/app/cli/internal/action/config_current_context.go @@ -19,15 +19,14 @@ import ( "context" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type ConfigCurrentContext struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewConfigCurrentContext(cfg *options.ActionsOpts) *ConfigCurrentContext { +func NewConfigCurrentContext(cfg *ActionsOpts) *ConfigCurrentContext { return &ConfigCurrentContext{cfg} } diff --git a/app/cli/internal/action/delete_account.go b/app/cli/internal/action/delete_account.go index 20b838983..d6b1a90ba 100644 --- a/app/cli/internal/action/delete_account.go +++ b/app/cli/internal/action/delete_account.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type DeleteAccount struct { - *options.ActionsOpts + *ActionsOpts } -func NewDeleteAccount(cfg *options.ActionsOpts) *DeleteAccount { +func NewDeleteAccount(cfg *ActionsOpts) *DeleteAccount { return &DeleteAccount{cfg} } diff --git a/app/cli/internal/action/membership_delete.go b/app/cli/internal/action/membership_delete.go index c998bf3fe..8c30ee98c 100644 --- a/app/cli/internal/action/membership_delete.go +++ b/app/cli/internal/action/membership_delete.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipDelete struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewMembershipDelete(cfg *options.ActionsOpts) *MembershipDelete { +func NewMembershipDelete(cfg *ActionsOpts) *MembershipDelete { return &MembershipDelete{cfg} } diff --git a/app/cli/internal/action/membership_leave.go b/app/cli/internal/action/membership_leave.go index dc66c560f..75c5bc327 100644 --- a/app/cli/internal/action/membership_leave.go +++ b/app/cli/internal/action/membership_leave.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipLeave struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewMembershipLeave(cfg *options.ActionsOpts) *MembershipLeave { +func NewMembershipLeave(cfg *ActionsOpts) *MembershipLeave { return &MembershipLeave{cfg} } diff --git a/app/cli/internal/action/membership_list.go b/app/cli/internal/action/membership_list.go index 7aee61b3c..120ae61f0 100644 --- a/app/cli/internal/action/membership_list.go +++ b/app/cli/internal/action/membership_list.go @@ -21,12 +21,11 @@ import ( "strings" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type OrgItem struct { @@ -62,7 +61,7 @@ type ListMembershipResult struct { PaginationMeta *OffsetPagination } -func NewMembershipList(cfg *options.ActionsOpts) *MembershipList { +func NewMembershipList(cfg *ActionsOpts) *MembershipList { return &MembershipList{cfg} } diff --git a/app/cli/internal/action/membership_set.go b/app/cli/internal/action/membership_set.go index 5d896658f..d0db30cee 100644 --- a/app/cli/internal/action/membership_set.go +++ b/app/cli/internal/action/membership_set.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipSetCurrent struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewMembershipSet(cfg *options.ActionsOpts) *MembershipSetCurrent { +func NewMembershipSet(cfg *ActionsOpts) *MembershipSetCurrent { return &MembershipSetCurrent{cfg} } diff --git a/app/cli/internal/action/membership_update.go b/app/cli/internal/action/membership_update.go index 577ff1bfe..c74557cf3 100644 --- a/app/cli/internal/action/membership_update.go +++ b/app/cli/internal/action/membership_update.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type MembershipUpdate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewMembershipUpdate(cfg *options.ActionsOpts) *MembershipUpdate { +func NewMembershipUpdate(cfg *ActionsOpts) *MembershipUpdate { return &MembershipUpdate{cfg} } diff --git a/app/cli/internal/action/org_create.go b/app/cli/internal/action/org_create.go index 09982016f..95574479b 100644 --- a/app/cli/internal/action/org_create.go +++ b/app/cli/internal/action/org_create.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgCreate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewOrgCreate(cfg *options.ActionsOpts) *OrgCreate { +func NewOrgCreate(cfg *ActionsOpts) *OrgCreate { return &OrgCreate{cfg} } diff --git a/app/cli/internal/action/org_invitation_create.go b/app/cli/internal/action/org_invitation_create.go index 0c7d268d0..2747503fa 100644 --- a/app/cli/internal/action/org_invitation_create.go +++ b/app/cli/internal/action/org_invitation_create.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgInvitationCreate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewOrgInvitationCreate(cfg *options.ActionsOpts) *OrgInvitationCreate { +func NewOrgInvitationCreate(cfg *ActionsOpts) *OrgInvitationCreate { return &OrgInvitationCreate{cfg} } diff --git a/app/cli/internal/action/org_invitation_list_sent.go b/app/cli/internal/action/org_invitation_list_sent.go index 2549cf973..c9bdca16e 100644 --- a/app/cli/internal/action/org_invitation_list_sent.go +++ b/app/cli/internal/action/org_invitation_list_sent.go @@ -19,12 +19,11 @@ import ( "context" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgInvitationListSent struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type OrgInvitationItem struct { @@ -37,7 +36,7 @@ type OrgInvitationItem struct { Role Role `json:"role"` } -func NewOrgInvitationListSent(cfg *options.ActionsOpts) *OrgInvitationListSent { +func NewOrgInvitationListSent(cfg *ActionsOpts) *OrgInvitationListSent { return &OrgInvitationListSent{cfg} } diff --git a/app/cli/internal/action/org_invitation_revoke.go b/app/cli/internal/action/org_invitation_revoke.go index 5fe969f03..0199f0e7c 100644 --- a/app/cli/internal/action/org_invitation_revoke.go +++ b/app/cli/internal/action/org_invitation_revoke.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgInvitationRevoke struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewOrgInvitationRevoke(cfg *options.ActionsOpts) *OrgInvitationRevoke { +func NewOrgInvitationRevoke(cfg *ActionsOpts) *OrgInvitationRevoke { return &OrgInvitationRevoke{cfg} } diff --git a/app/cli/internal/action/org_update.go b/app/cli/internal/action/org_update.go index cb9b49d9c..61e883681 100644 --- a/app/cli/internal/action/org_update.go +++ b/app/cli/internal/action/org_update.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrgUpdate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewOrgUpdate(cfg *options.ActionsOpts) *OrgUpdate { +func NewOrgUpdate(cfg *ActionsOpts) *OrgUpdate { return &OrgUpdate{cfg} } diff --git a/app/cli/internal/action/organization_delete.go b/app/cli/internal/action/organization_delete.go index 19bc24575..2637a2fce 100644 --- a/app/cli/internal/action/organization_delete.go +++ b/app/cli/internal/action/organization_delete.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type OrganizationDelete struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewOrganizationDelete(cfg *options.ActionsOpts) *OrganizationDelete { +func NewOrganizationDelete(cfg *ActionsOpts) *OrganizationDelete { return &OrganizationDelete{cfg} } diff --git a/app/cli/internal/action/plugin_actions.go b/app/cli/internal/action/plugin_actions.go index f7965c015..dbf01528b 100644 --- a/app/cli/internal/action/plugin_actions.go +++ b/app/cli/internal/action/plugin_actions.go @@ -21,25 +21,24 @@ import ( "os" "path/filepath" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/pkg/plugins" ) // PluginList handles listing installed plugins type PluginList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts manager *plugins.Manager } // PluginInfo handles showing detailed information about a specific plugin type PluginDescribe struct { - cfg *options.ActionsOpts + cfg *ActionsOpts manager *plugins.Manager } // PluginExec handles executing a command provided by a plugin type PluginExec struct { - cfg *options.ActionsOpts + cfg *ActionsOpts manager *plugins.Manager } @@ -64,7 +63,7 @@ type PluginExecResult struct { // PluginInstall handles downloading a plugin type PluginInstall struct { - cfg *options.ActionsOpts + cfg *ActionsOpts manager *plugins.Manager } @@ -81,7 +80,7 @@ type PluginInstallResult struct { } // NewPluginList creates a new PluginList action -func NewPluginList(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginList { +func NewPluginList(cfg *ActionsOpts, manager *plugins.Manager) *PluginList { return &PluginList{cfg: cfg, manager: manager} } @@ -106,7 +105,7 @@ func (action *PluginList) Run(_ context.Context) (*PluginListResult, error) { } // NewPluginDescribe creates a new NewPluginDescribe action -func NewPluginDescribe(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginDescribe { +func NewPluginDescribe(cfg *ActionsOpts, manager *plugins.Manager) *PluginDescribe { return &PluginDescribe{cfg: cfg, manager: manager} } @@ -125,7 +124,7 @@ func (action *PluginDescribe) Run(_ context.Context, pluginName string) (*Plugin } // NewPluginExec creates a new PluginExec action -func NewPluginExec(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginExec { +func NewPluginExec(cfg *ActionsOpts, manager *plugins.Manager) *PluginExec { return &PluginExec{cfg: cfg, manager: manager} } @@ -156,7 +155,7 @@ func (action *PluginExec) Run(ctx context.Context, pluginName string, commandNam } // NewPluginInstall creates a new PluginInstall action -func NewPluginInstall(cfg *options.ActionsOpts, manager *plugins.Manager) *PluginInstall { +func NewPluginInstall(cfg *ActionsOpts, manager *plugins.Manager) *PluginInstall { return &PluginInstall{cfg: cfg, manager: manager} } diff --git a/app/cli/internal/action/policy_develop_eval.go b/app/cli/internal/action/policy_develop_eval.go index ee15cbda4..708e28446 100644 --- a/app/cli/internal/action/policy_develop_eval.go +++ b/app/cli/internal/action/policy_develop_eval.go @@ -16,7 +16,6 @@ package action import ( - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/policydevel" ) @@ -31,11 +30,11 @@ type PolicyEvalOpts struct { } type PolicyEval struct { - *options.ActionsOpts + *ActionsOpts opts *PolicyEvalOpts } -func NewPolicyEval(opts *PolicyEvalOpts, actionOpts *options.ActionsOpts) (*PolicyEval, error) { +func NewPolicyEval(opts *PolicyEvalOpts, actionOpts *ActionsOpts) (*PolicyEval, error) { return &PolicyEval{ ActionsOpts: actionOpts, opts: opts, diff --git a/app/cli/internal/action/policy_develop_init.go b/app/cli/internal/action/policy_develop_init.go index 8fb2f3a6e..735d3efc8 100644 --- a/app/cli/internal/action/policy_develop_init.go +++ b/app/cli/internal/action/policy_develop_init.go @@ -18,7 +18,6 @@ package action import ( "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/policydevel" ) @@ -31,11 +30,11 @@ type PolicyInitOpts struct { } type PolicyInit struct { - *options.ActionsOpts + *ActionsOpts opts *PolicyInitOpts } -func NewPolicyInit(opts *PolicyInitOpts, actionOpts *options.ActionsOpts) (*PolicyInit, error) { +func NewPolicyInit(opts *PolicyInitOpts, actionOpts *ActionsOpts) (*PolicyInit, error) { return &PolicyInit{ ActionsOpts: actionOpts, opts: opts, diff --git a/app/cli/internal/action/policy_develop_lint.go b/app/cli/internal/action/policy_develop_lint.go index 51afaf446..259c4ec86 100644 --- a/app/cli/internal/action/policy_develop_lint.go +++ b/app/cli/internal/action/policy_develop_lint.go @@ -18,7 +18,6 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" "github.com/chainloop-dev/chainloop/app/cli/internal/policydevel" ) @@ -34,10 +33,10 @@ type PolicyLintResult struct { } type PolicyLint struct { - *options.ActionsOpts + *ActionsOpts } -func NewPolicyLint(actionOpts *options.ActionsOpts) (*PolicyLint, error) { +func NewPolicyLint(actionOpts *ActionsOpts) (*PolicyLint, error) { return &PolicyLint{ ActionsOpts: actionOpts, }, nil diff --git a/app/cli/internal/action/referrer_discover.go b/app/cli/internal/action/referrer_discover.go index 1590279df..5dc4d49e8 100644 --- a/app/cli/internal/action/referrer_discover.go +++ b/app/cli/internal/action/referrer_discover.go @@ -19,15 +19,14 @@ import ( "context" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type ReferrerDiscover struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type ReferrerDiscoverPublic struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type ReferrerItem struct { @@ -41,7 +40,7 @@ type ReferrerItem struct { Annotations map[string]string `json:"annotations,omitempty"` } -func NewReferrerDiscoverPrivate(cfg *options.ActionsOpts) *ReferrerDiscover { +func NewReferrerDiscoverPrivate(cfg *ActionsOpts) *ReferrerDiscover { return &ReferrerDiscover{cfg} } @@ -57,7 +56,7 @@ func (action *ReferrerDiscover) Run(ctx context.Context, digest, kind string) (* return pbReferrerItemToAction(resp.Result), nil } -func NewReferrerDiscoverPublicIndex(cfg *options.ActionsOpts) *ReferrerDiscoverPublic { +func NewReferrerDiscoverPublicIndex(cfg *ActionsOpts) *ReferrerDiscoverPublic { return &ReferrerDiscoverPublic{cfg} } diff --git a/app/cli/internal/action/registered_integration_add.go b/app/cli/internal/action/registered_integration_add.go index 1a2ce4512..1f55d3c7f 100644 --- a/app/cli/internal/action/registered_integration_add.go +++ b/app/cli/internal/action/registered_integration_add.go @@ -19,16 +19,15 @@ import ( "context" "fmt" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "google.golang.org/protobuf/types/known/structpb" ) type RegisteredIntegrationAdd struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewRegisteredIntegrationAdd(cfg *options.ActionsOpts) *RegisteredIntegrationAdd { +func NewRegisteredIntegrationAdd(cfg *ActionsOpts) *RegisteredIntegrationAdd { return &RegisteredIntegrationAdd{cfg} } diff --git a/app/cli/internal/action/registered_integration_delete.go b/app/cli/internal/action/registered_integration_delete.go index e44f0bbe7..92d2949e9 100644 --- a/app/cli/internal/action/registered_integration_delete.go +++ b/app/cli/internal/action/registered_integration_delete.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type RegisteredIntegrationDelete struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewRegisteredIntegrationDelete(cfg *options.ActionsOpts) *RegisteredIntegrationDelete { +func NewRegisteredIntegrationDelete(cfg *ActionsOpts) *RegisteredIntegrationDelete { return &RegisteredIntegrationDelete{cfg} } diff --git a/app/cli/internal/action/registered_integration_describe.go b/app/cli/internal/action/registered_integration_describe.go index 639b04ff7..bfc6d1598 100644 --- a/app/cli/internal/action/registered_integration_describe.go +++ b/app/cli/internal/action/registered_integration_describe.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type RegisteredIntegrationDescribe struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewRegisteredIntegrationDescribe(cfg *options.ActionsOpts) *RegisteredIntegrationDescribe { +func NewRegisteredIntegrationDescribe(cfg *ActionsOpts) *RegisteredIntegrationDescribe { return &RegisteredIntegrationDescribe{cfg} } diff --git a/app/cli/internal/action/registered_integration_list.go b/app/cli/internal/action/registered_integration_list.go index b14e69ab0..690f73833 100644 --- a/app/cli/internal/action/registered_integration_list.go +++ b/app/cli/internal/action/registered_integration_list.go @@ -21,12 +21,11 @@ import ( "errors" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type RegisteredIntegrationList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type RegisteredIntegrationItem struct { @@ -41,7 +40,7 @@ type RegisteredIntegrationItem struct { Config map[string]interface{} `json:"config"` } -func NewRegisteredIntegrationList(cfg *options.ActionsOpts) *RegisteredIntegrationList { +func NewRegisteredIntegrationList(cfg *ActionsOpts) *RegisteredIntegrationList { return &RegisteredIntegrationList{cfg} } diff --git a/app/cli/internal/action/workflow_contract_create.go b/app/cli/internal/action/workflow_contract_create.go index 5960d76f1..d0de3933e 100644 --- a/app/cli/internal/action/workflow_contract_create.go +++ b/app/cli/internal/action/workflow_contract_create.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractCreate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowContractCreate(cfg *options.ActionsOpts) *WorkflowContractCreate { +func NewWorkflowContractCreate(cfg *ActionsOpts) *WorkflowContractCreate { return &WorkflowContractCreate{cfg} } diff --git a/app/cli/internal/action/workflow_contract_delete.go b/app/cli/internal/action/workflow_contract_delete.go index 5abca0e37..cf7038464 100644 --- a/app/cli/internal/action/workflow_contract_delete.go +++ b/app/cli/internal/action/workflow_contract_delete.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractDelete struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowContractDelete(cfg *options.ActionsOpts) *WorkflowContractDelete { +func NewWorkflowContractDelete(cfg *ActionsOpts) *WorkflowContractDelete { return &WorkflowContractDelete{cfg} } diff --git a/app/cli/internal/action/workflow_contract_describe.go b/app/cli/internal/action/workflow_contract_describe.go index 249ec8058..8759ba821 100644 --- a/app/cli/internal/action/workflow_contract_describe.go +++ b/app/cli/internal/action/workflow_contract_describe.go @@ -18,12 +18,11 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractDescribe struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type WorkflowContractWithVersionItem struct { @@ -31,7 +30,7 @@ type WorkflowContractWithVersionItem struct { Revision *WorkflowContractVersionItem `json:"revision"` } -func NewWorkflowContractDescribe(cfg *options.ActionsOpts) *WorkflowContractDescribe { +func NewWorkflowContractDescribe(cfg *ActionsOpts) *WorkflowContractDescribe { return &WorkflowContractDescribe{cfg} } diff --git a/app/cli/internal/action/workflow_contract_list.go b/app/cli/internal/action/workflow_contract_list.go index eefb8e5bb..87989c9dd 100644 --- a/app/cli/internal/action/workflow_contract_list.go +++ b/app/cli/internal/action/workflow_contract_list.go @@ -20,13 +20,12 @@ import ( "fmt" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" schemav1 "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" ) type WorkflowContractList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type WorkflowContractItem struct { @@ -74,7 +73,7 @@ type ContractRawBody struct { Format string `json:"format"` } -func NewWorkflowContractList(cfg *options.ActionsOpts) *WorkflowContractList { +func NewWorkflowContractList(cfg *ActionsOpts) *WorkflowContractList { return &WorkflowContractList{cfg} } diff --git a/app/cli/internal/action/workflow_contract_update.go b/app/cli/internal/action/workflow_contract_update.go index af70efdac..da6c73570 100644 --- a/app/cli/internal/action/workflow_contract_update.go +++ b/app/cli/internal/action/workflow_contract_update.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowContractUpdate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowContractUpdate(cfg *options.ActionsOpts) *WorkflowContractUpdate { +func NewWorkflowContractUpdate(cfg *ActionsOpts) *WorkflowContractUpdate { return &WorkflowContractUpdate{cfg} } diff --git a/app/cli/internal/action/workflow_create.go b/app/cli/internal/action/workflow_create.go index e90215b41..ed3426220 100644 --- a/app/cli/internal/action/workflow_create.go +++ b/app/cli/internal/action/workflow_create.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowCreate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowCreate(cfg *options.ActionsOpts) *WorkflowCreate { +func NewWorkflowCreate(cfg *ActionsOpts) *WorkflowCreate { return &WorkflowCreate{cfg} } diff --git a/app/cli/internal/action/workflow_delete.go b/app/cli/internal/action/workflow_delete.go index a5c54ce8a..95767c764 100644 --- a/app/cli/internal/action/workflow_delete.go +++ b/app/cli/internal/action/workflow_delete.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowDelete struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowDelete(cfg *options.ActionsOpts) *WorkflowDelete { +func NewWorkflowDelete(cfg *ActionsOpts) *WorkflowDelete { return &WorkflowDelete{cfg} } diff --git a/app/cli/internal/action/workflow_describe.go b/app/cli/internal/action/workflow_describe.go index a134c0349..2d51b77fa 100644 --- a/app/cli/internal/action/workflow_describe.go +++ b/app/cli/internal/action/workflow_describe.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowDescribe struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowDescribe(cfg *options.ActionsOpts) *WorkflowDescribe { +func NewWorkflowDescribe(cfg *ActionsOpts) *WorkflowDescribe { return &WorkflowDescribe{cfg} } diff --git a/app/cli/internal/action/workflow_list.go b/app/cli/internal/action/workflow_list.go index cec317c5b..c235718de 100644 --- a/app/cli/internal/action/workflow_list.go +++ b/app/cli/internal/action/workflow_list.go @@ -20,12 +20,11 @@ import ( "fmt" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type WorkflowItem struct { @@ -52,7 +51,7 @@ type WorkflowListResult struct { } // NewWorkflowList creates a new instance of WorkflowList -func NewWorkflowList(cfg *options.ActionsOpts) *WorkflowList { +func NewWorkflowList(cfg *ActionsOpts) *WorkflowList { return &WorkflowList{cfg} } diff --git a/app/cli/internal/action/workflow_run_describe.go b/app/cli/internal/action/workflow_run_describe.go index 02f779c3a..b5f6a2e54 100644 --- a/app/cli/internal/action/workflow_run_describe.go +++ b/app/cli/internal/action/workflow_run_describe.go @@ -24,7 +24,6 @@ import ( "sort" "strings" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" "github.com/chainloop-dev/chainloop/pkg/attestation/renderer/chainloop" "github.com/chainloop-dev/chainloop/pkg/attestation/verifier" @@ -39,7 +38,7 @@ import ( ) type WorkflowRunDescribe struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type WorkflowRunItemFull struct { @@ -121,7 +120,7 @@ func (i *WorkflowRunAttestationItem) Statement() *intoto.Statement { return i.statement } -func NewWorkflowRunDescribe(cfg *options.ActionsOpts) *WorkflowRunDescribe { +func NewWorkflowRunDescribe(cfg *ActionsOpts) *WorkflowRunDescribe { return &WorkflowRunDescribe{cfg} } diff --git a/app/cli/internal/action/workflow_run_list.go b/app/cli/internal/action/workflow_run_list.go index f90e8c91c..28ae50b9d 100644 --- a/app/cli/internal/action/workflow_run_list.go +++ b/app/cli/internal/action/workflow_run_list.go @@ -20,7 +20,6 @@ import ( "strings" "time" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" v1 "github.com/chainloop-dev/chainloop/app/controlplane/api/workflowcontract/v1" ) @@ -37,7 +36,7 @@ var WorkflowRunStatus = func() map[string]pb.RunStatus { } type WorkflowRunList struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } type WorkflowRunItem struct { @@ -67,7 +66,7 @@ type PaginatedWorkflowRunItem struct { PaginationMeta *PaginationOpts } -func NewWorkflowRunList(cfg *options.ActionsOpts) *WorkflowRunList { +func NewWorkflowRunList(cfg *ActionsOpts) *WorkflowRunList { return &WorkflowRunList{cfg} } diff --git a/app/cli/internal/action/workflow_update.go b/app/cli/internal/action/workflow_update.go index f74750056..9f521f49d 100644 --- a/app/cli/internal/action/workflow_update.go +++ b/app/cli/internal/action/workflow_update.go @@ -18,15 +18,14 @@ package action import ( "context" - "github.com/chainloop-dev/chainloop/app/cli/cmd/options" pb "github.com/chainloop-dev/chainloop/app/controlplane/api/controlplane/v1" ) type WorkflowUpdate struct { - cfg *options.ActionsOpts + cfg *ActionsOpts } -func NewWorkflowUpdate(cfg *options.ActionsOpts) *WorkflowUpdate { +func NewWorkflowUpdate(cfg *ActionsOpts) *WorkflowUpdate { return &WorkflowUpdate{cfg} }