update env vars to match other repos, make dry (#4321)
* update env vars to match other repos, make dry Signed-off-by: Jess Frazelle <github@jessfraz.com> * bump Signed-off-by: Jess Frazelle <github@jessfraz.com> * updates Signed-off-by: Jess Frazelle <github@jessfraz.com> --------- Signed-off-by: Jess Frazelle <github@jessfraz.com>
This commit is contained in:
		
							
								
								
									
										4
									
								
								src/wasm-lib/Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								src/wasm-lib/Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -1542,7 +1542,7 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "kcl-lib"
 | 
			
		||||
version = "0.2.22"
 | 
			
		||||
version = "0.2.23"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "anyhow",
 | 
			
		||||
 "approx 0.5.1",
 | 
			
		||||
@ -1617,7 +1617,7 @@ dependencies = [
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "kcl-test-server"
 | 
			
		||||
version = "0.1.14"
 | 
			
		||||
version = "0.1.15"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "anyhow",
 | 
			
		||||
 "hyper 0.14.30",
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
[package]
 | 
			
		||||
name = "kcl-test-server"
 | 
			
		||||
description = "A test server for KCL"
 | 
			
		||||
version = "0.1.14"
 | 
			
		||||
version = "0.1.15"
 | 
			
		||||
edition = "2021"
 | 
			
		||||
license = "MIT"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -31,7 +31,7 @@ pub struct ServerArgs {
 | 
			
		||||
    /// Where to find the engine.
 | 
			
		||||
    /// If none, uses the prod engine.
 | 
			
		||||
    /// This is useful for testing a local engine instance.
 | 
			
		||||
    /// Overridden by the $LOCAL_ENGINE_ADDR environment variable.
 | 
			
		||||
    /// Overridden by the $ZOO_HOST environment variable.
 | 
			
		||||
    pub engine_address: Option<String>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -44,8 +44,8 @@ impl ServerArgs {
 | 
			
		||||
            num_engine_conns: pargs.opt_value_from_str("--num-engine-conns")?.unwrap_or(1),
 | 
			
		||||
            engine_address: pargs.opt_value_from_str("--engine-address")?,
 | 
			
		||||
        };
 | 
			
		||||
        if let Ok(addr) = std::env::var("LOCAL_ENGINE_ADDR") {
 | 
			
		||||
            println!("Overriding engine address via $LOCAL_ENGINE_ADDR");
 | 
			
		||||
        if let Ok(addr) = std::env::var("ZOO_HOST") {
 | 
			
		||||
            println!("Overriding engine address via $ZOO_HOST");
 | 
			
		||||
            args.engine_address = Some(addr);
 | 
			
		||||
        }
 | 
			
		||||
        println!("Config is {args:?}");
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
[package]
 | 
			
		||||
name = "kcl-lib"
 | 
			
		||||
description = "KittyCAD Language implementation and tools"
 | 
			
		||||
version = "0.2.22"
 | 
			
		||||
version = "0.2.23"
 | 
			
		||||
edition = "2021"
 | 
			
		||||
license = "MIT"
 | 
			
		||||
repository = "https://github.com/KittyCAD/modeling-app"
 | 
			
		||||
 | 
			
		||||
@ -1980,9 +1980,73 @@ impl From<crate::settings::types::ModelingSettings> for ExecutorSettings {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/// Create a new zoo api client.
 | 
			
		||||
#[cfg(not(target_arch = "wasm32"))]
 | 
			
		||||
pub fn new_zoo_client(token: Option<String>, engine_addr: Option<String>) -> Result<kittycad::Client> {
 | 
			
		||||
    let user_agent = concat!(env!("CARGO_PKG_NAME"), ".rs/", env!("CARGO_PKG_VERSION"),);
 | 
			
		||||
    let http_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60));
 | 
			
		||||
    let ws_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60))
 | 
			
		||||
        .connection_verbose(true)
 | 
			
		||||
        .tcp_keepalive(std::time::Duration::from_secs(600))
 | 
			
		||||
        .http1_only();
 | 
			
		||||
 | 
			
		||||
    let zoo_token_env = std::env::var("ZOO_API_TOKEN");
 | 
			
		||||
 | 
			
		||||
    let token = if let Some(token) = token {
 | 
			
		||||
        token
 | 
			
		||||
    } else if let Ok(token) = std::env::var("KITTYCAD_API_TOKEN") {
 | 
			
		||||
        if let Ok(zoo_token) = zoo_token_env {
 | 
			
		||||
            if zoo_token != token {
 | 
			
		||||
                return Err(anyhow::anyhow!(
 | 
			
		||||
                    "Both environment variables KITTYCAD_API_TOKEN=`{}` and ZOO_API_TOKEN=`{}` are set. Use only one.",
 | 
			
		||||
                    token,
 | 
			
		||||
                    zoo_token
 | 
			
		||||
                ));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        token
 | 
			
		||||
    } else if let Ok(token) = zoo_token_env {
 | 
			
		||||
        token
 | 
			
		||||
    } else {
 | 
			
		||||
        return Err(anyhow::anyhow!(
 | 
			
		||||
            "No API token found in environment variables. Use KITTYCAD_API_TOKEN or ZOO_API_TOKEN"
 | 
			
		||||
        ));
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Create the client.
 | 
			
		||||
    let mut client = kittycad::Client::new_from_reqwest(token, http_client, ws_client);
 | 
			
		||||
    // Set an engine address if it's set.
 | 
			
		||||
    let kittycad_host_env = std::env::var("KITTYCAD_HOST");
 | 
			
		||||
    if let Some(addr) = engine_addr {
 | 
			
		||||
        client.set_base_url(addr);
 | 
			
		||||
    } else if let Ok(addr) = std::env::var("ZOO_HOST") {
 | 
			
		||||
        if let Ok(kittycad_host) = kittycad_host_env {
 | 
			
		||||
            if kittycad_host != addr {
 | 
			
		||||
                return Err(anyhow::anyhow!(
 | 
			
		||||
                    "Both environment variables KITTYCAD_HOST=`{}` and ZOO_HOST=`{}` are set. Use only one.",
 | 
			
		||||
                    kittycad_host,
 | 
			
		||||
                    addr
 | 
			
		||||
                ));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        client.set_base_url(addr);
 | 
			
		||||
    } else if let Ok(addr) = kittycad_host_env {
 | 
			
		||||
        client.set_base_url(addr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    Ok(client)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl ExecutorContext {
 | 
			
		||||
    /// Create a new default executor context.
 | 
			
		||||
    /// Also returns the response HTTP headers from the server.
 | 
			
		||||
    #[cfg(not(target_arch = "wasm32"))]
 | 
			
		||||
    pub async fn new(client: &kittycad::Client, settings: ExecutorSettings) -> Result<Self> {
 | 
			
		||||
        let (ws, _headers) = client
 | 
			
		||||
@ -2027,6 +2091,35 @@ impl ExecutorContext {
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a new default executor context.
 | 
			
		||||
    /// With a kittycad client.
 | 
			
		||||
    /// This allows for passing in `ZOO_API_TOKEN` and `ZOO_HOST` as environment
 | 
			
		||||
    /// variables.
 | 
			
		||||
    /// But also allows for passing in a token and engine address directly.
 | 
			
		||||
    #[cfg(not(target_arch = "wasm32"))]
 | 
			
		||||
    pub async fn new_with_client(
 | 
			
		||||
        settings: ExecutorSettings,
 | 
			
		||||
        token: Option<String>,
 | 
			
		||||
        engine_addr: Option<String>,
 | 
			
		||||
    ) -> Result<Self> {
 | 
			
		||||
        // Create the client.
 | 
			
		||||
        let client = new_zoo_client(token, engine_addr)?;
 | 
			
		||||
 | 
			
		||||
        let ctx = Self::new(&client, settings).await?;
 | 
			
		||||
        Ok(ctx)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /// Create a new default executor context.
 | 
			
		||||
    /// With the default kittycad client.
 | 
			
		||||
    /// This allows for passing in `ZOO_API_TOKEN` and `ZOO_HOST` as environment
 | 
			
		||||
    /// variables.
 | 
			
		||||
    #[cfg(not(target_arch = "wasm32"))]
 | 
			
		||||
    pub async fn new_with_default_client(settings: ExecutorSettings) -> Result<Self> {
 | 
			
		||||
        // Create the client.
 | 
			
		||||
        let ctx = Self::new_with_client(settings, None, None).await?;
 | 
			
		||||
        Ok(ctx)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn is_mock(&self) -> bool {
 | 
			
		||||
        self.context_type == ContextType::Mock || self.context_type == ContextType::MockCustomForwarded
 | 
			
		||||
    }
 | 
			
		||||
@ -2034,35 +2127,7 @@ impl ExecutorContext {
 | 
			
		||||
    /// For executing unit tests.
 | 
			
		||||
    #[cfg(not(target_arch = "wasm32"))]
 | 
			
		||||
    pub async fn new_for_unit_test(units: UnitLength, engine_addr: Option<String>) -> Result<Self> {
 | 
			
		||||
        let user_agent = concat!(env!("CARGO_PKG_NAME"), ".rs/", env!("CARGO_PKG_VERSION"));
 | 
			
		||||
        let http_client = reqwest::Client::builder()
 | 
			
		||||
            .user_agent(user_agent)
 | 
			
		||||
            // For file conversions we need this to be long.
 | 
			
		||||
            .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
            .connect_timeout(std::time::Duration::from_secs(60));
 | 
			
		||||
        let ws_client = reqwest::Client::builder()
 | 
			
		||||
            .user_agent(user_agent)
 | 
			
		||||
            // For file conversions we need this to be long.
 | 
			
		||||
            .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
            .connect_timeout(std::time::Duration::from_secs(60))
 | 
			
		||||
            .connection_verbose(true)
 | 
			
		||||
            .tcp_keepalive(std::time::Duration::from_secs(600))
 | 
			
		||||
            .http1_only();
 | 
			
		||||
 | 
			
		||||
        let token = std::env::var("KITTYCAD_API_TOKEN").expect("KITTYCAD_API_TOKEN not set");
 | 
			
		||||
 | 
			
		||||
        // Create the client.
 | 
			
		||||
        let mut client = kittycad::Client::new_from_reqwest(token, http_client, ws_client);
 | 
			
		||||
        // Set a local engine address if it's set.
 | 
			
		||||
        if let Ok(addr) = std::env::var("LOCAL_ENGINE_ADDR") {
 | 
			
		||||
            client.set_base_url(addr);
 | 
			
		||||
        }
 | 
			
		||||
        if let Some(addr) = engine_addr {
 | 
			
		||||
            client.set_base_url(addr);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        let ctx = ExecutorContext::new(
 | 
			
		||||
            &client,
 | 
			
		||||
        let ctx = ExecutorContext::new_with_client(
 | 
			
		||||
            ExecutorSettings {
 | 
			
		||||
                units,
 | 
			
		||||
                highlight_edges: true,
 | 
			
		||||
@ -2070,6 +2135,8 @@ impl ExecutorContext {
 | 
			
		||||
                show_grid: false,
 | 
			
		||||
                replay: None,
 | 
			
		||||
            },
 | 
			
		||||
            None,
 | 
			
		||||
            engine_addr,
 | 
			
		||||
        )
 | 
			
		||||
        .await?;
 | 
			
		||||
        Ok(ctx)
 | 
			
		||||
 | 
			
		||||
@ -3,41 +3,13 @@ use std::sync::{Arc, RwLock};
 | 
			
		||||
use anyhow::Result;
 | 
			
		||||
use tower_lsp::LanguageServer;
 | 
			
		||||
 | 
			
		||||
fn new_zoo_client() -> kittycad::Client {
 | 
			
		||||
    let user_agent = concat!(env!("CARGO_PKG_NAME"), ".rs/", env!("CARGO_PKG_VERSION"),);
 | 
			
		||||
    let http_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60));
 | 
			
		||||
    let ws_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60))
 | 
			
		||||
        .connection_verbose(true)
 | 
			
		||||
        .tcp_keepalive(std::time::Duration::from_secs(600))
 | 
			
		||||
        .http1_only();
 | 
			
		||||
 | 
			
		||||
    let token = std::env::var("KITTYCAD_API_TOKEN").expect("KITTYCAD_API_TOKEN not set");
 | 
			
		||||
 | 
			
		||||
    // Create the client.
 | 
			
		||||
    let mut client = kittycad::Client::new_from_reqwest(token, http_client, ws_client);
 | 
			
		||||
    // Set a local engine address if it's set.
 | 
			
		||||
    if let Ok(addr) = std::env::var("LOCAL_ENGINE_ADDR") {
 | 
			
		||||
        client.set_base_url(addr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    client
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Create a fake kcl lsp server for testing.
 | 
			
		||||
pub async fn kcl_lsp_server(execute: bool) -> Result<crate::lsp::kcl::Backend> {
 | 
			
		||||
    let stdlib = crate::std::StdLib::new();
 | 
			
		||||
    let stdlib_completions = crate::lsp::kcl::get_completions_from_stdlib(&stdlib)?;
 | 
			
		||||
    let stdlib_signatures = crate::lsp::kcl::get_signatures_from_stdlib(&stdlib)?;
 | 
			
		||||
 | 
			
		||||
    let zoo_client = new_zoo_client();
 | 
			
		||||
    let zoo_client = crate::executor::new_zoo_client(None, None)?;
 | 
			
		||||
 | 
			
		||||
    let executor_ctx = if execute {
 | 
			
		||||
        Some(crate::executor::ExecutorContext::new(&zoo_client, Default::default()).await?)
 | 
			
		||||
 | 
			
		||||
@ -43,38 +43,7 @@ async fn do_execute_and_snapshot(ctx: &ExecutorContext, code: &str) -> anyhow::R
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async fn new_context(units: UnitLength, with_auth: bool) -> anyhow::Result<ExecutorContext> {
 | 
			
		||||
    let user_agent = concat!(env!("CARGO_PKG_NAME"), ".rs/", env!("CARGO_PKG_VERSION"),);
 | 
			
		||||
    let http_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60));
 | 
			
		||||
    let ws_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60))
 | 
			
		||||
        .connection_verbose(true)
 | 
			
		||||
        .tcp_keepalive(std::time::Duration::from_secs(600))
 | 
			
		||||
        .http1_only();
 | 
			
		||||
 | 
			
		||||
    let token = if with_auth {
 | 
			
		||||
        std::env::var("KITTYCAD_API_TOKEN").expect("KITTYCAD_API_TOKEN not set")
 | 
			
		||||
    } else {
 | 
			
		||||
        "bad_token".to_string()
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Create the client.
 | 
			
		||||
    let mut client = kittycad::Client::new_from_reqwest(token, http_client, ws_client);
 | 
			
		||||
    // Set a local engine address if it's set.
 | 
			
		||||
    if let Ok(addr) = std::env::var("LOCAL_ENGINE_ADDR") {
 | 
			
		||||
        if with_auth {
 | 
			
		||||
            client.set_base_url(addr);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let ctx = ExecutorContext::new(
 | 
			
		||||
        &client,
 | 
			
		||||
    let ctx = ExecutorContext::new_with_client(
 | 
			
		||||
        ExecutorSettings {
 | 
			
		||||
            units,
 | 
			
		||||
            highlight_edges: true,
 | 
			
		||||
@ -82,6 +51,8 @@ async fn new_context(units: UnitLength, with_auth: bool) -> anyhow::Result<Execu
 | 
			
		||||
            show_grid: false,
 | 
			
		||||
            replay: None,
 | 
			
		||||
        },
 | 
			
		||||
        if with_auth { None } else { Some("bad_token".to_string()) },
 | 
			
		||||
        None,
 | 
			
		||||
    )
 | 
			
		||||
    .await?;
 | 
			
		||||
    Ok(ctx)
 | 
			
		||||
 | 
			
		||||
@ -8,33 +8,10 @@ use pretty_assertions::assert_eq;
 | 
			
		||||
 | 
			
		||||
/// Setup the engine and parse code for an ast.
 | 
			
		||||
async fn setup(code: &str, name: &str) -> Result<(ExecutorContext, Program, uuid::Uuid)> {
 | 
			
		||||
    let user_agent = concat!(env!("CARGO_PKG_NAME"), ".rs/", env!("CARGO_PKG_VERSION"),);
 | 
			
		||||
    let http_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60));
 | 
			
		||||
    let ws_client = reqwest::Client::builder()
 | 
			
		||||
        .user_agent(user_agent)
 | 
			
		||||
        // For file conversions we need this to be long.
 | 
			
		||||
        .timeout(std::time::Duration::from_secs(600))
 | 
			
		||||
        .connect_timeout(std::time::Duration::from_secs(60))
 | 
			
		||||
        .tcp_keepalive(std::time::Duration::from_secs(600))
 | 
			
		||||
        .http1_only();
 | 
			
		||||
 | 
			
		||||
    let token = std::env::var("KITTYCAD_API_TOKEN").expect("KITTYCAD_API_TOKEN not set");
 | 
			
		||||
 | 
			
		||||
    // Create the client.
 | 
			
		||||
    let mut client = kittycad::Client::new_from_reqwest(token, http_client, ws_client);
 | 
			
		||||
    // Set a local engine address if it's set.
 | 
			
		||||
    if let Ok(addr) = std::env::var("LOCAL_ENGINE_ADDR") {
 | 
			
		||||
        client.set_base_url(addr);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let tokens = kcl_lib::token::lexer(code)?;
 | 
			
		||||
    let parser = kcl_lib::parser::Parser::new(tokens);
 | 
			
		||||
    let program = parser.ast()?;
 | 
			
		||||
    let ctx = kcl_lib::executor::ExecutorContext::new(&client, Default::default()).await?;
 | 
			
		||||
    let ctx = kcl_lib::executor::ExecutorContext::new_with_default_client(Default::default()).await?;
 | 
			
		||||
    let exec_state = ctx.run(&program, None, IdGenerator::default(), None).await?;
 | 
			
		||||
 | 
			
		||||
    // We need to get the sketch ID.
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user