From ac2890c9e491e85f962eef06242eb4ee0b6dcd34 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Tue, 20 Jun 2023 12:40:20 +0530 Subject: [PATCH 01/19] CrateDB --- plugins/cratedb/crash.go | 25 ++++++ plugins/cratedb/database_credentials.go | 82 ++++++++++++++++++++ plugins/cratedb/database_credentials_test.go | 55 +++++++++++++ plugins/cratedb/plugin.go | 22 ++++++ 4 files changed, 184 insertions(+) create mode 100644 plugins/cratedb/crash.go create mode 100644 plugins/cratedb/database_credentials.go create mode 100644 plugins/cratedb/database_credentials_test.go create mode 100644 plugins/cratedb/plugin.go diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go new file mode 100644 index 000000000..7c6e69ee7 --- /dev/null +++ b/plugins/cratedb/crash.go @@ -0,0 +1,25 @@ +package cratedb + +import ( + "github.com/1Password/shell-plugins/sdk" + "github.com/1Password/shell-plugins/sdk/needsauth" + "github.com/1Password/shell-plugins/sdk/schema" + "github.com/1Password/shell-plugins/sdk/schema/credname" +) + +func CrateDBCLI() schema.Executable { + return schema.Executable{ + Name: "CrateDB CLI", // TODO: Check if this is correct + Runs: []string{"crash"}, + DocsURL: sdk.URL("https://cratedb.com/docs/cli"), // TODO: Replace with actual URL + NeedsAuth: needsauth.IfAll( + needsauth.NotForHelpOrVersion(), + needsauth.NotWithoutArgs(), + ), + Uses: []schema.CredentialUsage{ + { + Name: credname.DatabaseCredentials, + }, + }, + } +} diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go new file mode 100644 index 000000000..02f569631 --- /dev/null +++ b/plugins/cratedb/database_credentials.go @@ -0,0 +1,82 @@ +package cratedb + +import ( + "context" + + "github.com/1Password/shell-plugins/sdk" + "github.com/1Password/shell-plugins/sdk/importer" + "github.com/1Password/shell-plugins/sdk/provision" + "github.com/1Password/shell-plugins/sdk/schema" + "github.com/1Password/shell-plugins/sdk/schema/credname" + "github.com/1Password/shell-plugins/sdk/schema/fieldname" +) + +func DatabaseCredentials() schema.CredentialType { + return schema.CredentialType{ + Name: credname.DatabaseCredentials, + DocsURL: sdk.URL("https://cratedb.com/docs/database_credentials"), // TODO: Replace with actual URL + ManagementURL: sdk.URL("https://console.cratedb.com/user/security/tokens"), // TODO: Replace with actual URL + Fields: []schema.CredentialField{ + { + Name: fieldname.Host, + MarkdownDescription: "CrateDB host to connect to.", + Optional: true, + }, + { + Name: fieldname.Port, + MarkdownDescription: "Port used to connect to CrateDB.", + Optional: true, + }, + { + Name: fieldname.User, + MarkdownDescription: "CrateDB user to authenticate as.", + Optional: true, + }, + { + Name: fieldname.Password, + MarkdownDescription: "Password used to authenticate to CrateDB.", + Secret: true, + }, + { + Name: fieldname.Database, + MarkdownDescription: "Database name to connect to.", + Optional: true, + }, + }, + DefaultProvisioner: provision.EnvVars(defaultEnvVarMapping), + Importer: importer.TryAll( + importer.TryEnvVarPair(defaultEnvVarMapping), + TryCrateDBConfigFile(), + )} +} + +var defaultEnvVarMapping = map[string]sdk.FieldName{ + "CRATEPW": fieldname.Password, // TODO: Check if this is correct +} + +// TODO: Check if the platform stores the Database Credentials in a local config file, and if so, +// implement the function below to add support for importing it. +func TryCrateDBConfigFile() sdk.Importer { + return importer.TryFile("~/path/to/config/file.yml", func(ctx context.Context, contents importer.FileContents, in sdk.ImportInput, out *sdk.ImportAttempt) { + // var config Config + // if err := contents.ToYAML(&config); err != nil { + // out.AddError(err) + // return + // } + + // if config. == "" { + // return + // } + + // out.AddCandidate(sdk.ImportCandidate{ + // Fields: map[sdk.FieldName]string{ + // fieldname.: config., + // }, + // }) + }) +} + +// TODO: Implement the config file schema +// type Config struct { +// string +// } diff --git a/plugins/cratedb/database_credentials_test.go b/plugins/cratedb/database_credentials_test.go new file mode 100644 index 000000000..305cbd258 --- /dev/null +++ b/plugins/cratedb/database_credentials_test.go @@ -0,0 +1,55 @@ +package cratedb + +import ( + "testing" + + "github.com/1Password/shell-plugins/sdk" + "github.com/1Password/shell-plugins/sdk/plugintest" + "github.com/1Password/shell-plugins/sdk/schema/fieldname" +) + +func TestDatabaseCredentialsProvisioner(t *testing.T) { + plugintest.TestProvisioner(t, DatabaseCredentials().DefaultProvisioner, map[string]plugintest.ProvisionCase{ + "default": { + ItemFields: map[sdk.FieldName]string{ // TODO: Check if this is correct + fieldname.: "yqch", + }, + ExpectedOutput: sdk.ProvisionOutput{ + Environment: map[string]string{ + "CRATEDB": "yqch", + }, + }, + }, + }) +} + +func TestDatabaseCredentialsImporter(t *testing.T) { + plugintest.TestImporter(t, DatabaseCredentials().Importer, map[string]plugintest.ImportCase{ + "environment": { + Environment: map[string]string{ // TODO: Check if this is correct + "CRATEDB": "yqch", + }, + ExpectedCandidates: []sdk.ImportCandidate{ + { + Fields: map[sdk.FieldName]string{ + fieldname.: "yqch", + }, + }, + }, + }, + // TODO: If you implemented a config file importer, add a test file example in cratedb/test-fixtures + // and fill the necessary details in the test template below. + "config file": { + Files: map[string]string{ + // "~/path/to/config.yml": plugintest.LoadFixture(t, "config.yml"), + }, + ExpectedCandidates: []sdk.ImportCandidate{ + // { + // Fields: map[sdk.FieldName]string{ + // fieldname.Token: "yqch", + // }, + // }, + }, + }, + }) +} diff --git a/plugins/cratedb/plugin.go b/plugins/cratedb/plugin.go new file mode 100644 index 000000000..c39bfee24 --- /dev/null +++ b/plugins/cratedb/plugin.go @@ -0,0 +1,22 @@ +package cratedb + +import ( + "github.com/1Password/shell-plugins/sdk" + "github.com/1Password/shell-plugins/sdk/schema" +) + +func New() schema.Plugin { + return schema.Plugin{ + Name: "cratedb", + Platform: schema.PlatformInfo{ + Name: "CrateDB", + Homepage: sdk.URL("https://cratedb.com"), // TODO: Check if this is correct + }, + Credentials: []schema.CredentialType{ + DatabaseCredentials(), + }, + Executables: []schema.Executable{ + CrateDBCLI(), + }, + } +} From b93737541ae3a09b776c255a3fe9da2e3eae47c4 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Sat, 24 Jun 2023 13:17:02 +0530 Subject: [PATCH 02/19] Make A plugin for CrateDB --- plugins/cratedb/crash.go | 4 ++-- plugins/cratedb/database_credentials.go | 4 ++-- plugins/cratedb/database_credentials_test.go | 4 ++-- plugins/cratedb/plugin.go | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index 7c6e69ee7..b1a0c713f 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -9,9 +9,9 @@ import ( func CrateDBCLI() schema.Executable { return schema.Executable{ - Name: "CrateDB CLI", // TODO: Check if this is correct + Name: "CrateDB Shell", // TODO: Check if this is correct Runs: []string{"crash"}, - DocsURL: sdk.URL("https://cratedb.com/docs/cli"), // TODO: Replace with actual URL + DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), // TODO: Replace with actual URL NeedsAuth: needsauth.IfAll( needsauth.NotForHelpOrVersion(), needsauth.NotWithoutArgs(), diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index 02f569631..400d934ea 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -14,8 +14,8 @@ import ( func DatabaseCredentials() schema.CredentialType { return schema.CredentialType{ Name: credname.DatabaseCredentials, - DocsURL: sdk.URL("https://cratedb.com/docs/database_credentials"), // TODO: Replace with actual URL - ManagementURL: sdk.URL("https://console.cratedb.com/user/security/tokens"), // TODO: Replace with actual URL + DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/run.html#environment-variables"), + ManagementURL: sdk.URL("https://console.cratedb.cloud/account/settings"), Fields: []schema.CredentialField{ { Name: fieldname.Host, diff --git a/plugins/cratedb/database_credentials_test.go b/plugins/cratedb/database_credentials_test.go index 305cbd258..686943e97 100644 --- a/plugins/cratedb/database_credentials_test.go +++ b/plugins/cratedb/database_credentials_test.go @@ -27,12 +27,12 @@ func TestDatabaseCredentialsImporter(t *testing.T) { plugintest.TestImporter(t, DatabaseCredentials().Importer, map[string]plugintest.ImportCase{ "environment": { Environment: map[string]string{ // TODO: Check if this is correct - "CRATEDB": "yqch", + "CRATEPW": "eog-l4ogPoIO4kX8ICHC*6kP", }, ExpectedCandidates: []sdk.ImportCandidate{ { Fields: map[sdk.FieldName]string{ - fieldname.: "yqch", + fieldname.Password: "eog-l4ogPoIO4kX8ICHC*6kP", }, }, }, diff --git a/plugins/cratedb/plugin.go b/plugins/cratedb/plugin.go index c39bfee24..33587b0f7 100644 --- a/plugins/cratedb/plugin.go +++ b/plugins/cratedb/plugin.go @@ -10,7 +10,7 @@ func New() schema.Plugin { Name: "cratedb", Platform: schema.PlatformInfo{ Name: "CrateDB", - Homepage: sdk.URL("https://cratedb.com"), // TODO: Check if this is correct + Homepage: sdk.URL("https://crate.io/"), }, Credentials: []schema.CredentialType{ DatabaseCredentials(), From 95e250273c5cd8389bba8c76c798c83a9e725f62 Mon Sep 17 00:00:00 2001 From: Parthiv Makwana <75653580+parthiv11@users.noreply.github.com> Date: Tue, 27 Jun 2023 18:49:17 +0530 Subject: [PATCH 03/19] Removed config as it has no Creds stored --- plugins/cratedb/database_credentials.go | 30 ++----------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index 400d934ea..642164774 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -46,37 +46,11 @@ func DatabaseCredentials() schema.CredentialType { DefaultProvisioner: provision.EnvVars(defaultEnvVarMapping), Importer: importer.TryAll( importer.TryEnvVarPair(defaultEnvVarMapping), - TryCrateDBConfigFile(), + )} } var defaultEnvVarMapping = map[string]sdk.FieldName{ - "CRATEPW": fieldname.Password, // TODO: Check if this is correct + "CRATEPW": fieldname.Password, } -// TODO: Check if the platform stores the Database Credentials in a local config file, and if so, -// implement the function below to add support for importing it. -func TryCrateDBConfigFile() sdk.Importer { - return importer.TryFile("~/path/to/config/file.yml", func(ctx context.Context, contents importer.FileContents, in sdk.ImportInput, out *sdk.ImportAttempt) { - // var config Config - // if err := contents.ToYAML(&config); err != nil { - // out.AddError(err) - // return - // } - - // if config. == "" { - // return - // } - - // out.AddCandidate(sdk.ImportCandidate{ - // Fields: map[sdk.FieldName]string{ - // fieldname.: config., - // }, - // }) - }) -} - -// TODO: Implement the config file schema -// type Config struct { -// string -// } From 3b82afc69d64ce75c43bb084dfa3ea956f5767af Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 29 Jun 2023 12:24:07 +0530 Subject: [PATCH 04/19] Added Provisioner --- plugins/cratedb/crash.go | 5 ++-- plugins/cratedb/database_credentials.go | 12 +------- plugins/cratedb/provisioner.go | 37 +++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 13 deletions(-) create mode 100644 plugins/cratedb/provisioner.go diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index b1a0c713f..c7edf6126 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -9,9 +9,9 @@ import ( func CrateDBCLI() schema.Executable { return schema.Executable{ - Name: "CrateDB Shell", // TODO: Check if this is correct + Name: "CrateDB Shell", Runs: []string{"crash"}, - DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), // TODO: Replace with actual URL + DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), NeedsAuth: needsauth.IfAll( needsauth.NotForHelpOrVersion(), needsauth.NotWithoutArgs(), @@ -19,6 +19,7 @@ func CrateDBCLI() schema.Executable { Uses: []schema.CredentialUsage{ { Name: credname.DatabaseCredentials, + Provisioner: crateArgsProvisioner, }, }, } diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index 642164774..88895b9fa 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -23,12 +23,7 @@ func DatabaseCredentials() schema.CredentialType { Optional: true, }, { - Name: fieldname.Port, - MarkdownDescription: "Port used to connect to CrateDB.", - Optional: true, - }, - { - Name: fieldname.User, + Name: fieldname.Username, MarkdownDescription: "CrateDB user to authenticate as.", Optional: true, }, @@ -37,11 +32,6 @@ func DatabaseCredentials() schema.CredentialType { MarkdownDescription: "Password used to authenticate to CrateDB.", Secret: true, }, - { - Name: fieldname.Database, - MarkdownDescription: "Database name to connect to.", - Optional: true, - }, }, DefaultProvisioner: provision.EnvVars(defaultEnvVarMapping), Importer: importer.TryAll( diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go new file mode 100644 index 000000000..13f5c6885 --- /dev/null +++ b/plugins/cratedb/provisioner.go @@ -0,0 +1,37 @@ +package cratedb + +import ( + "context" + + "github.com/1Password/shell-plugins/sdk" + "github.com/1Password/shell-plugins/sdk/schema/fieldname" +) + +var argsToProvision = []string{ + "--username", fieldname.Username.String(), + "--hosts", fieldname.Host.String(), +} + +type crateArgsProvisioner struct { +} + +func crateProvisioner() sdk.Provisioner { + return crateArgsProvisioner{} +} + +func (p crateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInput, out *sdk.ProvisionOutput) { + if value, ok := in.ItemFields[fieldname.Password]; ok { + out.AddEnvVar("CRATEPW", value) + } + + out.CommandLine = append(out.CommandLine[1:], argsToProvision...) + +} + +func (p crateArgsProvisioner) Deprovision(ctx context.Context, in sdk.DeprovisionInput, out *sdk.DeprovisionOutput) { + // Nothing to do here: credentials get wiped automatically when the process exits. +} + +func (p crateArgsProvisioner) Description() string { + return "Provision crate secrets as command-line arguments." +} \ No newline at end of file From 1a463e67f4d4411334533a447e35cc76fce633b9 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 29 Jun 2023 12:26:14 +0530 Subject: [PATCH 05/19] Added Provisioner --- plugins/cratedb/provisioner.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 13f5c6885..95ce9cbf3 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -8,8 +8,8 @@ import ( ) var argsToProvision = []string{ - "--username", fieldname.Username.String(), - "--hosts", fieldname.Host.String(), + "--username", fieldname.Username, + "--hosts", fieldname.Host, } type crateArgsProvisioner struct { From cb5fecbfeab52bdcb740ff4b195b076897a7664f Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 29 Jun 2023 14:55:41 +0530 Subject: [PATCH 06/19] Updated provision for crate --- plugins/cratedb/database_credentials.go | 8 +++----- plugins/cratedb/provisioner.go | 13 ++++++++++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index 88895b9fa..fa62030c9 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -33,11 +33,9 @@ func DatabaseCredentials() schema.CredentialType { Secret: true, }, }, - DefaultProvisioner: provision.EnvVars(defaultEnvVarMapping), - Importer: importer.TryAll( - importer.TryEnvVarPair(defaultEnvVarMapping), - - )} + DefaultProvisioner: provision.NoOp(), + Importer: importer.TryEnvVarPair(defaultEnvVarMapping), + } } var defaultEnvVarMapping = map[string]sdk.FieldName{ diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 95ce9cbf3..85ae7ec02 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -24,7 +24,14 @@ func (p crateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInp out.AddEnvVar("CRATEPW", value) } - out.CommandLine = append(out.CommandLine[1:], argsToProvision...) + for i, arg := range argsToProvision { + if i%2 == 0 { + argName := arg + fieldName := sdk.FieldName(argsToProvision[i+1]) + if fieldValue, ok := in.ItemFields[fieldName]; ok { + out.AddArgs(argName, fieldValue) + } + } } @@ -33,5 +40,5 @@ func (p crateArgsProvisioner) Deprovision(ctx context.Context, in sdk.Deprovisio } func (p crateArgsProvisioner) Description() string { - return "Provision crate secrets as command-line arguments." -} \ No newline at end of file + return "Provision CrateDB username, host as command-line arguments && Password as Env ." +} From a3948a303c7f72bd469964f5b8cc2b3c49c60820 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 29 Jun 2023 16:53:34 +0530 Subject: [PATCH 07/19] Updated tests --- plugins/cratedb/database_credentials_test.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/cratedb/database_credentials_test.go b/plugins/cratedb/database_credentials_test.go index 686943e97..d33b25e80 100644 --- a/plugins/cratedb/database_credentials_test.go +++ b/plugins/cratedb/database_credentials_test.go @@ -11,13 +11,21 @@ import ( func TestDatabaseCredentialsProvisioner(t *testing.T) { plugintest.TestProvisioner(t, DatabaseCredentials().DefaultProvisioner, map[string]plugintest.ProvisionCase{ "default": { - ItemFields: map[sdk.FieldName]string{ // TODO: Check if this is correct - fieldname.: "yqch", + ItemFields: map[sdk.FieldName]string{ + fieldname.Password: "1<34&f0rg3t@me", + fieldname.Username: "admin", + fieldname.Host: "https://love.aks1.eastus2.azure.cratedb.net:4200", }, ExpectedOutput: sdk.ProvisionOutput{ Environment: map[string]string{ - "CRATEDB": "yqch", + "CRATEPW": "1<34&f0rg3t@me", }, + CommandLine: []string{ + "--username", + "admin", + "--host", + "https://love.aks1.eastus2.azure.cratedb.net:4200" + } }, }, }) From 61ff5e11434b515de7a0bf05ac7d0acfc4cbd7d0 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 29 Jun 2023 17:50:33 +0530 Subject: [PATCH 08/19] Updated provision --- plugins/cratedb/provisioner.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 85ae7ec02..8f45c0e97 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -7,11 +7,6 @@ import ( "github.com/1Password/shell-plugins/sdk/schema/fieldname" ) -var argsToProvision = []string{ - "--username", fieldname.Username, - "--hosts", fieldname.Host, -} - type crateArgsProvisioner struct { } @@ -24,17 +19,20 @@ func (p crateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInp out.AddEnvVar("CRATEPW", value) } - for i, arg := range argsToProvision { - if i%2 == 0 { - argName := arg - fieldName := sdk.FieldName(argsToProvision[i+1]) - if fieldValue, ok := in.ItemFields[fieldName]; ok { - out.AddArgs(argName, fieldValue) - } - } + var user, host string + if fieldValue, ok := in.ItemFields[fieldname.Username]; ok { + user=fieldValue + } + if fieldValue, ok := in.ItemFields[fieldname.Host]; ok { + host=fieldValue + } + commandLine := []string{out.CommandLine[0], "--username", user, "--hosts", host, } + commandLine = append(commandLine, out.CommandLine[1:]...) + out.CommandLine = commandLine } + func (p crateArgsProvisioner) Deprovision(ctx context.Context, in sdk.DeprovisionInput, out *sdk.DeprovisionOutput) { // Nothing to do here: credentials get wiped automatically when the process exits. } From 0f9cf3fde951a174510ffd5d317a153e841525c3 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 29 Jun 2023 18:13:20 +0530 Subject: [PATCH 09/19] Improved --- plugins/cratedb/crash.go | 2 +- plugins/cratedb/database_credentials.go | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index c7edf6126..0343e43f2 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -19,7 +19,7 @@ func CrateDBCLI() schema.Executable { Uses: []schema.CredentialUsage{ { Name: credname.DatabaseCredentials, - Provisioner: crateArgsProvisioner, + Provisioner: crateProvisioner(), }, }, } diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index fa62030c9..9750da9ca 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -1,7 +1,6 @@ package cratedb import ( - "context" "github.com/1Password/shell-plugins/sdk" "github.com/1Password/shell-plugins/sdk/importer" From d53010e8add2038ea73214dc3976d8d6860ff55c Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Sat, 1 Jul 2023 01:30:04 +0530 Subject: [PATCH 10/19] formatted code --- plugins/cratedb/crash.go | 8 ++++---- plugins/cratedb/database_credentials.go | 8 +++----- plugins/cratedb/plugin.go | 2 +- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index 0343e43f2..5597486b8 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -9,16 +9,16 @@ import ( func CrateDBCLI() schema.Executable { return schema.Executable{ - Name: "CrateDB Shell", - Runs: []string{"crash"}, - DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), + Name: "CrateDB Shell", + Runs: []string{"crash"}, + DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), NeedsAuth: needsauth.IfAll( needsauth.NotForHelpOrVersion(), needsauth.NotWithoutArgs(), ), Uses: []schema.CredentialUsage{ { - Name: credname.DatabaseCredentials, + Name: credname.DatabaseCredentials, Provisioner: crateProvisioner(), }, }, diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index 9750da9ca..c5248c452 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -1,7 +1,6 @@ package cratedb import ( - "github.com/1Password/shell-plugins/sdk" "github.com/1Password/shell-plugins/sdk/importer" "github.com/1Password/shell-plugins/sdk/provision" @@ -33,11 +32,10 @@ func DatabaseCredentials() schema.CredentialType { }, }, DefaultProvisioner: provision.NoOp(), - Importer: importer.TryEnvVarPair(defaultEnvVarMapping), - } + Importer: importer.TryEnvVarPair(defaultEnvVarMapping), + } } var defaultEnvVarMapping = map[string]sdk.FieldName{ - "CRATEPW": fieldname.Password, + "CRATEPW": fieldname.Password, } - diff --git a/plugins/cratedb/plugin.go b/plugins/cratedb/plugin.go index 33587b0f7..c390cd222 100644 --- a/plugins/cratedb/plugin.go +++ b/plugins/cratedb/plugin.go @@ -10,7 +10,7 @@ func New() schema.Plugin { Name: "cratedb", Platform: schema.PlatformInfo{ Name: "CrateDB", - Homepage: sdk.URL("https://crate.io/"), + Homepage: sdk.URL("https://crate.io/"), }, Credentials: []schema.CredentialType{ DatabaseCredentials(), From ac6e97cfbccb4abe9dbe51c189f41257d03ce106 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Sat, 1 Jul 2023 12:54:28 +0530 Subject: [PATCH 11/19] Test passed && validated --- plugins/cratedb/crash.go | 2 +- plugins/cratedb/database_credentials.go | 4 +- plugins/cratedb/database_credentials_test.go | 40 ++------------------ plugins/cratedb/provisioner.go | 17 ++++----- 4 files changed, 15 insertions(+), 48 deletions(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index 5597486b8..a7cb51096 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -19,7 +19,7 @@ func CrateDBCLI() schema.Executable { Uses: []schema.CredentialUsage{ { Name: credname.DatabaseCredentials, - Provisioner: crateProvisioner(), + Provisioner: CrateArgsProvisioner{} , }, }, } diff --git a/plugins/cratedb/database_credentials.go b/plugins/cratedb/database_credentials.go index c5248c452..2c08013e7 100644 --- a/plugins/cratedb/database_credentials.go +++ b/plugins/cratedb/database_credentials.go @@ -18,12 +18,12 @@ func DatabaseCredentials() schema.CredentialType { { Name: fieldname.Host, MarkdownDescription: "CrateDB host to connect to.", - Optional: true, + Optional: false, }, { Name: fieldname.Username, MarkdownDescription: "CrateDB user to authenticate as.", - Optional: true, + Optional: false, }, { Name: fieldname.Password, diff --git a/plugins/cratedb/database_credentials_test.go b/plugins/cratedb/database_credentials_test.go index d33b25e80..90c7b5841 100644 --- a/plugins/cratedb/database_credentials_test.go +++ b/plugins/cratedb/database_credentials_test.go @@ -9,11 +9,10 @@ import ( ) func TestDatabaseCredentialsProvisioner(t *testing.T) { - plugintest.TestProvisioner(t, DatabaseCredentials().DefaultProvisioner, map[string]plugintest.ProvisionCase{ + plugintest.TestProvisioner(t, CrateArgsProvisioner{}, map[string]plugintest.ProvisionCase{ "default": { ItemFields: map[sdk.FieldName]string{ fieldname.Password: "1<34&f0rg3t@me", - fieldname.Username: "admin", fieldname.Host: "https://love.aks1.eastus2.azure.cratedb.net:4200", }, ExpectedOutput: sdk.ProvisionOutput{ @@ -22,42 +21,11 @@ func TestDatabaseCredentialsProvisioner(t *testing.T) { }, CommandLine: []string{ "--username", - "admin", - "--host", - "https://love.aks1.eastus2.azure.cratedb.net:4200" - } - }, - }, - }) -} - -func TestDatabaseCredentialsImporter(t *testing.T) { - plugintest.TestImporter(t, DatabaseCredentials().Importer, map[string]plugintest.ImportCase{ - "environment": { - Environment: map[string]string{ // TODO: Check if this is correct - "CRATEPW": "eog-l4ogPoIO4kX8ICHC*6kP", - }, - ExpectedCandidates: []sdk.ImportCandidate{ - { - Fields: map[sdk.FieldName]string{ - fieldname.Password: "eog-l4ogPoIO4kX8ICHC*6kP", - }, + "", + "--hosts", + "https://love.aks1.eastus2.azure.cratedb.net:4200", }, }, }, - // TODO: If you implemented a config file importer, add a test file example in cratedb/test-fixtures - // and fill the necessary details in the test template below. - "config file": { - Files: map[string]string{ - // "~/path/to/config.yml": plugintest.LoadFixture(t, "config.yml"), - }, - ExpectedCandidates: []sdk.ImportCandidate{ - // { - // Fields: map[sdk.FieldName]string{ - // fieldname.Token: "yqch", - // }, - // }, - }, - }, }) } diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 8f45c0e97..749067f6d 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -7,14 +7,14 @@ import ( "github.com/1Password/shell-plugins/sdk/schema/fieldname" ) -type crateArgsProvisioner struct { +type CrateArgsProvisioner struct { } func crateProvisioner() sdk.Provisioner { - return crateArgsProvisioner{} + return CrateArgsProvisioner{} } -func (p crateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInput, out *sdk.ProvisionOutput) { +func (p CrateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInput, out *sdk.ProvisionOutput) { if value, ok := in.ItemFields[fieldname.Password]; ok { out.AddEnvVar("CRATEPW", value) } @@ -26,17 +26,16 @@ func (p crateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInp if fieldValue, ok := in.ItemFields[fieldname.Host]; ok { host=fieldValue } - commandLine := []string{out.CommandLine[0], "--username", user, "--hosts", host, } - commandLine = append(commandLine, out.CommandLine[1:]...) - out.CommandLine = commandLine + + out.CommandLine = []string{"--username", user, "--hosts", host, } + } - -func (p crateArgsProvisioner) Deprovision(ctx context.Context, in sdk.DeprovisionInput, out *sdk.DeprovisionOutput) { +func (p CrateArgsProvisioner) Deprovision(ctx context.Context, in sdk.DeprovisionInput, out *sdk.DeprovisionOutput) { // Nothing to do here: credentials get wiped automatically when the process exits. } -func (p crateArgsProvisioner) Description() string { +func (p CrateArgsProvisioner) Description() string { return "Provision CrateDB username, host as command-line arguments && Password as Env ." } From e457eb48b5f6ac9891d2a50908c35b18ce9331bd Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Wed, 5 Jul 2023 09:57:30 +0530 Subject: [PATCH 12/19] Removed unused function --- plugins/cratedb/provisioner.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 749067f6d..46552b9da 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -10,9 +10,7 @@ import ( type CrateArgsProvisioner struct { } -func crateProvisioner() sdk.Provisioner { - return CrateArgsProvisioner{} -} + func (p CrateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInput, out *sdk.ProvisionOutput) { if value, ok := in.ItemFields[fieldname.Password]; ok { From 18bc6c02e1928afe33ebeb1bebfdd1adb4adc1d9 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Mon, 10 Jul 2023 21:00:20 +0530 Subject: [PATCH 13/19] .. --- plugins/cratedb/provisioner.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 46552b9da..814d506c2 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -25,7 +25,7 @@ func (p CrateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInp host=fieldValue } - out.CommandLine = []string{"--username", user, "--hosts", host, } + out.CommandLine = []string{ "--hosts", host, "--username", user,} } From 6f7864875aca1341ea51050b6d2a9d89a8b55a34 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Tue, 11 Jul 2023 22:39:02 +0530 Subject: [PATCH 14/19] provision improved --- plugins/cratedb/provisioner.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 814d506c2..e6de76d59 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -24,8 +24,9 @@ func (p CrateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInp if fieldValue, ok := in.ItemFields[fieldname.Host]; ok { host=fieldValue } + // commandLine := []string - out.CommandLine = []string{ "--hosts", host, "--username", user,} + out.CommandLine = append{out.CommandLine , "--hosts", host, "--username", user,} } From 955a8fb371ffb2fef1a5aaeaa1da7f35bcbbfbac Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Tue, 11 Jul 2023 23:29:46 +0530 Subject: [PATCH 15/19] Updated `_` --- plugins/cratedb/database_credentials_test.go | 10 +++++++--- plugins/cratedb/provisioner.go | 3 ++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/cratedb/database_credentials_test.go b/plugins/cratedb/database_credentials_test.go index 90c7b5841..f6b9608c8 100644 --- a/plugins/cratedb/database_credentials_test.go +++ b/plugins/cratedb/database_credentials_test.go @@ -12,18 +12,22 @@ func TestDatabaseCredentialsProvisioner(t *testing.T) { plugintest.TestProvisioner(t, CrateArgsProvisioner{}, map[string]plugintest.ProvisionCase{ "default": { ItemFields: map[sdk.FieldName]string{ - fieldname.Password: "1<34&f0rg3t@me", + fieldname.Host: "https://love.aks1.eastus2.azure.cratedb.net:4200", + fieldname.Username: "admin", + fieldname.Password: "1<34&f0rg3t@me", }, + CommandLine: []string{"crash"}, ExpectedOutput: sdk.ProvisionOutput{ Environment: map[string]string{ "CRATEPW": "1<34&f0rg3t@me", }, CommandLine: []string{ - "--username", - "", + "crash", "--hosts", "https://love.aks1.eastus2.azure.cratedb.net:4200", + "--username", + "admin", }, }, }, diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index e6de76d59..3d46cce2a 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -26,7 +26,8 @@ func (p CrateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInp } // commandLine := []string - out.CommandLine = append{out.CommandLine , "--hosts", host, "--username", user,} + out.CommandLine = append(out.CommandLine, []string{"--hosts", host, "--username", user}...) + } From 1c50922ed8709db7796da7c6f256dc9c55e0d8f8 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Wed, 12 Jul 2023 00:41:52 +0530 Subject: [PATCH 16/19] changed needauth condition --- plugins/cratedb/crash.go | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index a7cb51096..8ca78c64e 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -14,7 +14,6 @@ func CrateDBCLI() schema.Executable { DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), NeedsAuth: needsauth.IfAll( needsauth.NotForHelpOrVersion(), - needsauth.NotWithoutArgs(), ), Uses: []schema.CredentialUsage{ { From b469c6e41145ae7dcaa9c895304959f053633b7c Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Wed, 12 Jul 2023 00:51:32 +0530 Subject: [PATCH 17/19] changed needauth condition --- plugins/cratedb/crash.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index 8ca78c64e..1aacffe75 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -12,9 +12,7 @@ func CrateDBCLI() schema.Executable { Name: "CrateDB Shell", Runs: []string{"crash"}, DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), - NeedsAuth: needsauth.IfAll( - needsauth.NotForHelpOrVersion(), - ), + NeedsAuth: needsauth.needsauth.NotForHelpOrVersion(), Uses: []schema.CredentialUsage{ { Name: credname.DatabaseCredentials, From 91fa45c49b46f1eb0fea01985d31acceccb80f23 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Fri, 14 Jul 2023 21:40:12 +0530 Subject: [PATCH 18/19] formated document --- plugins/cratedb/crash.go | 8 +++---- plugins/cratedb/database_credentials_test.go | 10 ++++----- plugins/cratedb/provisioner.go | 22 +++++++------------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index 1aacffe75..7bb3c4b97 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -9,14 +9,14 @@ import ( func CrateDBCLI() schema.Executable { return schema.Executable{ - Name: "CrateDB Shell", - Runs: []string{"crash"}, - DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), + Name: "CrateDB Shell", + Runs: []string{"crash"}, + DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), NeedsAuth: needsauth.needsauth.NotForHelpOrVersion(), Uses: []schema.CredentialUsage{ { Name: credname.DatabaseCredentials, - Provisioner: CrateArgsProvisioner{} , + Provisioner: CrateArgsProvisioner{}, }, }, } diff --git a/plugins/cratedb/database_credentials_test.go b/plugins/cratedb/database_credentials_test.go index f6b9608c8..48d5f02ff 100644 --- a/plugins/cratedb/database_credentials_test.go +++ b/plugins/cratedb/database_credentials_test.go @@ -2,18 +2,18 @@ package cratedb import ( "testing" - + "github.com/1Password/shell-plugins/sdk" "github.com/1Password/shell-plugins/sdk/plugintest" "github.com/1Password/shell-plugins/sdk/schema/fieldname" ) - + func TestDatabaseCredentialsProvisioner(t *testing.T) { plugintest.TestProvisioner(t, CrateArgsProvisioner{}, map[string]plugintest.ProvisionCase{ "default": { - ItemFields: map[sdk.FieldName]string{ - - fieldname.Host: "https://love.aks1.eastus2.azure.cratedb.net:4200", + ItemFields: map[sdk.FieldName]string{ + + fieldname.Host: "https://love.aks1.eastus2.azure.cratedb.net:4200", fieldname.Username: "admin", fieldname.Password: "1<34&f0rg3t@me", }, diff --git a/plugins/cratedb/provisioner.go b/plugins/cratedb/provisioner.go index 3d46cce2a..fea5bbc9b 100644 --- a/plugins/cratedb/provisioner.go +++ b/plugins/cratedb/provisioner.go @@ -10,26 +10,18 @@ import ( type CrateArgsProvisioner struct { } - - func (p CrateArgsProvisioner) Provision(ctx context.Context, in sdk.ProvisionInput, out *sdk.ProvisionOutput) { if value, ok := in.ItemFields[fieldname.Password]; ok { out.AddEnvVar("CRATEPW", value) } - - var user, host string - if fieldValue, ok := in.ItemFields[fieldname.Username]; ok { - user=fieldValue - } - if fieldValue, ok := in.ItemFields[fieldname.Host]; ok { - host=fieldValue - } - // commandLine := []string - out.CommandLine = append(out.CommandLine, []string{"--hosts", host, "--username", user}...) - - - + user, userFound := in.ItemFields[fieldname.Username] + host, hostFound := in.ItemFields[fieldname.Host] + if userFound && hostFound { + commandLine := []string{out.CommandLine[0], "--user", user, "--host", host} + commandLine = append(commandLine, out.CommandLine[1:]...) + out.CommandLine = commandLine + } } func (p CrateArgsProvisioner) Deprovision(ctx context.Context, in sdk.DeprovisionInput, out *sdk.DeprovisionOutput) { From f6be8b46a9af724e0dd897ad647fffe0b0531765 Mon Sep 17 00:00:00 2001 From: parthiv11 Date: Thu, 7 Sep 2023 16:29:20 +0530 Subject: [PATCH 19/19] typo --- plugins/cratedb/crash.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/cratedb/crash.go b/plugins/cratedb/crash.go index 7bb3c4b97..c318441e3 100644 --- a/plugins/cratedb/crash.go +++ b/plugins/cratedb/crash.go @@ -12,7 +12,7 @@ func CrateDBCLI() schema.Executable { Name: "CrateDB Shell", Runs: []string{"crash"}, DocsURL: sdk.URL("https://crate.io/docs/crate/crash/en/latest/"), - NeedsAuth: needsauth.needsauth.NotForHelpOrVersion(), + NeedsAuth: needsauth.NotForHelpOrVersion(), Uses: []schema.CredentialUsage{ { Name: credname.DatabaseCredentials,