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

Generate JSON Schema for both Resolved Telemetry Schema and Resolved Registry #187

Merged
merged 10 commits into from
Jun 3, 2024
Merged
45 changes: 43 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,15 @@ thiserror = "1.0.58"
ureq = "2.9.7"
regex = "1.10.3"
rayon = "1.10.0"
ordered-float = { version = "4.2.0", features = ["serde"] }
ordered-float = { version = "4.2.0", features = ["serde", "schemars"] }
walkdir = "2.5.0"
anyhow = "1.0.83"
itertools = "0.12.1"
globset = { version = "0.4.14", features = ["serde1"] }
miette = { version = "7.2.0", features = ["fancy", "serde"] }
include_dir = "0.7.3"
tempdir = "0.3.7"
schemars = "0.8.21"

# Features definition =========================================================
[features]
Expand Down Expand Up @@ -83,6 +84,7 @@ walkdir.workspace = true
include_dir.workspace = true
thiserror.workspace = true
miette.workspace = true
schemars.workspace = true

rayon = "1.10.0"

Expand Down
4 changes: 2 additions & 2 deletions crates/weaver_codegen_test/build.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use weaver_cache::Cache;
use weaver_common::in_memory::LogMessage;
use weaver_common::{in_memory, Logger};
use weaver_forge::file_loader::FileSystemFileLoader;
use weaver_forge::registry::TemplateRegistry;
use weaver_forge::registry::ResolvedRegistry;
use weaver_forge::{OutputDirective, TemplateEngine};
use weaver_resolver::SchemaResolver;
use weaver_semconv::path::RegistryPath;
Expand Down Expand Up @@ -51,7 +51,7 @@ fn main() {
let loader = FileSystemFileLoader::try_new(TEMPLATES_PATH.into(), TARGET)
.unwrap_or_else(|e| process_error(&logger, e));
let engine = TemplateEngine::try_new(loader).unwrap_or_else(|e| process_error(&logger, e));
let template_registry = TemplateRegistry::try_from_resolved_registry(
let template_registry = ResolvedRegistry::try_from_resolved_registry(
schema
.registry(REGISTRY_ID)
.expect("Failed to get the registry from the resolved schema"),
Expand Down
5 changes: 5 additions & 0 deletions crates/weaver_common/src/in_memory.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,9 @@
.expect("Failed to lock messages")
.push(LogMessage::Log(message.to_owned()));
}

/// Mute all the messages except for the warnings and errors.
fn mute(&self) {

Check warning on line 156 in crates/weaver_common/src/in_memory.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/in_memory.rs#L156

Added line #L156 was not covered by tests
// We do not mute the logger in this implementation.
}
}
57 changes: 56 additions & 1 deletion crates/weaver_common/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@

/// Logs a message without icon.
fn log(&self, message: &str);

/// Mute all the messages except for the warnings and errors.
fn mute(&self);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Introduced this new function to fix #184 and to simplify testing.

}

/// A generic logger that can be used to log messages to the console.
Expand All @@ -55,6 +58,7 @@
pub struct ConsoleLogger {
logger: Arc<Mutex<paris::Logger<'static>>>,
debug_level: u8,
mute: Arc<Mutex<bool>>,
lquerel marked this conversation as resolved.
Show resolved Hide resolved
}

impl ConsoleLogger {
Expand All @@ -64,14 +68,16 @@
ConsoleLogger {
logger: Arc::new(Mutex::new(paris::Logger::new())),
debug_level,
mute: Arc::new(Mutex::new(false)),

Check warning on line 71 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L71

Added line #L71 was not covered by tests
}
}
}

impl Logger for ConsoleLogger {
/// Logs an trace message (only with debug enabled).
fn trace(&self, message: &str) {
if self.debug_level > 0 {
let mute = *self.mute.lock().expect("Failed to lock mute");
lquerel marked this conversation as resolved.
Show resolved Hide resolved
if self.debug_level > 0 && !mute {

Check warning on line 80 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L79-L80

Added lines #L79 - L80 were not covered by tests
_ = self
.logger
.lock()
Expand All @@ -82,6 +88,10 @@

/// Logs an info message.
fn info(&self, message: &str) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 91 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L91

Added line #L91 was not covered by tests
return;
}

_ = self
.logger
.lock()
Expand Down Expand Up @@ -109,6 +119,10 @@

/// Logs a success message.
fn success(&self, message: &str) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 122 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L122

Added line #L122 was not covered by tests
return;
}

_ = self
.logger
.lock()
Expand All @@ -118,6 +132,10 @@

/// Logs a newline.
fn newline(&self, count: usize) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 135 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L135

Added line #L135 was not covered by tests
return;
}

_ = self
.logger
.lock()
Expand All @@ -127,6 +145,10 @@

/// Indents the logger.
fn indent(&self, count: usize) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 148 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L148

Added line #L148 was not covered by tests
return;
}

_ = self
.logger
.lock()
Expand All @@ -136,11 +158,19 @@

/// Stops a loading message.
fn done(&self) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 161 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L161

Added line #L161 was not covered by tests
return;
}

_ = self.logger.lock().expect("Failed to lock logger").done();
}

