From 343b8b364be99f20ba2fe4a1c2a3a66074facdb1 Mon Sep 17 00:00:00 2001 From: Paritosh Date: Fri, 31 Jan 2025 11:58:05 +0530 Subject: [PATCH 1/7] add native toolchain definition to connector metadata --- crates/cli/src/lib.rs | 15 +++++++++++++++ crates/cli/src/metadata.rs | 26 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/crates/cli/src/lib.rs b/crates/cli/src/lib.rs index 208d1541e..e400a9cb1 100644 --- a/crates/cli/src/lib.rs +++ b/crates/cli/src/lib.rs @@ -9,6 +9,7 @@ mod native_operations; use std::path::PathBuf; use clap::Subcommand; +use metadata::NativeToolchainDefinition; use tokio::fs; use ndc_postgres_configuration as configuration; @@ -134,6 +135,20 @@ async fn initialize(with_metadata: bool, context: Context) -> action: metadata::DockerComposeWatchAction::SyncAndRestart, ignore: vec![], }], + native_toolchain_definition: Some(NativeToolchainDefinition { + commands: vec![ + ("start".to_string(), metadata::CommandDefinition { + command_type: metadata::CommandType::ShellScript, + bash: "#!/usr/bin/env bash\nset -eu -o pipefail\nHASURA_CONFIGURATION_DIRECTORY=\"$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\" ndc-postgres serve".to_string(), + powershell: String::new(), + }), + ("update".to_string(), metadata::CommandDefinition { + command_type: metadata::CommandType::ShellScript, + bash: "#!/usr/bin/env bash\nset -eu -o pipefail\n\"$HOME/.ddn/plugins/bin/hasura-ndc_postgres\" update".to_string(), + powershell: String::new(), + }), + ].into_iter().collect(), + }) }; fs::write(metadata_file, serde_yaml::to_string(&metadata)?).await?; diff --git a/crates/cli/src/metadata.rs b/crates/cli/src/metadata.rs index 74d2c8d1c..52a6542e2 100644 --- a/crates/cli/src/metadata.rs +++ b/crates/cli/src/metadata.rs @@ -2,6 +2,8 @@ //! //! See https://github.com/hasura/ndc-hub/blob/main/rfcs/0001-packaging.md#connector-definition. +use std::collections::BTreeMap; + use serde::{Deserialize, Serialize}; #[derive(Debug, Serialize, Deserialize)] @@ -14,6 +16,8 @@ pub struct ConnectorMetadataDefinition { pub cli_plugin: Option, #[serde(skip_serializing_if = "Vec::is_empty")] pub docker_compose_watch: DockerComposeWatch, + #[serde(skip_serializing_if = "Option::is_none")] + pub native_toolchain_definition: Option, } #[derive(Debug, Serialize, Deserialize)] @@ -75,3 +79,25 @@ pub enum DockerComposeWatchAction { #[serde(rename = "sync+restart")] SyncAndRestart, } + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct NativeToolchainDefinition { + pub commands: BTreeMap, +} + +pub type CommandName = String; + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct CommandDefinition { + #[serde(rename = "type")] + pub command_type: CommandType, + pub bash: String, + pub powershell: String, +} + +#[derive(Debug, Serialize, Deserialize)] +pub enum CommandType { + ShellScript, +} From f9fbb6150c97313c3385128f4885a2ae11ef97a3 Mon Sep 17 00:00:00 2001 From: Paritosh Date: Fri, 31 Jan 2025 12:08:32 +0530 Subject: [PATCH 2/7] update test --- ...ests__initialize_directory_with_metadata.snap | 16 ++++++++++++++++ ...ectory_with_metadata_and_release_version.snap | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap index 1dc499fea..e49249fb3 100644 --- a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap +++ b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap @@ -27,3 +27,19 @@ dockerComposeWatch: - path: ./ target: /etc/connector action: sync+restart +nativeToolchainDefinition: + commands: + start: + type: ShellScript + bash: |- + #!/usr/bin/env bash + set -eu -o pipefail + HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" ndc-postgres serve + powershell: '' + update: + type: ShellScript + bash: |- + #!/usr/bin/env bash + set -eu -o pipefail + "$HOME/.ddn/plugins/bin/hasura-ndc_postgres" update + powershell: '' diff --git a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap index 1ee975a94..b4a7a6def 100644 --- a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap +++ b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap @@ -27,3 +27,19 @@ dockerComposeWatch: - path: ./ target: /etc/connector action: sync+restart +nativeToolchainDefinition: + commands: + start: + type: ShellScript + bash: |- + #!/usr/bin/env bash + set -eu -o pipefail + HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" ndc-postgres serve + powershell: '' + update: + type: ShellScript + bash: |- + #!/usr/bin/env bash + set -eu -o pipefail + "$HOME/.ddn/plugins/bin/hasura-ndc_postgres" update + powershell: '' From 4af35e50f99b0d4f30971ab2022433d28b0aa288 Mon Sep 17 00:00:00 2001 From: Paritosh Date: Mon, 3 Feb 2025 13:34:55 +0530 Subject: [PATCH 3/7] add `Dockerized` command type --- crates/cli/src/lib.rs | 7 +++---- crates/cli/src/metadata.rs | 23 ++++++++++++----------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/crates/cli/src/lib.rs b/crates/cli/src/lib.rs index e400a9cb1..a19e529f9 100644 --- a/crates/cli/src/lib.rs +++ b/crates/cli/src/lib.rs @@ -137,13 +137,12 @@ async fn initialize(with_metadata: bool, context: Context) -> }], native_toolchain_definition: Some(NativeToolchainDefinition { commands: vec![ - ("start".to_string(), metadata::CommandDefinition { - command_type: metadata::CommandType::ShellScript, + ("start".to_string(), metadata::CommandDefinition::ShellScript { bash: "#!/usr/bin/env bash\nset -eu -o pipefail\nHASURA_CONFIGURATION_DIRECTORY=\"$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\" ndc-postgres serve".to_string(), powershell: String::new(), + }), - ("update".to_string(), metadata::CommandDefinition { - command_type: metadata::CommandType::ShellScript, + ("update".to_string(), metadata::CommandDefinition::ShellScript { bash: "#!/usr/bin/env bash\nset -eu -o pipefail\n\"$HOME/.ddn/plugins/bin/hasura-ndc_postgres\" update".to_string(), powershell: String::new(), }), diff --git a/crates/cli/src/metadata.rs b/crates/cli/src/metadata.rs index 52a6542e2..8019a0de9 100644 --- a/crates/cli/src/metadata.rs +++ b/crates/cli/src/metadata.rs @@ -89,15 +89,16 @@ pub struct NativeToolchainDefinition { pub type CommandName = String; #[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "camelCase")] -pub struct CommandDefinition { - #[serde(rename = "type")] - pub command_type: CommandType, - pub bash: String, - pub powershell: String, -} - -#[derive(Debug, Serialize, Deserialize)] -pub enum CommandType { - ShellScript, +#[serde(rename_all = "PascalCase", tag = "type")] +pub enum CommandDefinition { + #[serde(rename_all = "camelCase")] + ShellScript { + bash: String, + powershell: String, + }, + #[serde(rename_all = "camelCase")] + DockerizedCommand { + docker_image: String, + command_args: Vec, + } } From 272382bcbbdf6b57fff9e3cc81c1da0326e9fa5d Mon Sep 17 00:00:00 2001 From: Paritosh Date: Mon, 3 Feb 2025 15:05:17 +0530 Subject: [PATCH 4/7] lint --- crates/cli/src/metadata.rs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/crates/cli/src/metadata.rs b/crates/cli/src/metadata.rs index 8019a0de9..756df3ff7 100644 --- a/crates/cli/src/metadata.rs +++ b/crates/cli/src/metadata.rs @@ -92,13 +92,10 @@ pub type CommandName = String; #[serde(rename_all = "PascalCase", tag = "type")] pub enum CommandDefinition { #[serde(rename_all = "camelCase")] - ShellScript { - bash: String, - powershell: String, - }, + ShellScript { bash: String, powershell: String }, #[serde(rename_all = "camelCase")] DockerizedCommand { docker_image: String, command_args: Vec, - } + }, } From 2c0204d55bb6921ad98e5592d42fd309825c68b4 Mon Sep 17 00:00:00 2001 From: Paritosh Date: Thu, 6 Feb 2025 12:38:28 +0530 Subject: [PATCH 5/7] update command and add powershell command --- crates/cli/src/lib.rs | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/crates/cli/src/lib.rs b/crates/cli/src/lib.rs index a19e529f9..8b51cea24 100644 --- a/crates/cli/src/lib.rs +++ b/crates/cli/src/lib.rs @@ -139,12 +139,11 @@ async fn initialize(with_metadata: bool, context: Context) -> commands: vec![ ("start".to_string(), metadata::CommandDefinition::ShellScript { bash: "#!/usr/bin/env bash\nset -eu -o pipefail\nHASURA_CONFIGURATION_DIRECTORY=\"$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\" ndc-postgres serve".to_string(), - powershell: String::new(), - + powershell: "$ErrorActionPreference = \"Stop\"\n$env:HASURA_CONFIGURATION_DIRECTORY=\"$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\"; & ndc-postgres.exe serve".to_string(), }), ("update".to_string(), metadata::CommandDefinition::ShellScript { - bash: "#!/usr/bin/env bash\nset -eu -o pipefail\n\"$HOME/.ddn/plugins/bin/hasura-ndc_postgres\" update".to_string(), - powershell: String::new(), + bash: "#!/usr/bin/env bash\nset -eu -o pipefail\n\"$HOME/.ddn/plugins/store/ndc-postgres/$POSTGRES_VERSION/hasura-ndc-postgres\" update".to_string(), + powershell: "$ErrorActionPreference = \"Stop\"\n& \"$env:USERPROFILE\\.ddn\\plugins\\store\\ndc-postgres\\$env:POSTGRES_VERSION\\hasura-ndc-postgres.exe\" update".to_string(), }), ].into_iter().collect(), }) From 19aad089b6bda6abbda6e6831fc6fff85fee518d Mon Sep 17 00:00:00 2001 From: Paritosh Date: Thu, 6 Feb 2025 12:47:33 +0530 Subject: [PATCH 6/7] update test snapshots --- ...lize_tests__initialize_directory_with_metadata.snap | 10 +++++++--- ...ze_directory_with_metadata_and_release_version.snap | 10 +++++++--- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap index e49249fb3..27952fd27 100644 --- a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap +++ b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap @@ -35,11 +35,15 @@ nativeToolchainDefinition: #!/usr/bin/env bash set -eu -o pipefail HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" ndc-postgres serve - powershell: '' + powershell: |- + $ErrorActionPreference = "Stop" + $env:HASURA_CONFIGURATION_DIRECTORY="$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH"; & ndc-postgres.exe serve update: type: ShellScript bash: |- #!/usr/bin/env bash set -eu -o pipefail - "$HOME/.ddn/plugins/bin/hasura-ndc_postgres" update - powershell: '' + "$HOME/.ddn/plugins/store/ndc-postgres/$POSTGRES_VERSION/hasura-ndc-postgres" update + powershell: |- + $ErrorActionPreference = "Stop" + & "$env:USERPROFILE\.ddn\plugins\store\ndc-postgres\$env:POSTGRES_VERSION\hasura-ndc-postgres.exe" update diff --git a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap index b4a7a6def..d983b28fb 100644 --- a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap +++ b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap @@ -35,11 +35,15 @@ nativeToolchainDefinition: #!/usr/bin/env bash set -eu -o pipefail HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" ndc-postgres serve - powershell: '' + powershell: |- + $ErrorActionPreference = "Stop" + $env:HASURA_CONFIGURATION_DIRECTORY="$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH"; & ndc-postgres.exe serve update: type: ShellScript bash: |- #!/usr/bin/env bash set -eu -o pipefail - "$HOME/.ddn/plugins/bin/hasura-ndc_postgres" update - powershell: '' + "$HOME/.ddn/plugins/store/ndc-postgres/$POSTGRES_VERSION/hasura-ndc-postgres" update + powershell: |- + $ErrorActionPreference = "Stop" + & "$env:USERPROFILE\.ddn\plugins\store\ndc-postgres\$env:POSTGRES_VERSION\hasura-ndc-postgres.exe" update From fd0ca3a162da467720e6418afcbe36c9c594fb63 Mon Sep 17 00:00:00 2001 From: Paritosh Date: Tue, 18 Feb 2025 18:36:10 +0530 Subject: [PATCH 7/7] update scripts --- crates/cli/src/lib.rs | 8 ++++---- ...tialize_tests__initialize_directory_with_metadata.snap | 8 ++++---- ...alize_directory_with_metadata_and_release_version.snap | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/crates/cli/src/lib.rs b/crates/cli/src/lib.rs index 8b51cea24..7bb8cfc13 100644 --- a/crates/cli/src/lib.rs +++ b/crates/cli/src/lib.rs @@ -138,12 +138,12 @@ async fn initialize(with_metadata: bool, context: Context) -> native_toolchain_definition: Some(NativeToolchainDefinition { commands: vec![ ("start".to_string(), metadata::CommandDefinition::ShellScript { - bash: "#!/usr/bin/env bash\nset -eu -o pipefail\nHASURA_CONFIGURATION_DIRECTORY=\"$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\" ndc-postgres serve".to_string(), - powershell: "$ErrorActionPreference = \"Stop\"\n$env:HASURA_CONFIGURATION_DIRECTORY=\"$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\"; & ndc-postgres.exe serve".to_string(), + bash: "#!/usr/bin/env bash\nset -eu -o pipefail\nHASURA_CONFIGURATION_DIRECTORY=\"$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\" \"$HASURA_DDN_NATIVE_CONNECTOR_DIR/ndc-postgres\" serve".to_string(), + powershell: "$ErrorActionPreference = \"Stop\"\n$env:HASURA_CONFIGURATION_DIRECTORY=\"$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH\"; & \"$env:HASURA_DDN_NATIVE_CONNECTOR_DIR\\ndc-postgres.exe\" serve".to_string(), }), ("update".to_string(), metadata::CommandDefinition::ShellScript { - bash: "#!/usr/bin/env bash\nset -eu -o pipefail\n\"$HOME/.ddn/plugins/store/ndc-postgres/$POSTGRES_VERSION/hasura-ndc-postgres\" update".to_string(), - powershell: "$ErrorActionPreference = \"Stop\"\n& \"$env:USERPROFILE\\.ddn\\plugins\\store\\ndc-postgres\\$env:POSTGRES_VERSION\\hasura-ndc-postgres.exe\" update".to_string(), + bash: "#!/usr/bin/env bash\nset -eu -o pipefail\n\"$HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR/hasura-ndc-postgres\" update".to_string(), + powershell: "$ErrorActionPreference = \"Stop\"\n& \"$env:HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR\\hasura-ndc-postgres.exe\" update".to_string(), }), ].into_iter().collect(), }) diff --git a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap index 27952fd27..78d7bd254 100644 --- a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap +++ b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata.snap @@ -34,16 +34,16 @@ nativeToolchainDefinition: bash: |- #!/usr/bin/env bash set -eu -o pipefail - HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" ndc-postgres serve + HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" "$HASURA_DDN_NATIVE_CONNECTOR_DIR/ndc-postgres" serve powershell: |- $ErrorActionPreference = "Stop" - $env:HASURA_CONFIGURATION_DIRECTORY="$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH"; & ndc-postgres.exe serve + $env:HASURA_CONFIGURATION_DIRECTORY="$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH"; & "$env:HASURA_DDN_NATIVE_CONNECTOR_DIR\ndc-postgres.exe" serve update: type: ShellScript bash: |- #!/usr/bin/env bash set -eu -o pipefail - "$HOME/.ddn/plugins/store/ndc-postgres/$POSTGRES_VERSION/hasura-ndc-postgres" update + "$HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR/hasura-ndc-postgres" update powershell: |- $ErrorActionPreference = "Stop" - & "$env:USERPROFILE\.ddn\plugins\store\ndc-postgres\$env:POSTGRES_VERSION\hasura-ndc-postgres.exe" update + & "$env:HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR\hasura-ndc-postgres.exe" update diff --git a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap index d983b28fb..1420b3ebf 100644 --- a/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap +++ b/crates/cli/tests/snapshots/initialize_tests__initialize_directory_with_metadata_and_release_version.snap @@ -34,16 +34,16 @@ nativeToolchainDefinition: bash: |- #!/usr/bin/env bash set -eu -o pipefail - HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" ndc-postgres serve + HASURA_CONFIGURATION_DIRECTORY="$HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH" "$HASURA_DDN_NATIVE_CONNECTOR_DIR/ndc-postgres" serve powershell: |- $ErrorActionPreference = "Stop" - $env:HASURA_CONFIGURATION_DIRECTORY="$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH"; & ndc-postgres.exe serve + $env:HASURA_CONFIGURATION_DIRECTORY="$env:HASURA_PLUGIN_CONNECTOR_CONTEXT_PATH"; & "$env:HASURA_DDN_NATIVE_CONNECTOR_DIR\ndc-postgres.exe" serve update: type: ShellScript bash: |- #!/usr/bin/env bash set -eu -o pipefail - "$HOME/.ddn/plugins/store/ndc-postgres/$POSTGRES_VERSION/hasura-ndc-postgres" update + "$HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR/hasura-ndc-postgres" update powershell: |- $ErrorActionPreference = "Stop" - & "$env:USERPROFILE\.ddn\plugins\store\ndc-postgres\$env:POSTGRES_VERSION\hasura-ndc-postgres.exe" update + & "$env:HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR\hasura-ndc-postgres.exe" update