Skip to content

Commit f2b4ee7

Browse files
authored
feat: add support for cdevents 0.4 (#24)
- feat: add support for cdevents 0.4 - with some hack, shortcut to improve - chore: update cdevents-sdk/src/generated - chore: update spec 0.4 to 0.4.1 - docs: fix spelling & typo - chore: update for latest spec-0.4 - test: update dependencies and related code --------- Signed-off-by: David Bernard <david.bernard.31@gmail.com>
1 parent 1b0a92e commit f2b4ee7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+3217
-52
lines changed

.gitmodules

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@
55
[submodule "cdevents-specs/main"]
66
path = cdevents-specs/main
77
url = https://github.com/cdevents/spec.git
8+
[submodule "cdevents-specs/spec-v0.4"]
9+
path = cdevents-specs/spec-v0.4
10+
url = https://github.com/cdevents/spec.git
11+
branch = spec-v0.4

Makefile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,14 @@ test:
3434
cargo nextest run --all-features
3535
cargo test --doc
3636

37+
# buid_cdevents-specs:
38+
# git submodule deinit -f --all
39+
# git submodule init
40+
# git submodule add -f https://github.com/cdevents/spec.git cdevents-specs/main
41+
# git submodule add -f -b spec-v0.3 https://github.com/cdevents/spec.git cdevents-specs/spec-v0.3
42+
# git submodule add -f -b spec-v0.4 https://github.com/cdevents/spec.git cdevents-specs/spec-v0.4
43+
# git submodule update -f --rebase -- cdevents-specs/main
44+
3745
.PHONY:
3846
generate \
3947
check check_no_uncommitted_changes_on_sdk \

cdevents-sdk/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ assert-json-diff = "2.0"
2424
boon = "0.6"
2525
glob = "0.3"
2626
proptest = "1"
27-
rstest = "0.21"
27+
regex = "1.10"
28+
rstest = "0.22"
2829

2930
[features]
3031
default = ["cloudevents"]

cdevents-sdk/src/context.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use serde::{Deserialize, Serialize};
22

3-
use crate::{Id, UriReference};
3+
use crate::{Id, Uri, UriReference};
44

55
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
66
#[serde(deny_unknown_fields)]
@@ -12,6 +12,12 @@ pub(crate) struct Context {
1212
pub(crate) ty: String,
1313
#[serde(with = "crate::serde::datetime")]
1414
pub(crate) timestamp: time::OffsetDateTime,
15+
#[serde(rename = "schemaUri", skip_serializing_if = "Option::is_none")]
16+
pub(crate) schema_uri: Option<Uri>,
17+
#[serde(rename = "chainId", skip_serializing_if = "Option::is_none")]
18+
pub(crate) chain_id: Option<String>,
19+
#[serde(skip_serializing_if = "Option::is_none")]
20+
pub(crate) links: Option<serde_json::Value>,
1521
}
1622

1723
impl Default for Context {
@@ -22,6 +28,9 @@ impl Default for Context {
2228
source: "/undef".try_into().expect("/undef is a valid uri-reference"),
2329
ty: "dev.cdevents.undef.undef.0.0.0".into(),
2430
timestamp: time::OffsetDateTime::now_utc(),
31+
schema_uri: None,
32+
chain_id: None,
33+
links: None,
2534
}
2635
}
2736
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "user", default, skip_serializing_if = "Option::is_none",)]
12+
pub user: Option<crate::NonEmptyString>,
13+
}
14+
15+
#[cfg(test)]
16+
mod tests {
17+
use proptest::prelude::*;
18+
use super::*;
19+
20+
proptest! {
21+
#[test]
22+
#[cfg(feature = "testkit")]
23+
fn arbitraries_are_json_valid(s in any::<Content>()) {
24+
let json_str = serde_json::to_string(&s).unwrap();
25+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
26+
assert_eq!(s, actual);
27+
}
28+
}
29+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "user", default, skip_serializing_if = "Option::is_none",)]
12+
pub user: Option<crate::NonEmptyString>,
13+
}
14+
15+
#[cfg(test)]
16+
mod tests {
17+
use proptest::prelude::*;
18+
use super::*;
19+
20+
proptest! {
21+
#[test]
22+
#[cfg(feature = "testkit")]
23+
fn arbitraries_are_json_valid(s in any::<Content>()) {
24+
let json_str = serde_json::to_string(&s).unwrap();
25+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
26+
assert_eq!(s, actual);
27+
}
28+
}
29+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "change",)]
12+
pub change: ContentChange,
13+
#[serde(rename = "sbom", default, skip_serializing_if = "Option::is_none",)]
14+
pub sbom: Option<ContentSbom>,
15+
}
16+
17+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
18+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
19+
#[serde(deny_unknown_fields)]
20+
pub struct ContentSbom {
21+
#[serde(rename = "uri",)]
22+
pub uri: crate::UriReference,
23+
}
24+
25+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
26+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
27+
#[serde(deny_unknown_fields)]
28+
pub struct ContentChange {
29+
#[serde(rename = "id",)]
30+
pub id: crate::Id,
31+
#[serde(rename = "source", default, skip_serializing_if = "Option::is_none",)]
32+
pub source: Option<crate::UriReference>,
33+
}
34+
35+
#[cfg(test)]
36+
mod tests {
37+
use proptest::prelude::*;
38+
use super::*;
39+
40+
proptest! {
41+
#[test]
42+
#[cfg(feature = "testkit")]
43+
fn arbitraries_are_json_valid(s in any::<Content>()) {
44+
let json_str = serde_json::to_string(&s).unwrap();
45+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
46+
assert_eq!(s, actual);
47+
}
48+
}
49+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "sbom", default, skip_serializing_if = "Option::is_none",)]
12+
pub sbom: Option<ContentSbom>,
13+
#[serde(rename = "user", default, skip_serializing_if = "Option::is_none",)]
14+
pub user: Option<crate::NonEmptyString>,
15+
}
16+
17+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
18+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
19+
#[serde(deny_unknown_fields)]
20+
pub struct ContentSbom {
21+
#[serde(rename = "uri",)]
22+
pub uri: crate::UriReference,
23+
}
24+
25+
#[cfg(test)]
26+
mod tests {
27+
use proptest::prelude::*;
28+
use super::*;
29+
30+
proptest! {
31+
#[test]
32+
#[cfg(feature = "testkit")]
33+
fn arbitraries_are_json_valid(s in any::<Content>()) {
34+
let json_str = serde_json::to_string(&s).unwrap();
35+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
36+
assert_eq!(s, actual);
37+
}
38+
}
39+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "signature",)]
12+
pub signature: crate::NonEmptyString,
13+
}
14+
15+
#[cfg(test)]
16+
mod tests {
17+
use proptest::prelude::*;
18+
use super::*;
19+
20+
proptest! {
21+
#[test]
22+
#[cfg(feature = "testkit")]
23+
fn arbitraries_are_json_valid(s in any::<Content>()) {
24+
let json_str = serde_json::to_string(&s).unwrap();
25+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
26+
assert_eq!(s, actual);
27+
}
28+
}
29+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "repository", default, skip_serializing_if = "Option::is_none",)]
12+
pub repository: Option<ContentRepository>,
13+
}
14+
15+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
16+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
17+
#[serde(deny_unknown_fields)]
18+
pub struct ContentRepository {
19+
#[serde(rename = "id",)]
20+
pub id: crate::Id,
21+
#[serde(rename = "source", default, skip_serializing_if = "Option::is_none",)]
22+
pub source: Option<crate::UriReference>,
23+
}
24+
25+
#[cfg(test)]
26+
mod tests {
27+
use proptest::prelude::*;
28+
use super::*;
29+
30+
proptest! {
31+
#[test]
32+
#[cfg(feature = "testkit")]
33+
fn arbitraries_are_json_valid(s in any::<Content>()) {
34+
let json_str = serde_json::to_string(&s).unwrap();
35+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
36+
assert_eq!(s, actual);
37+
}
38+
}
39+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "repository", default, skip_serializing_if = "Option::is_none",)]
12+
pub repository: Option<ContentRepository>,
13+
}
14+
15+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
16+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
17+
#[serde(deny_unknown_fields)]
18+
pub struct ContentRepository {
19+
#[serde(rename = "id",)]
20+
pub id: crate::Id,
21+
#[serde(rename = "source", default, skip_serializing_if = "Option::is_none",)]
22+
pub source: Option<crate::UriReference>,
23+
}
24+
25+
#[cfg(test)]
26+
mod tests {
27+
use proptest::prelude::*;
28+
use super::*;
29+
30+
proptest! {
31+
#[test]
32+
#[cfg(feature = "testkit")]
33+
fn arbitraries_are_json_valid(s in any::<Content>()) {
34+
let json_str = serde_json::to_string(&s).unwrap();
35+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
36+
assert_eq!(s, actual);
37+
}
38+
}
39+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
#[serde(rename = "artifactId", default, skip_serializing_if = "Option::is_none",)]
12+
pub artifact_id: Option<String>,
13+
}
14+
15+
#[cfg(test)]
16+
mod tests {
17+
use proptest::prelude::*;
18+
use super::*;
19+
20+
proptest! {
21+
#[test]
22+
#[cfg(feature = "testkit")]
23+
fn arbitraries_are_json_valid(s in any::<Content>()) {
24+
let json_str = serde_json::to_string(&s).unwrap();
25+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
26+
assert_eq!(s, actual);
27+
}
28+
}
29+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// @generated
2+
// by cdevents/sdk-rust/generator (subject.hbs)
3+
4+
#[cfg(feature = "testkit")] use proptest_derive::Arbitrary;
5+
use serde::{Serialize, Deserialize};
6+
7+
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
8+
#[cfg_attr(feature = "testkit", derive(Arbitrary))]
9+
#[serde(deny_unknown_fields)]
10+
pub struct Content {
11+
}
12+
13+
#[cfg(test)]
14+
mod tests {
15+
use proptest::prelude::*;
16+
use super::*;
17+
18+
proptest! {
19+
#[test]
20+
#[cfg(feature = "testkit")]
21+
fn arbitraries_are_json_valid(s in any::<Content>()) {
22+
let json_str = serde_json::to_string(&s).unwrap();
23+
let actual = serde_json::from_str::<Content>(&json_str).unwrap();
24+
assert_eq!(s, actual);
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)