/// Adds a style to the logger.
fn add_style(&self, name: &str, styles: Vec<&'static str>) -> &Self {
if *self.mute.lock().expect("Failed to lock mute") {
return self;

Check warning on line 171 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L170-L171

Added lines #L170 - L171 were not covered by tests
}

_ = self
.logger
.lock()
Expand All @@ -151,6 +181,10 @@

/// Logs a loading message with a spinner.
fn loading(&self, message: &str) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 184 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L184

Added line #L184 was not covered by tests
return;
}

_ = self
.logger
.lock()
Expand All @@ -160,18 +194,31 @@

/// Forces the logger to not print a newline for the next message.
fn same(&self) -> &Self {
if *self.mute.lock().expect("Failed to lock mute") {
return self;

Check warning on line 198 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L197-L198

Added lines #L197 - L198 were not covered by tests
}

_ = self.logger.lock().expect("Failed to lock logger").same();
self
}

/// Logs a message without icon.
fn log(&self, message: &str) {
if *self.mute.lock().expect("Failed to lock mute") {

Check warning on line 207 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L207

Added line #L207 was not covered by tests
return;
}

_ = self
.logger
.lock()
.expect("Failed to lock logger")
.log(message);
}

/// Mute all the messages except for the warnings and errors.
fn mute(&self) {
*self.mute.lock().expect("Failed to lock mute") = true;

Check warning on line 220 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L219-L220

Added lines #L219 - L220 were not covered by tests
}
}

/// A logger that does not log anything.
Expand Down Expand Up @@ -226,6 +273,9 @@

/// Logs a message without icon.
fn log(&self, _: &str) {}

/// Mute all the messages except for the warnings and errors.
fn mute(&self) {}

Check warning on line 278 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L278

Added line #L278 was not covered by tests
}

/// A logger that can be used in unit or integration tests.
Expand Down Expand Up @@ -363,4 +413,9 @@
.expect("Failed to lock logger")
.log(message);
}

/// Mute all the messages except for the warnings and errors.
fn mute(&self) {

Check warning on line 418 in crates/weaver_common/src/lib.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/lib.rs#L418

Added line #L418 was not covered by tests
// We do not need to mute the logger in the tests.
}
}
5 changes: 5 additions & 0 deletions crates/weaver_common/src/quiet.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,4 +78,9 @@

/// Logs a message without icon.
fn log(&self, _message: &str) {}

/// Mute all the messages except for the warnings and errors.
fn mute(&self) {

Check warning on line 83 in crates/weaver_common/src/quiet.rs

View check run for this annotation

Codecov / codecov/patch

crates/weaver_common/src/quiet.rs#L83

Added line #L83 was not covered by tests
// Do nothing
}
}
1 change: 1 addition & 0 deletions crates/weaver_forge/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ walkdir.workspace = true
globset.workspace = true
miette.workspace = true
include_dir.workspace = true
schemars.workspace = true

[dev-dependencies]
opentelemetry = { version = "0.22.0", features = ["trace", "metrics", "logs", "otel_unstable"] }
Expand Down
1 change: 1 addition & 0 deletions crates/weaver_forge/allowed-external-types.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ allowed_external_types = [
"minijinja::value::Value",
"miette::protocol::Diagnostic",
"include_dir::dir::Dir",
"schemars::JsonSchema",
]
12 changes: 6 additions & 6 deletions crates/weaver_forge/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use crate::debug::error_summary;
use crate::error::Error::InvalidConfigFile;
use crate::extensions::{ansi, case, code, otel, util};
use crate::file_loader::FileLoader;
use crate::registry::{TemplateGroup, TemplateRegistry};
use crate::registry::{ResolvedGroup, ResolvedRegistry};

mod config;
pub mod debug;
Expand Down Expand Up @@ -109,11 +109,11 @@ pub struct TemplateEngine {
#[derive(Serialize, Debug)]
pub struct Context<'a> {
/// The semantic convention registry.
pub registry: &'a TemplateRegistry,
pub registry: &'a ResolvedRegistry,
/// The group to generate doc or code for.
pub group: Option<&'a TemplateGroup>,
pub group: Option<&'a ResolvedGroup>,
/// The groups to generate doc or code for.
pub groups: Option<Vec<&'a TemplateGroup>>,
pub groups: Option<Vec<&'a ResolvedGroup>>,
}

/// Global context for the template engine.
Expand Down Expand Up @@ -432,7 +432,7 @@ mod tests {
use crate::extensions::case::case_converter;
use crate::file_loader::FileSystemFileLoader;
use crate::filter::Filter;
use crate::registry::TemplateRegistry;
use crate::registry::ResolvedRegistry;
use crate::OutputDirective;

#[test]
Expand Down Expand Up @@ -580,7 +580,7 @@ mod tests {
let schema = SchemaResolver::resolve_semantic_convention_registry(&mut registry)
.expect("Failed to resolve registry");

let template_registry = TemplateRegistry::try_from_resolved_registry(
let template_registry = ResolvedRegistry::try_from_resolved_registry(
schema.registry(registry_id).expect("registry not found"),
schema.catalog(),
)
Expand Down
Loading
Loading