Skip to content
This repository was archived by the owner on Apr 15, 2026. It is now read-only.

Commit 1084924

Browse files
committed
xtask: add xtask set-dependency <package> <version> [--git link]
1 parent 95dddfe commit 1084924

2 files changed

Lines changed: 44 additions & 5 deletions

File tree

.github/workflows/push.yaml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
strategy:
4141
fail-fast: false
4242
matrix:
43-
rust-gpu-version:
43+
include:
4444
# As well as testing on each OS, we also want to test to make sure we're still supporting
4545
# older versions of `rust-gpu`. However, we can assume that these tests are already okay
4646
# across platforms, so we only need to test on Linux, the chepeast in terms of minutes.
@@ -52,13 +52,18 @@ jobs:
5252
# """
5353
# It's probably easily fixable. But also `0.7.0` was released in April 2023, so there's
5454
# unlikely many users of it?
55-
- 0.8.0
56-
- 0.9.0
55+
- rust-gpu-version: 0.8.0
56+
glam-version: 0.24.2
57+
- rust-gpu-version: 0.9.0
58+
glam-version: 0.24.2
5759
runs-on: ubuntu-latest
5860
env:
5961
RUST_LOG: debug
6062
steps:
6163
- uses: actions/checkout@v4
64+
- if: ${{ matrix.glam-version }}
65+
name: set glam version
66+
run: cargo xtask set-dependency glam ${{ matrix.glam-version }}
6267
- name: Run a full build
6368
run: cargo xtask test-build --rust-gpu-version ${{ matrix.rust-gpu-version }}
6469

crates/xtask/src/main.rs

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ enum Cli {
2424
#[clap(long)]
2525
glam_version: Option<String>,
2626
},
27+
/// Set a dependency in the shader-crate-template to some version
28+
SetDependency {
29+
/// the dependency to modify
30+
package: String,
31+
/// the version to set it to
32+
version: String,
33+
/// the git repo to use, if version is a commit rev
34+
#[clap(long)]
35+
git: Option<String>,
36+
},
2737
}
2838

2939
fn cmd(args: impl IntoIterator<Item = impl AsRef<str>>) -> anyhow::Result<()> {
@@ -51,10 +61,16 @@ struct ShaderCrateTemplateCargoTomlWriter {
5161
original_shader_crate_lock_file: String,
5262
/// Parsed toml table
5363
table: toml::Table,
64+
/// false will reset Cargo.toml when this is dropped
65+
persistent: bool,
5466
}
5567

5668
impl Drop for ShaderCrateTemplateCargoTomlWriter {
5769
fn drop(&mut self) {
70+
if self.persistent {
71+
return;
72+
}
73+
5874
log::info!("reverting overwrite of Cargo.toml");
5975
std::fs::write(
6076
format!("{SHADER_CRATE_PATH}/Cargo.toml"),
@@ -70,9 +86,15 @@ impl Drop for ShaderCrateTemplateCargoTomlWriter {
7086
}
7187
}
7288

89+
impl Default for ShaderCrateTemplateCargoTomlWriter {
90+
fn default() -> Self {
91+
Self::new(false)
92+
}
93+
}
94+
7395
impl ShaderCrateTemplateCargoTomlWriter {
7496
/// Create a new one
75-
fn new() -> Self {
97+
fn new(persistent: bool) -> Self {
7698
let original_shader_crate_template_str =
7799
std::fs::read_to_string(format!("{SHADER_CRATE_PATH}/Cargo.toml")).unwrap();
78100
let table = toml::from_str::<toml::Table>(&original_shader_crate_template_str).unwrap();
@@ -82,6 +104,7 @@ impl ShaderCrateTemplateCargoTomlWriter {
82104
original_shader_crate_template_str,
83105
original_shader_crate_lock_file,
84106
table,
107+
persistent,
85108
}
86109
}
87110

@@ -229,7 +252,7 @@ fn main() -> anyhow::Result<()> {
229252
cmd(["cargo", "install", "--path", "crates/cargo-gpu"])?;
230253

231254
log::info!("setup project");
232-
let mut overwriter = ShaderCrateTemplateCargoTomlWriter::new();
255+
let mut overwriter = ShaderCrateTemplateCargoTomlWriter::default();
233256
let dir = tempfile::TempDir::with_prefix("test-shader-output")?;
234257
overwriter.replace_output_dir(dir.path())?;
235258
if let Some(rust_gpu_version) = rust_gpu_version.as_ref() {
@@ -255,6 +278,17 @@ fn main() -> anyhow::Result<()> {
255278
//NOTE: manifest.json is the default value here, which should be valid
256279
cmd(["cat", dir.path().join("manifest.json").to_str().unwrap()])?;
257280
}
281+
Cli::SetDependency {
282+
package,
283+
version,
284+
git,
285+
} => {
286+
let mut overwriter = ShaderCrateTemplateCargoTomlWriter::new(true);
287+
overwriter.set_dependency(
288+
package.clone(),
289+
&DependencyVersion::parse(version.clone(), git.clone())?,
290+
)?;
291+
}
258292
}
259293
Ok(())
260294
}

0 commit comments

Comments
 (0)