Skip to content

Commit 9eb1577

Browse files
committed
feat: add xtask.
1 parent 0757331 commit 9eb1577

File tree

8 files changed

+72
-7
lines changed

8 files changed

+72
-7
lines changed

.cargo/config.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[alias]
2+
xtask = "run --package xtask --bin xtask --"

Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[workspace]
22
resolver = "2"
3-
members = ["crates/*"]
3+
members = ["crates/*", "xtask"]
44

55
[workspace.package]
66
edition = "2021"
@@ -16,5 +16,5 @@ paste = "^1.0"
1616
regex = "^1.6"
1717
serde = "^1.0"
1818
serde_json = "^1.0"
19-
serde_valid_derive = { version = "1.0.1", path = "crates/serde_valid_derive" }
20-
serde_valid_literal = { version = "1.0.1", path = "crates/serde_valid_literal" }
19+
serde_valid_derive = { path = "crates/serde_valid_derive" }
20+
serde_valid_literal = { path = "crates/serde_valid_literal" }

scripts/publish.sh

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@
22

33
set -e
44

5-
cd "$(dirname "$0")"
5+
cd "$(dirname "$0")"/../
66

7-
cd ../crates/serde_valid_derive
7+
cargo xtask upgate-tags
8+
9+
cd "$(dirname "$0")"/../crates/serde_valid_derive
810
cargo publish
911

10-
cd ../crates/serde_valid_literal
12+
cd "$(dirname "$0")"/../crates/serde_valid_literal
1113
cargo publish
1214

1315
# wait tarball package publishment
1416
sleep 20
1517

16-
cd ../crates/serde_valid
18+
cd "$(dirname "$0")"/../crates/serde_valid
1719
cargo publish

xtask/Cargo.toml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[package]
2+
name = "xtask"
3+
edition.workspace = true
4+
version.workspace = true
5+
license.workspace = true
6+
repository.workspace = true
7+
authors.workspace = true
8+
keywords.workspace = true
9+
10+
[dependencies]
11+
clap = { version = "4.5.23", features = ["derive"] }
12+
toml_edit = "0.22.22"

xtask/src/commands.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
pub mod update_tags;

xtask/src/commands/update_tags.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
use toml_edit::DocumentMut;
2+
3+
use crate::utils;
4+
5+
#[derive(clap::Args, Debug)]
6+
pub struct Args {}
7+
8+
pub fn run(_args: Args) {
9+
let project_root = utils::project_root();
10+
11+
let cargo_toml = std::fs::read_to_string(project_root.join("Cargo.toml")).unwrap();
12+
let mut doc = cargo_toml.parse::<DocumentMut>().unwrap();
13+
14+
let version = doc["workspace"]["package"]["version"]
15+
.clone()
16+
.into_value()
17+
.unwrap();
18+
doc["workspace"]["dependencies"]["serde_valid_derive"]["version"] = version.clone().into();
19+
doc["workspace"]["dependencies"]["serde_valid_literal"]["version"] = version.into();
20+
21+
std::fs::write(project_root.join("Cargo.toml"), doc.to_string()).unwrap();
22+
}

xtask/src/main.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
mod commands;
2+
mod utils;
3+
4+
use clap::Parser;
5+
6+
#[derive(Debug, clap::Parser)]
7+
enum Args {
8+
UpdateTags(commands::update_tags::Args),
9+
}
10+
11+
fn main() {
12+
let args = Args::parse();
13+
match args {
14+
Args::UpdateTags(args) => {
15+
commands::update_tags::run(args);
16+
}
17+
}
18+
}

xtask/src/utils.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
use std::path::PathBuf;
2+
3+
/// Returns the path to the root directory of `tombi` project.
4+
pub fn project_root() -> PathBuf {
5+
let dir = std::env::var("CARGO_MANIFEST_DIR")
6+
.unwrap_or_else(|_| env!("CARGO_MANIFEST_DIR").to_owned());
7+
PathBuf::from(dir).parent().unwrap().to_owned()
8+
}

0 commit comments

Comments
 (0)