62 Commits

Author SHA1 Message Date
cuddle-please
1631ac5d0a chore(release): 0.1.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-03-04 02:14:33 +00:00
b14d0dfa77 fix(deps): update rust crate serde_json to v1.0.140
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-03-04 02:12:25 +00:00
dd41bf3c37 fix(deps): update rust crate clap to v4.5.31
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2025-02-25 02:02:47 +00:00
a2c86fb7c9 fix(deps): update rust crate serde_json to v1.0.139
All checks were successful
continuous-integration/drone/push Build is passing
2025-02-20 07:33:08 +01:00
78ae68f27e fix(deps): update rust crate serde to v1.0.218
Some checks failed
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is failing
2025-02-20 06:06:34 +00:00
9419d3a6dd fix(deps): update rust crate clap to v4.5.30
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-18 02:03:20 +00:00
5ae042d4cc fix(deps): update rust crate clap to v4.5.29
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-12 02:07:37 +00:00
11be4a55c2 fix(deps): update rust crate toml to v0.8.20
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-06 02:08:04 +00:00
707b8f3b28 fix(deps): update rust crate clap to v4.5.28
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-02-04 02:06:41 +00:00
6d4535b069 fix(deps): update rust crate serde_json to v1.0.138
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-29 02:07:53 +00:00
45a51bbe2c fix(deps): update rust crate clap to v4.5.27
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-21 02:05:11 +00:00
22c966a0ec fix(deps): update rust crate serde_json to v1.0.137
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-20 01:58:28 +00:00
c0f22355dc fix(deps): update rust crate serde_json to v1.0.136
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-19 02:00:01 +00:00
07920788e5 fix(deps): update rust crate clap to v4.5.26
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-10 01:54:36 +00:00
fdb38d7006 fix(deps): update rust crate tokio to v1.43.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-09 01:59:51 +00:00
6a5fdd1218 fix(deps): update rust crate clap to v4.5.24
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-08 01:52:03 +00:00
b62da46495 fix(deps): update rust crate serde_json to v1.0.135
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-07 01:53:16 +00:00
1db0aae184 fix(deps): update rust crate git2 to 0.20.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-01-05 01:54:57 +00:00
8a5939f5a3 fix(deps): update rust crate serde to v1.0.217
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-28 01:54:49 +00:00
5dda685a5c fix(deps): update rust crate serde_json to v1.0.134
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-22 01:47:08 +00:00
145d83570a fix(deps): update rust crate serde to v1.0.216
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-11 05:47:36 +00:00
3f09588d6b fix(deps): update rust crate clap to v4.5.23
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-06 02:10:50 +00:00
f3fa0f5801 fix(deps): update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-12-04 02:11:34 +00:00
f4004e4863 fix(deps): update rust crate tracing-subscriber to v0.3.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-30 06:39:25 +00:00
db1e04fd86 fix(deps): update rust crate tracing to v0.1.41
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-28 02:03:08 +00:00
c07763fbb2 fix(deps): update rust crate serde_json to v1.0.133
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-17 01:48:45 +00:00
52a0dc3157 fix(deps): update rust crate clap to v4.5.21
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-14 01:50:13 +00:00
2a4297f629 fix(deps): update rust crate serde to v1.0.215
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-12 01:47:44 +00:00
22e7d53eb2 fix(deps): update rust crate tokio to v1.41.1
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-11-08 01:50:13 +00:00
2e107cd66c fix(deps): update rust crate serde to v1.0.214
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-29 02:00:31 +00:00
72627c7ff6 fix(deps): update rust crate serde to v1.0.213
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-23 05:06:18 +00:00
3d80646160 fix(deps): update rust crate tokio to v1.41.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-23 01:05:27 +00:00
08a4484ac5 fix(deps): update rust crate serde_json to v1.0.132
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-20 00:58:37 +00:00
699ac1048f fix(deps): update rust crate serde_json to v1.0.131
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-19 01:10:05 +00:00
841863a1af fix(deps): update rust crate serde_json to v1.0.129
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-18 00:57:48 +00:00
47f00d1c4a fix(deps): update rust crate clap to v4.5.20
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-09 00:58:45 +00:00
24023ad6b0 fix(deps): update rust crate clap to v4.5.19
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-10-02 00:55:03 +00:00
1377e65e27 fix(deps): update rust crate clap to v4.5.18
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-21 01:23:16 +00:00
e3dc6b1ffb fix(deps): update rust crate serde to v1.0.210
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-07 00:52:25 +00:00
884819ac64 fix(deps): update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-09-05 00:53:24 +00:00
a6c6752e6d fix(deps): update rust crate tokio to v1.40.0
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-30 08:39:17 +00:00
8c0dc4f362 fix(deps): update rust crate serde to v1.0.209
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-24 04:41:44 +00:00
7053606c21 fix(deps): update rust crate serde_json to v1.0.127
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-23 21:29:46 +00:00
2b9c50c615 fix(deps): update rust crate serde_json to v1.0.126
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-23 20:11:45 +00:00
8f2d57bbbb fix(deps): update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-21 22:51:56 +00:00
2248cacbe7 fix(deps): update rust crate serde to v1.0.208
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-08-21 21:24:23 +00:00
42e6ad3442 fix(deps): update rust crate toml to v0.8.13
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-25 18:48:58 +00:00
5f15285476 fix(deps): update rust crate serde to v1.0.203
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
2024-05-25 18:14:33 +00:00
3b2e732552 fix(deps): update rust crate serde to 1.0.202
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-15 08:18:23 +00:00
7d47f34e1f fix(deps): update all dependencies
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-08 01:02:24 +00:00
fb7d770265 fix(deps): update rust crate serde to 1.0.200
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-05-01 16:58:11 +00:00
5cfa5afb91 fix(deps): update rust crate serde to 1.0.199
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-27 04:52:43 +00:00
73b195c085 fix(deps): update rust crate serde to 1.0.198
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-16 21:44:56 +00:00
cfd985e903 fix(deps): update rust crate serde_json to 1.0.116
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2024-04-16 05:52:50 +00:00
d9ab3cf163 Merge pull request 'fix(deps): update all dependencies' (#2) from renovate/all into main
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: https://git.front.kjuulh.io/kjuulh/pull-articles/pulls/2
2024-04-08 20:32:33 +00:00
e2d9d22a88 Merge branch 'main' into renovate/all
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-04-08 20:31:55 +00:00
e4e6f37ef3 feat: add pull articles
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-04-08 22:31:05 +02:00
d889be8572 fix(deps): update all dependencies
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-04-08 20:28:22 +00:00
f0f09cf4e1 feat: stuff
Some checks failed
continuous-integration/drone/push Build is failing
2024-04-08 22:27:54 +02:00
eb857e7a0a feat: upload cli plan
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-04-08 22:19:40 +02:00
5cfa9ced67 fix: build
Signed-off-by: kjuulh <contact@kjuulh.io>
2023-07-27 01:12:17 +02:00
c8230091c2 feat: update to newest build version
Signed-off-by: kjuulh <contact@kjuulh.io>
2023-07-26 21:39:31 +02:00
11 changed files with 430 additions and 2598 deletions

2
.drone.yml Normal file
View File

@@ -0,0 +1,2 @@
kind: template
load: cuddle-rust-cli-plan.yaml

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@
.env
target/
dest/
.cuddle/

89
CHANGELOG.md Normal file
View File

@@ -0,0 +1,89 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
## [0.1.0] - 2025-03-04
### Added
- add pull articles
- stuff
- upload cli plan
- update to newest build version
- with pull articles
### Fixed
- *(deps)* update rust crate serde_json to v1.0.140
- *(deps)* update rust crate clap to v4.5.31
- *(deps)* update rust crate serde_json to v1.0.139
- *(deps)* update rust crate serde to v1.0.218
- *(deps)* update rust crate clap to v4.5.30
- *(deps)* update rust crate clap to v4.5.29
- *(deps)* update rust crate toml to v0.8.20
- *(deps)* update rust crate clap to v4.5.28
- *(deps)* update rust crate serde_json to v1.0.138
- *(deps)* update rust crate clap to v4.5.27
- *(deps)* update rust crate serde_json to v1.0.137
- *(deps)* update rust crate serde_json to v1.0.136
- *(deps)* update rust crate clap to v4.5.26
- *(deps)* update rust crate tokio to v1.43.0
- *(deps)* update rust crate clap to v4.5.24
- *(deps)* update rust crate serde_json to v1.0.135
- *(deps)* update rust crate git2 to 0.20.0
- *(deps)* update rust crate serde to v1.0.217
- *(deps)* update rust crate serde_json to v1.0.134
- *(deps)* update rust crate serde to v1.0.216
- *(deps)* update rust crate clap to v4.5.23
- *(deps)* update all dependencies
- *(deps)* update rust crate tracing-subscriber to v0.3.19
- *(deps)* update rust crate tracing to v0.1.41
- *(deps)* update rust crate serde_json to v1.0.133
- *(deps)* update rust crate clap to v4.5.21
- *(deps)* update rust crate serde to v1.0.215
- *(deps)* update rust crate tokio to v1.41.1
- *(deps)* update rust crate serde to v1.0.214
- *(deps)* update rust crate serde to v1.0.213
- *(deps)* update rust crate tokio to v1.41.0
- *(deps)* update rust crate serde_json to v1.0.132
- *(deps)* update rust crate serde_json to v1.0.131
- *(deps)* update rust crate serde_json to v1.0.129
- *(deps)* update rust crate clap to v4.5.20
- *(deps)* update rust crate clap to v4.5.19
- *(deps)* update rust crate clap to v4.5.18
- *(deps)* update rust crate serde to v1.0.210
- *(deps)* update all dependencies
- *(deps)* update rust crate tokio to v1.40.0
- *(deps)* update rust crate serde to v1.0.209
- *(deps)* update rust crate serde_json to v1.0.127
- *(deps)* update rust crate serde_json to v1.0.126
- *(deps)* update all dependencies
- *(deps)* update rust crate serde to v1.0.208
- *(deps)* update rust crate toml to v0.8.13
- *(deps)* update rust crate serde to v1.0.203
- *(deps)* update rust crate serde to 1.0.202
- *(deps)* update all dependencies
- *(deps)* update rust crate serde to 1.0.200
- *(deps)* update rust crate serde to 1.0.199
- *(deps)* update rust crate serde to 1.0.198
- *(deps)* update rust crate serde_json to 1.0.116
- *(deps)* update all dependencies
- build
### Other
- Merge pull request 'fix(deps): update all dependencies' (#2) from renovate/all into main
Reviewed-on: https://git.front.kjuulh.io/kjuulh/pull-articles/pulls/2
- Merge branch 'main' into renovate/all
- Merge pull request 'Configure Renovate' (#1) from renovate/configure into main
Reviewed-on: https://git.front.kjuulh.io/kjuulh/pull-articles/pulls/1
- Add renovate.json
- initial

572
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,6 @@
[workspace]
members = ["."]
[package]
name = "pull-articles"
version = "0.1.0"
@@ -6,18 +9,18 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
git2 = { version = "0.16.1" }
clap = "4.2.1"
color-eyre = "0.6.2"
git2 = { version = "0.20.0" }
clap = "4.5.4"
color-eyre = "0.6.3"
dotenv = "0.15.0"
eyre = "0.6.8"
serde = { version = "1.0.159", features = ["derive"] }
serde_json = "1.0.95"
serde_yaml = "0.9.19"
eyre = "0.6.12"
serde = { version = "1.0.202", features = ["derive"] }
serde_json = "1.0.117"
serde_yaml = "0.9.34+deprecated"
tempdir = "0.3.7"
tokio = { version = "1.27.0", features = ["full"] }
tracing = { version = "0.1.37", features = ["log"] }
tracing-subscriber = "0.3.16"
tokio = { version = "1.37.0", features = ["full"] }
tracing = { version = "0.1.40", features = ["log"] }
tracing-subscriber = "0.3.18"
serde_toml = "0.0.1"
toml = { version = "0.7.3", features = ["preserve_order"] }
toml = { version = "0.8.12", features = ["preserve_order"] }
tokio-scoped = "0.2.0"

View File

@@ -6,4 +6,4 @@ cargo build
popd || exit
./ci/target/debug/ci
dagger run ./ci/target/debug/ci

2157
ci/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +0,0 @@
[package]
name = "ci"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
chrono = "0.4.24"
color-eyre = "0.6.2"
dagger-sdk = "0.2.19"
eyre = "0.6.8"
tokio = { version = "1.27.0", features = ["full"] }
tokio-scoped = "0.2.0"

View File

@@ -1,112 +0,0 @@
use std::sync::Arc;
use dagger_sdk::{HostDirectoryOptsBuilder, QueryContainerOptsBuilder};
use tokio::sync::Mutex;
#[tokio::main]
async fn main() -> eyre::Result<()> {
color_eyre::install().unwrap();
let client = dagger_sdk::connect().await?;
let src = client.host().directory_opts(
".",
HostDirectoryOptsBuilder::default()
.exclude(vec!["target/", ".git/", "ci/"])
.build()?,
);
let variants = vec![/*"linux/amd64", */ "linux/arm64"];
let platform_variants = Arc::new(Mutex::new(Vec::new()));
tokio_scoped::scope(|s| {
for platform in variants {
let client = client.clone();
let platform_variants = platform_variants.clone();
let src = src.clone();
s.spawn(async move {
let rust_dep_image = client
.container_opts(
QueryContainerOptsBuilder::default()
.platform(platform)
.build()
.unwrap(),
)
.from("rustlang/rust:nightly")
.with_workdir("/app")
//.with_exec(vec!["apt-get", "update"])
//.with_exec(vec![
// "apt-get",
// "install",
// "-y",
// "build-essential",
// "cmake",
// "curl",
// "file",
// "git",
// "sudo",
// "xutils-dev",
// "unzip",
// "ca-certificates",
// "python3",
// "python3-pip",
// "autoconf",
// "autoconf-archive",
// "automake",
// "flex",
// "bison",
// "llvm-dev",
// "libclang-dev",
// "clang",
//])
.with_directory(".", src.id().await.unwrap())
.with_exec(vec!["cargo", "build", "--release"]);
let dep_image = client
.container_opts(
QueryContainerOptsBuilder::default()
.platform(platform)
.build()
.unwrap(),
)
.from("debian:bullseye")
.with_exec(vec!["apt-get", "update"])
.with_exec(vec!["apt-get", "install", "-y", "openssl", "git"])
.with_file(
"/usr/bin/pull-articles",
rust_dep_image
.file("target/release/pull-articles")
.id()
.await
.unwrap(),
)
.with_exec(vec!["pull-articles", "--help"]);
let mut platform_variants = platform_variants.lock().await;
platform_variants.push(dep_image.id().await.unwrap())
});
}
});
let variants = platform_variants
.lock()
.await
.iter()
.map(|c| c.clone())
.collect::<Vec<_>>();
let tag = chrono::Utc::now().timestamp();
let _ = client
.container()
.publish_opts(
format!("kasperhermansen/pull-articles:{tag}"),
dagger_sdk::ContainerPublishOptsBuilder::default()
.platform_variants(variants)
.build()?,
)
.await?;
Ok(())
}

15
cuddle.yaml Normal file
View File

@@ -0,0 +1,15 @@
# yaml-language-server: $schema=https://git.front.kjuulh.io/kjuulh/cuddle/raw/branch/main/schemas/base.json
base: "git@git.front.kjuulh.io:kjuulh/cuddle-rust-cli-plan.git"
vars:
service: "pull-articles"
registry: kasperhermansen
please:
project:
owner: kjuulh
repository: "pull-articles"
branch: main
settings:
api_url: https://git.front.kjuulh.io

View File

@@ -15,11 +15,17 @@ async fn main() -> eyre::Result<()> {
.arg(clap::Arg::new("repo").long("repo").required(true))
.arg(clap::Arg::new("path").long("path").required(true))
.arg(clap::Arg::new("out").long("out").required(true))
.arg(
clap::Arg::new("static-out")
.long("static-out")
.required(false),
)
.get_matches();
let repo = matches.get_one::<String>("repo").unwrap();
let path = matches.get_one::<String>("path").unwrap();
let out = matches.get_one::<String>("out").unwrap();
let static_out = matches.get_one::<String>("static-out");
tracing::info!(repo = repo, path = path, out = out, "pulling articles");
@@ -56,7 +62,7 @@ async fn main() -> eyre::Result<()> {
let out_dir = PathBuf::from(out);
tokio::fs::create_dir_all(&out_dir).await?;
let mut dir = tokio::fs::read_dir(repo_dir).await?;
let mut dir = tokio::fs::read_dir(&repo_dir).await?;
while let Some(file) = dir.next_entry().await? {
if let Ok(ft) = file.file_type().await {
@@ -66,6 +72,7 @@ async fn main() -> eyre::Result<()> {
let (frontmatter, content) = extract_frontmatter(file_str)?;
let transformed_frontmatter = transform_frontmatter(frontmatter)?;
let content = content.replace("assets/", "/assets/");
let new_article = format!("{}\n{}", transformed_frontmatter, content);
let mut out_file = out_dir.clone();
@@ -76,6 +83,34 @@ async fn main() -> eyre::Result<()> {
}
}
if let Some(static_out) = static_out {
let mut assets_dir = repo_dir.clone();
assets_dir.push("assets");
tracing::info!(
asserts_dir = assets_dir.display().to_string(),
"reading assets"
);
match tokio::fs::read_dir(&assets_dir).await {
Ok(mut dir) => {
tokio::fs::create_dir_all(static_out).await?;
while let Some(file) = dir.next_entry().await? {
if let Ok(_file_type) = file.file_type().await {
let from = file.path();
let to = PathBuf::from(static_out).join(file.file_name());
tracing::info!(
from = from.display().to_string(),
to = to.display().to_string(),
"moving file"
);
tokio::fs::rename(from, to).await?;
}
}
}
Err(e) => tracing::error!(error = e.to_string(), "failed to read dir"),
}
}
Ok(())
}
@@ -195,7 +230,7 @@ tags:
let res = transform_frontmatter(frontmatter.into())?;
assert_eq!(&res, "+++\ntitle = \"Advancing career\"\ndescription = \"2023-04-01-advanding-career\"\ndate = \"2023-04-01\"\nupdated = \"2023-04-01\"\ndraft = true\nauthors = [\"kjuulh\"]\n\n+++\n");
assert_eq!(&res, "+++\ntitle = \"Advancing career\"\ndescription = \"2023-04-01-advanding-career\"\ndate = \"2023-04-01\"\nupdated = \"2023-04-01\"\ndraft = true\nauthors = [\"kjuulh\"]\n+++");
Ok(())
}