From f0c97baa5720983c00dfbef9b24721ddbe88b59f Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 1 Mar 2023 17:07:41 +0800 Subject: [PATCH] feat: remove urfave cli framework (#74) Resolves #72 Signed-off-by: Junjie Gao --- cmd/notation-azure-kv/key.go | 34 +++------------------ cmd/notation-azure-kv/main.go | 49 ++++++++++++++++++++++++------- cmd/notation-azure-kv/metadata.go | 22 ++------------ cmd/notation-azure-kv/sign.go | 34 +++------------------ go.mod | 4 --- go.sum | 8 ----- 6 files changed, 49 insertions(+), 102 deletions(-) diff --git a/cmd/notation-azure-kv/key.go b/cmd/notation-azure-kv/key.go index 7adf6abb..8e5d8487 100644 --- a/cmd/notation-azure-kv/key.go +++ b/cmd/notation-azure-kv/key.go @@ -1,45 +1,19 @@ package main import ( + "context" "encoding/json" "errors" "fmt" - "io" "os" "github.com/Azure/notation-azure-kv/internal/signature" "github.com/notaryproject/notation-go/plugin/proto" - - "github.com/urfave/cli/v2" ) -var describeKeyCommand = &cli.Command{ - Name: string(proto.CommandDescribeKey), - Usage: "Azure key description", - Action: runDescribeKey, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "file", - Usage: "request json file", - TakesFile: true, - Hidden: true, - }, - }, -} - -func runDescribeKey(ctx *cli.Context) error { - var r io.Reader - if f := ctx.String("file"); f != "" { - var err error - r, err = os.Open(f) - if err != nil { - return err - } - } else { - r = os.Stdin - } +func runDescribeKey(ctx context.Context) error { var req proto.DescribeKeyRequest - err := json.NewDecoder(r).Decode(&req) + err := json.NewDecoder(os.Stdin).Decode(&req) if err != nil { return proto.RequestError{ Code: proto.ErrorCodeValidation, @@ -47,7 +21,7 @@ func runDescribeKey(ctx *cli.Context) error { } } - resp, err := signature.Key(ctx.Context, &req) + resp, err := signature.Key(ctx, &req) if err != nil { var rerr proto.RequestError if errors.As(err, &rerr) { diff --git a/cmd/notation-azure-kv/main.go b/cmd/notation-azure-kv/main.go index 19ada823..ab27d97b 100644 --- a/cmd/notation-azure-kv/main.go +++ b/cmd/notation-azure-kv/main.go @@ -1,27 +1,35 @@ package main import ( + "context" "encoding/json" "errors" + "fmt" "os" "github.com/Azure/notation-azure-kv/internal/version" "github.com/notaryproject/notation-go/plugin/proto" - "github.com/urfave/cli/v2" ) func main() { - app := &cli.App{ - Name: "notation-azure-kv", - Usage: "Notation - Notary V2 Azure KV plugin", - Version: version.GetVersion(), - Commands: []*cli.Command{ - metadataCommand, - signCommand, - describeKeyCommand, - }, + if len(os.Args) < 2 { + help() + return } - if err := app.Run(os.Args); err != nil { + ctx := context.Background() + var err error + switch proto.Command(os.Args[1]) { + case proto.CommandGetMetadata: + err = runGetMetadata() + case proto.CommandDescribeKey: + err = runDescribeKey(ctx) + case proto.CommandGenerateSignature: + err = runSign(ctx) + default: + err = fmt.Errorf("invalid command: %s", os.Args[1]) + } + + if err != nil { var reer proto.RequestError if !errors.As(err, &reer) { err = proto.RequestError{ @@ -34,3 +42,22 @@ func main() { os.Exit(1) } } + +func help() { + fmt.Printf(`notation-azure-kv - Notation - Notary V2 Azure KV plugin + +Usage: + notation-azure-kv + +Version: + %s + +Commands: + describe-key Azure key description + generate-signature Sign artifacts with keys in Azure Key Vault + get-plugin-metadata Get plugin metadata + +Documentation: + https://github.com/notaryproject/notaryproject/blob/v1.0.0-rc.2/specs/plugin-extensibility.md#plugin-contract +`, version.GetVersion()) +} diff --git a/cmd/notation-azure-kv/metadata.go b/cmd/notation-azure-kv/metadata.go index 850a4253..5afc23a7 100644 --- a/cmd/notation-azure-kv/metadata.go +++ b/cmd/notation-azure-kv/metadata.go @@ -6,24 +6,8 @@ import ( "github.com/Azure/notation-azure-kv/internal/version" "github.com/notaryproject/notation-go/plugin/proto" - - "github.com/urfave/cli/v2" ) -var metadataCommand = &cli.Command{ - Name: string(proto.CommandGetMetadata), - Usage: "Get plugin metadata", - Action: runGetMetadata, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "file", - Usage: "request json file", - TakesFile: true, - Hidden: true, - }, - }, -} - var metadata []byte func init() { @@ -41,8 +25,8 @@ func init() { } } -func runGetMetadata(ctx *cli.Context) error { +func runGetMetadata() error { // write response - os.Stdout.Write(metadata) - return nil + _, err := os.Stdout.Write(metadata) + return err } diff --git a/cmd/notation-azure-kv/sign.go b/cmd/notation-azure-kv/sign.go index bbcb314f..92603f8a 100644 --- a/cmd/notation-azure-kv/sign.go +++ b/cmd/notation-azure-kv/sign.go @@ -1,45 +1,19 @@ package main import ( + "context" "encoding/json" "errors" "fmt" - "io" "os" "github.com/Azure/notation-azure-kv/internal/signature" "github.com/notaryproject/notation-go/plugin/proto" - - "github.com/urfave/cli/v2" ) -var signCommand = &cli.Command{ - Name: string(proto.CommandGenerateSignature), - Usage: "Sign artifacts with keys in Azure Key Vault", - Action: runSign, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "file", - Usage: "request json file", - TakesFile: true, - Hidden: true, - }, - }, -} - -func runSign(ctx *cli.Context) error { - var r io.Reader - if f := ctx.String("file"); f != "" { - var err error - r, err = os.Open(f) - if err != nil { - return err - } - } else { - r = os.Stdin - } +func runSign(ctx context.Context) error { var req proto.GenerateSignatureRequest - err := json.NewDecoder(r).Decode(&req) + err := json.NewDecoder(os.Stdin).Decode(&req) if err != nil { return proto.RequestError{ Code: proto.ErrorCodeValidation, @@ -47,7 +21,7 @@ func runSign(ctx *cli.Context) error { } } - resp, err := signature.Sign(ctx.Context, &req) + resp, err := signature.Sign(ctx, &req) if err != nil { var rerr proto.RequestError if errors.As(err, &rerr) { diff --git a/go.mod b/go.mod index f6e12aac..8db7254d 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,6 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/keyvault/azsecrets v0.11.0 github.com/notaryproject/notation-core-go v1.0.0-rc.2 github.com/notaryproject/notation-go v1.0.0-rc.3 - github.com/urfave/cli/v2 v2.23.6 golang.org/x/crypto v0.5.0 ) @@ -18,14 +17,11 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/golang-jwt/jwt/v4 v4.4.3 // indirect github.com/google/uuid v1.1.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/stretchr/testify v1.7.2 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect diff --git a/go.sum b/go.sum index 2f713fa6..ace2da20 100644 --- a/go.sum +++ b/go.sum @@ -14,8 +14,6 @@ github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.0 h1:Lg6BW0VPmCwcMl github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.0/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 h1:oPdPEZFSbl7oSPEAIPMPBMUmiL+mqgzBJwM/9qYcwNg= github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= @@ -33,15 +31,9 @@ github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXc github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= -github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= -github.com/urfave/cli/v2 v2.23.6 h1:iWmtKD+prGo1nKUtLO0Wg4z9esfBM4rAV4QRLQiEmJ4= -github.com/urfave/cli/v2 v2.23.6/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g=