Skip to main content
Glama
main.rs4.92 kB
// use std::{env, path::Path, sync::Arc}; // use buck2_resources::Buck2Resources; // use dal::generate_unique_id; // use dal::{ // pkg::import_pkg_from_pkg, ChangeSet, DalContext, JobQueueProcessor, NatsProcessor, // ServicesContext, Tenancy, Workspace, // }; // use si_crypto::{SymmetricCryptoService, SymmetricCryptoServiceConfigFile}; // use si_data_nats::{NatsClient, NatsConfig}; // use si_data_pg::{PgPool, PgPoolConfig}; // use si_pkg::SiPkg; // use veritech_client::{Client as VeritechClient, CycloneEncryptionKey}; type Result<T> = std::result::Result<T, Box<dyn std::error::Error + 'static>>; #[tokio::main] async fn main() -> Result<()> { // let mut args = env::args(); // let tar_file = args.nth(1).expect("usage: program <PKG_FILE>"); // let mut ctx = ctx().await?; // let workspace = match Workspace::find_first_user_workspace(&ctx).await? { // Some(workspace) => workspace, // None => Workspace::builtin(&ctx).await?, // }; // ctx.update_tenancy(Tenancy::new(*workspace.pk())); // let pkg = SiPkg::load_from_file(Path::new(&tar_file)).await?; // let metadata = pkg.metadata()?; // let change_set_name = format!( // "pkg - {} ({}) {}", // metadata.name(), // metadata.version(), // generate_unique_id(4) // ); // let change_set = ChangeSet::new(&ctx, &change_set_name, None).await?; // let ctx = ctx.clone_with_new_visibility(ctx.visibility().to_change_set(change_set.pk)); // println!( // "--- Importing pkg: {tar_file} into change set \"{change_set_name}\" in workspace \"{}\"", // workspace.name() // ); // import_pkg_from_pkg(&ctx, &pkg, None).await?; // println!("--- Committing database transaction"); // ctx.commit().await?; // println!(" - Committed."); // println!("--- Import complete."); Ok(()) } // async fn ctx() -> Result<DalContext> { // let encryption_key = Arc::new(load_encryption_key().await?); // let pg_pool = create_pg_pool().await?; // let nats_conn = connect_to_nats().await?; // let veritech = create_veritech_client(nats_conn.clone()); // let symmetric_crypto_service = create_symmetric_crypto_service().await?; // let job_processor = connect_processor(nats_conn.clone()).await?; // let services_context = ServicesContext::new( // pg_pool, // nats_conn, // job_processor, // veritech, // encryption_key, // None, // None, // symmetric_crypto_service, // ); // Ok(DalContext::builder(services_context, false) // .build_default() // .await?) // } // async fn create_pg_pool() -> Result<PgPool> { // PgPool::new(&PgPoolConfig::default()) // .await // .map_err(Into::into) // } // async fn connect_to_nats() -> Result<NatsClient> { // NatsClient::new(&NatsConfig::default()) // .await // .map_err(Into::into) // } // fn create_veritech_client(nats: NatsClient) -> VeritechClient { // VeritechClient::new(nats) // } // #[allow(clippy::disallowed_methods)] // Used to determine if running in development // async fn load_encryption_key() -> Result<CycloneEncryptionKey> { // let path = if env::var("BUCK_RUN_BUILD_ID").is_ok() || env::var("BUCK_BUILD_ID").is_ok() { // Buck2Resources::read()?.get_ends_with("dev.encryption.key")? // } else if let Ok(dir) = env::var("CARGO_MANIFEST_DIR") { // Path::new(&dir).join("../../lib/veritech-server/src/dev.encryption.key") // } else { // unimplemented!("not running with Buck2 or Cargo, unsupported") // }; // CycloneEncryptionKey::load(path).await.map_err(Into::into) // } // #[allow(clippy::disallowed_methods)] // Used to determine if running in development // async fn create_symmetric_crypto_service() -> Result<SymmetricCryptoService> { // let active_key = if env::var("BUCK_RUN_BUILD_ID").is_ok() || env::var("BUCK_BUILD_ID").is_ok() { // Buck2Resources::read()?.get_ends_with("dev.donkey.key")? // } else if let Ok(dir) = env::var("CARGO_MANIFEST_DIR") { // Path::new(&dir).join("../../lib/dal/dev.donkey.key") // } else { // unimplemented!("not running with Buck2 or Cargo, unsupported") // }; // SymmetricCryptoService::from_config( // &SymmetricCryptoServiceConfigFile { // active_key: Some(active_key.to_string_lossy().into_owned()), // active_key_base64: None, // extra_keys: Default::default(), // } // .try_into()?, // ) // .await // .map_err(Into::into) // } // async fn connect_processor( // job_client: NatsClient, // ) -> Result<Box<dyn JobQueueProcessor + Send + Sync>> { // let job_processor = // Box::new(NatsProcessor::new(job_client)) as Box<dyn JobQueueProcessor + Send + Sync>; // Ok(job_processor) // }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server