Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add native toolchain definition to connector metadata #687

Merged
merged 10 commits into from
Feb 19, 2025
13 changes: 13 additions & 0 deletions crates/cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -134,6 +135,18 @@ async fn initialize(with_metadata: bool, context: Context<impl Environment>) ->
action: metadata::DockerComposeWatchAction::SyncAndRestart,
ignore: vec![],
}],
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\" \"$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\"$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(),
})
};

fs::write(metadata_file, serde_yaml::to_string(&metadata)?).await?;
Expand Down
24 changes: 24 additions & 0 deletions crates/cli/src/metadata.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand All @@ -14,6 +16,8 @@ pub struct ConnectorMetadataDefinition {
pub cli_plugin: Option<CliPluginDefinition>,
#[serde(skip_serializing_if = "Vec::is_empty")]
pub docker_compose_watch: DockerComposeWatch,
#[serde(skip_serializing_if = "Option::is_none")]
pub native_toolchain_definition: Option<NativeToolchainDefinition>,
}

#[derive(Debug, Serialize, Deserialize)]
Expand Down Expand Up @@ -75,3 +79,23 @@ pub enum DockerComposeWatchAction {
#[serde(rename = "sync+restart")]
SyncAndRestart,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct NativeToolchainDefinition {
pub commands: BTreeMap<CommandName, CommandDefinition>,
}

pub type CommandName = String;

#[derive(Debug, Serialize, Deserialize)]
#[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<String>,
},
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,23 @@ 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" "$HASURA_DDN_NATIVE_CONNECTOR_DIR/ndc-postgres" serve
powershell: |-
$ErrorActionPreference = "Stop"
$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
"$HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR/hasura-ndc-postgres" update
powershell: |-
$ErrorActionPreference = "Stop"
& "$env:HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR\hasura-ndc-postgres.exe" update
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,23 @@ 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" "$HASURA_DDN_NATIVE_CONNECTOR_DIR/ndc-postgres" serve
powershell: |-
$ErrorActionPreference = "Stop"
$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
"$HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR/hasura-ndc-postgres" update
powershell: |-
$ErrorActionPreference = "Stop"
& "$env:HASURA_DDN_NATIVE_CONNECTOR_PLUGIN_DIR\hasura-ndc-postgres.exe" update
Loading