Skip to content

Commit 61c36a1

Browse files
authored
Merge pull request #1905 from itowlson/oci-should-not-depend-on-trigger
Make OCI crate not depend on trigger crate
2 parents 2f987a1 + ff09367 commit 61c36a1

File tree

9 files changed

+25
-16
lines changed

9 files changed

+25
-16
lines changed

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/common/Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ anyhow = "1.0"
99
dirs = "4.0"
1010
sha2 = "0.10"
1111
tempfile = "3.5"
12-
tokio = { version = "1", features = ["rt", "time"] }
12+
tokio = { version = "1", features = ["rt", "time"] }
13+
url = "2"

crates/common/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ pub mod data_dir;
1313
pub mod paths;
1414
pub mod sha256;
1515
pub mod sloth;
16+
pub mod url;

crates/common/src/url.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//! Operations on URLs
2+
3+
use anyhow::{anyhow, Context};
4+
5+
use std::path::PathBuf;
6+
7+
/// Parse the path from a 'file:' URL
8+
pub fn parse_file_url(url: &str) -> anyhow::Result<PathBuf> {
9+
url::Url::parse(url)
10+
.with_context(|| format!("Invalid URL: {url:?}"))?
11+
.to_file_path()
12+
.map_err(|_| anyhow!("Invalid file URL path: {url:?}"))
13+
}

crates/oci/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ spin-app = { path = "../app" }
2222
spin-common = { path = "../common" }
2323
spin-loader = { path = "../loader" }
2424
spin-manifest = { path = "../manifest" }
25-
spin-trigger = { path = "../trigger" }
2625
tempfile = "3.3"
2726
tokio = { version = "1", features = ["fs"] }
2827
tokio-util = { version = "0.7.9", features = ["compat"] }

crates/oci/src/client.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ use oci_distribution::{
1818
use reqwest::Url;
1919
use spin_app::locked::{ContentPath, ContentRef, LockedApp};
2020
use spin_common::sha256;
21+
use spin_common::url::parse_file_url;
2122
use spin_loader::cache::Cache;
2223
use spin_loader::FilesMountStrategy;
2324
use tokio::fs;
@@ -132,7 +133,7 @@ impl Client {
132133
.source
133134
.context("component loaded from disk should contain a file source")?;
134135

135-
let source = spin_trigger::parse_file_url(source.as_str())?;
136+
let source = parse_file_url(source.as_str())?;
136137
let layer = Self::wasm_layer(&source).await?;
137138

138139
// Update the module source with the content ref of the layer.
@@ -146,7 +147,7 @@ impl Client {
146147
.content
147148
.source
148149
.context("file mount loaded from disk should contain a file source")?;
149-
let source = spin_trigger::parse_file_url(source.as_str())?;
150+
let source = parse_file_url(source.as_str())?;
150151

151152
if archive_layers {
152153
self.push_archive_layer(&source, &mut files, &mut layers)
@@ -571,7 +572,7 @@ async fn layer_count(locked: LockedApp) -> Result<usize> {
571572
.content
572573
.source
573574
.context("file mount loaded from disk should contain a file source")?;
574-
let source = spin_trigger::parse_file_url(source.as_str())?;
575+
let source = parse_file_url(source.as_str())?;
575576
for entry in WalkDir::new(&source) {
576577
let entry = entry?;
577578
if entry.file_type().is_file() && !entry.file_type().is_dir() {

crates/trigger/src/lib.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ pub mod loader;
33
mod runtime_config;
44
mod stdio;
55

6-
use std::{collections::HashMap, marker::PhantomData, path::PathBuf};
6+
use std::{collections::HashMap, marker::PhantomData};
77

8-
use anyhow::{anyhow, Context, Result};
8+
use anyhow::{Context, Result};
99
pub use async_trait::async_trait;
1010
use indexmap::IndexMap;
1111
use runtime_config::llm::LLmOptions;
@@ -354,10 +354,3 @@ pub trait TriggerHooks: Send + Sync {
354354
}
355355

356356
impl TriggerHooks for () {}
357-
358-
pub fn parse_file_url(url: &str) -> Result<PathBuf> {
359-
url::Url::parse(url)
360-
.with_context(|| format!("Invalid URL: {url:?}"))?
361-
.to_file_path()
362-
.map_err(|_| anyhow!("Invalid file URL path: {url:?}"))
363-
}

crates/trigger/src/loader.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use spin_app::{
1111
use spin_core::StoreBuilder;
1212
use tokio::fs;
1313

14-
use crate::parse_file_url;
14+
use spin_common::url::parse_file_url;
1515

1616
pub struct TriggerLoader {
1717
working_dir: PathBuf,

examples/spin-timer/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)