Skip to content

Remove config source #1689

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

Open
wants to merge 46 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
5f01407
remove config source file
findolor Apr 16, 2025
938d223
update scenario config
findolor Apr 16, 2025
a07721c
update network config
findolor Apr 16, 2025
9c896a9
update remote config
findolor Apr 16, 2025
d400c65
update token config
findolor Apr 16, 2025
c49c8c7
update orderbook config
findolor Apr 16, 2025
0dd5804
update chart config
findolor Apr 16, 2025
164236d
update deployer config
findolor Apr 16, 2025
1e62ebb
update deployment config
findolor Apr 16, 2025
2f815a1
update order config
findolor Apr 16, 2025
923bad0
remove merge file
findolor Apr 16, 2025
ad23e1e
update gui config
findolor Apr 16, 2025
79aee3d
add functions that return hashmaps for yaml structs
findolor Apr 16, 2025
5bac27d
update sentry return value
findolor Apr 16, 2025
bfb268f
update config
findolor Apr 17, 2025
a9c7c35
fix function calls
findolor Apr 17, 2025
71623eb
update yaml methods
findolor Apr 17, 2025
0fd7b20
fix parse frontmatter logic
findolor Apr 17, 2025
d405697
fix orderbook tests
findolor Apr 17, 2025
a16e3ca
add tests to config
findolor Apr 17, 2025
5efb7db
refactor code
findolor Apr 18, 2025
0bcef99
fix subgraph url settings
findolor Apr 18, 2025
764cbf3
fix vaults query
findolor Apr 18, 2025
9eb8b04
fix settings variables
findolor Apr 18, 2025
2fd5457
refactor code
findolor Apr 18, 2025
4617e24
make updates
findolor Apr 19, 2025
0b18313
remove vscode settings
findolor Apr 19, 2025
ea6274f
add parse settings wasm binding
findolor Apr 22, 2025
23d7195
fetch settings as yaml and update tests
findolor Apr 22, 2025
0d6a1ad
Merge branch 'main' into 2025-04-16-remove-config-source
findolor Apr 22, 2025
4300785
Merge pull request #1690 from rainlanguage/2025-04-22-webapp-settings
findolor Apr 24, 2025
1be2596
Merge branch 'main' into 2025-04-16-remove-config-source
findolor Apr 24, 2025
3739985
fix tests
findolor Apr 24, 2025
40b7dbc
updates
findolor Apr 24, 2025
1be8254
updates
findolor Apr 24, 2025
34d9673
small changes
findolor Apr 24, 2025
711a28d
small update
findolor Apr 24, 2025
0411677
ci fixes
findolor Apr 24, 2025
de66421
update settings tests
findolor Apr 24, 2025
3ff77da
remove web-sys library
findolor Apr 28, 2025
a98ba3c
update things to do
findolor Apr 28, 2025
65d10ed
update based on ai comments
findolor Apr 28, 2025
2fb5528
linter fix
findolor Apr 28, 2025
91386db
update test
findolor Apr 28, 2025
95f4e65
fix tests
findolor Apr 28, 2025
4c6107f
update tests
findolor Apr 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions crates/cli/src/commands/chart/mod.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::execute::Execute;
use anyhow::{anyhow, Result};
use clap::Args;
use rain_orderbook_app_settings::{config_source::ConfigSource, Config};
use rain_orderbook_app_settings::Config;
use rain_orderbook_common::dotrain::RainDocument;
use rain_orderbook_common::fuzz::FuzzRunner;
use std::fs::read_to_string;
Expand All @@ -22,10 +22,7 @@ impl Execute for Chart {
async fn execute(&self) -> Result<()> {
let dotrain = read_to_string(self.dotrain_file.clone()).map_err(|e| anyhow!(e))?;
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let config_string = ConfigSource::try_from_string(frontmatter.to_string(), None)
.await?
.0;
let config: Config = config_string.try_into()?;
let config = Config::try_from_yaml(vec![frontmatter.to_string()], false)?;
let fuzzer = FuzzRunner::new(&dotrain, config, None).await;
let chart_data = fuzzer.make_chart_data().await?;

Expand Down
10 changes: 6 additions & 4 deletions crates/cli/src/commands/order/add.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ use crate::{
};
use anyhow::{anyhow, Result};
use clap::{ArgAction, Args};
use rain_orderbook_app_settings::Config;
use rain_orderbook_common::add_order::AddOrderArgs;
use rain_orderbook_common::frontmatter::parse_frontmatter;
use rain_orderbook_common::transaction::TransactionArgs;
Expand Down Expand Up @@ -40,10 +39,10 @@ pub struct CliOrderAddArgs {
impl CliOrderAddArgs {
async fn to_add_order_args(&self) -> Result<AddOrderArgs> {
let text = read_to_string(&self.dotrain_file).map_err(|e| anyhow!(e))?;
let config: Config = parse_frontmatter(text.clone()).await?.try_into()?;
let config = parse_frontmatter(text.clone(), true)?;

if !self.skip_version_check {
if let Some(ver) = config.raindex_version {
if let Some(ver) = config.get_raindex_version() {
if ver.to_ascii_lowercase() != GH_COMMIT_SHA.to_ascii_lowercase() {
return Err(anyhow!(format!(
"mismatch raindex version: expected: {}, got: {}",
Expand All @@ -58,7 +57,7 @@ impl CliOrderAddArgs {
}

let config_deployment = config
.deployments
.get_deployments()
.get(&self.deployment)
.ok_or(anyhow!("specified deployment is undefined!"))?;

Expand Down Expand Up @@ -193,6 +192,9 @@ networks:
subgraphs:
some-sg: https://www.some-sg.com

metaboards:
some-metaboard: https://www.some-metaboard.com

deployers:
some-deployer:
network: some-network
Expand Down
4 changes: 2 additions & 2 deletions crates/common/src/dotrain_order/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use rain_orderbook_app_settings::yaml::cache::Cache;
use rain_orderbook_app_settings::yaml::{
default_document, dotrain::DotrainYaml, orderbook::OrderbookYaml, YamlError, YamlParsable,
};
use rain_orderbook_app_settings::ParseConfigSourceError;
use rain_orderbook_app_settings::ParseConfigError;
use serde::{Deserialize, Serialize};
use thiserror::Error;
#[cfg(target_family = "wasm")]
Expand All @@ -37,7 +37,7 @@ impl PartialEq for DotrainOrder {
#[derive(Error, Debug)]
pub enum DotrainOrderError {
#[error(transparent)]
ParseConfigSourceError(#[from] ParseConfigSourceError),
ParseConfigError(#[from] ParseConfigError),

#[error("Scenario {0} not found")]
ScenarioNotFound(String),
Expand Down
8 changes: 3 additions & 5 deletions crates/common/src/frontmatter.rs
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
use dotrain::RainDocument;
pub use rain_metadata::types::authoring::v2::*;
use rain_orderbook_app_settings::{config::ParseConfigSourceError, config_source::ConfigSource};
use rain_orderbook_app_settings::{Config, ParseConfigError};

/// Parse dotrain frontmatter and merges it with top Config if given
pub async fn parse_frontmatter(dotrain: String) -> Result<ConfigSource, ParseConfigSourceError> {
pub fn parse_frontmatter(dotrain: String, validate: bool) -> Result<Config, ParseConfigError> {
let frontmatter = RainDocument::get_front_matter(dotrain.as_str()).unwrap_or("");
Ok(ConfigSource::try_from_string(frontmatter.to_string(), None)
.await?
.0)
Config::try_from_yaml(vec![frontmatter.to_string()], validate)
}
84 changes: 50 additions & 34 deletions crates/common/src/fuzz/impls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ impl FuzzRunner {
// find the scenario by name in the settings
let scenario = self
.settings
.scenarios
.get_scenarios()
.get(name)
.ok_or(FuzzRunnerError::ScenarioNotFound(name.into()))
.cloned()?;
Expand Down Expand Up @@ -229,7 +229,7 @@ impl FuzzRunner {
}

pub async fn make_chart_data(&self) -> Result<ChartData, FuzzRunnerError> {
let charts = self.settings.charts.clone();
let charts = self.settings.get_charts();
let mut scenarios_data: HashMap<String, FuzzResultFlat> = HashMap::new();

for (_, chart) in charts.clone() {
Expand Down Expand Up @@ -262,9 +262,38 @@ mod tests {
primitives::utils::parse_ether,
providers::{ext::AnvilApi, Provider},
};
use rain_orderbook_app_settings::config_source::ConfigSource;
use rain_orderbook_test_fixtures::LocalEvm;

const SETTINGS: &str = r#"
subgraphs:
some-subgraph: https://www.some-subgraph.com
metaboards:
some-metaboard: https://www.some-metaboard.com
orderbooks:
some-orderbook:
address: 0x0000000000000000000000000000000000000000
network: some-key
subgraph: some-subgraph
tokens:
token1:
network: some-key
address: 0x0000000000000000000000000000000000000001
token2:
network: some-key
address: 0x0000000000000000000000000000000000000002
orders:
some-order:
deployer: some-key
inputs:
- token: token1
outputs:
- token: token2
deployments:
some-deployment:
scenario: some-key
order: some-order
"#;

#[tokio::test(flavor = "multi_thread", worker_threads = 10)]
async fn test_fuzz_runner() {
let local_evm = LocalEvm::new().await;
Expand Down Expand Up @@ -295,11 +324,9 @@ b: fuzzed;
deployer = local_evm.deployer.address()
);
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
let config = settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap();
let config =
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false)
.unwrap();

let mut runner = FuzzRunner::new(&dotrain, config, None).await;

Expand Down Expand Up @@ -350,11 +377,9 @@ _: block-number();
end_block = last_block_number
);
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
let config = settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap();
let config =
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false)
.unwrap();

let mut runner = FuzzRunner::new(&dotrain, config, None).await;

Expand Down Expand Up @@ -413,11 +438,9 @@ d: 4;
deployer = local_evm.deployer.address()
);
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
let config = settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap();
let config =
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false)
.unwrap();

let mut runner = FuzzRunner::new(&dotrain, config, None).await;

Expand Down Expand Up @@ -472,12 +495,9 @@ _: context<4 4>();
deployer = local_evm.deployer.address()
);
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
let config = settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap();

let config =
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false)
.unwrap();
let mut runner = FuzzRunner::new(&dotrain, config, None).await;

let res = runner
Expand Down Expand Up @@ -521,11 +541,9 @@ _: context<50 50>();
deployer = local_evm.deployer.address()
);
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
let config = settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap();
let config =
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false)
.unwrap();

let mut runner = FuzzRunner::new(&dotrain, config, None).await;

Expand Down Expand Up @@ -564,11 +582,9 @@ _: context<1 0>();
deployer = local_evm.deployer.address()
);
let frontmatter = RainDocument::get_front_matter(&dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
let config = settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap();
let config =
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false)
.unwrap();

let mut runner = FuzzRunner::new(&dotrain, config, None).await;

Expand Down
11 changes: 4 additions & 7 deletions crates/common/src/js_api/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ use crate::{
};
use alloy::primitives::Bytes;
use js_sys::Uint8Array;
use rain_orderbook_app_settings::{Config, ParseConfigSourceError};
use rain_orderbook_app_settings::ParseConfigError;
use rain_orderbook_subgraph_client::types::common::SgOrder;
use serde::{Deserialize, Serialize};
use std::ops::Deref;
Expand All @@ -23,7 +23,7 @@ pub enum Error {
#[error("undefined deployment")]
UndefinedDeployment,
#[error(transparent)]
ParseConfigSourceError(#[from] ParseConfigSourceError),
ParseConfigError(#[from] ParseConfigError),
#[error(transparent)]
AddOrderArgsError(#[from] AddOrderArgsError),
#[error(transparent)]
Expand All @@ -39,11 +39,8 @@ impl From<Error> for JsValue {
/// Get addOrder() calldata from a given dotrain text and deployment key from its frontmatter
#[wasm_bindgen(js_name = "getAddOrderCalldata")]
pub async fn get_add_order_calldata(dotrain: &str, deployment: &str) -> Result<Uint8Array, Error> {
let config: Config = parse_frontmatter(dotrain.to_string()).await?.try_into()?;
let deployment_ref = config
.deployments
.get(deployment)
.ok_or(Error::UndefinedDeployment)?;
let config = parse_frontmatter(dotrain.to_string(), true)?;
let deployment_ref = config.get_deployment(deployment)?;
let add_order_args =
AddOrderArgs::new_from_deployment(dotrain.to_string(), deployment_ref.deref().clone())
.await?;
Expand Down
48 changes: 34 additions & 14 deletions crates/common/src/unit_tests/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ impl TestRunner {
self.test_setup.deployer = self
.settings
.main_config
.deployers
.get_deployers()
.get(&self.settings.test_config.scenario_name)
.ok_or(TestRunnerError::ScenarioNotFound(
self.settings.test_config.scenario_name.clone(),
Expand Down Expand Up @@ -369,28 +369,48 @@ impl TestRunner {
#[cfg(test)]
mod tests {
use super::*;
use rain_orderbook_app_settings::{
config_source::ConfigSource, unit_test::UnitTestConfigSource,
};
use rain_orderbook_app_settings::unit_test::UnitTestConfigSource;
use rain_orderbook_test_fixtures::LocalEvm;

const SETTINGS: &str = r#"
subgraphs:
some-subgraph: https://www.some-subgraph.com
metaboards:
some-metaboard: https://www.some-metaboard.com
orderbooks:
some-orderbook:
address: 0x0000000000000000000000000000000000000000
network: some-key
subgraph: some-subgraph
tokens:
token1:
network: some-key
address: 0x0000000000000000000000000000000000000001
token2:
network: some-key
address: 0x0000000000000000000000000000000000000002
orders:
some-order:
deployer: some-key
inputs:
- token: token1
outputs:
- token: token2
deployments:
some-deployment:
scenario: some-key
order: some-order
"#;

fn get_main_config(dotrain: &str) -> Config {
let frontmatter = RainDocument::get_front_matter(dotrain).unwrap();
let settings = serde_yaml::from_str::<ConfigSource>(frontmatter).unwrap();
settings
.try_into()
.map_err(|e| println!("{:?}", e))
.unwrap()
Config::try_from_yaml(vec![frontmatter.to_string(), SETTINGS.to_string()], false).unwrap()
}

fn get_test_config(test_dotrain: &str) -> TestConfig {
let frontmatter = RainDocument::get_front_matter(test_dotrain).unwrap();
let source = serde_yaml::from_str::<UnitTestConfigSource>(frontmatter).unwrap();
source
.test
.try_into_test_config()
.map_err(|e| println!("{:?}", e))
.unwrap()
source.test.try_into_test_config()
}

#[tokio::test(flavor = "multi_thread", worker_threads = 10)]
Expand Down
Loading