Skip to content

Commit de40cb7

Browse files
authored
chore: clean up legacy constants & related code (#2073)
1 parent cfa9a0f commit de40cb7

File tree

6 files changed

+24
-35
lines changed

6 files changed

+24
-35
lines changed

cargo-shuttle/src/builder.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::process::Stdio;
44

55
use anyhow::{bail, Context, Result};
66
use cargo_metadata::{Metadata, Package, Target};
7-
use shuttle_common::constants::RUNTIME_NAME;
87
use tokio::io::AsyncBufReadExt;
98
use tracing::{error, trace};
109

@@ -56,7 +55,7 @@ pub async fn build_workspace(
5655
notification.abort();
5756

5857
let metadata = async_cargo_metadata(manifest_path.as_path()).await?;
59-
let (package, target) = find_first_shuttle_package(&metadata)?;
58+
let (package, target, _) = find_first_shuttle_package(&metadata)?;
6059

6160
let service = cargo_build(
6261
package,
@@ -100,18 +99,24 @@ pub async fn async_cargo_metadata(manifest_path: &Path) -> Result<Metadata> {
10099
}
101100

102101
/// Find crates with a runtime dependency and main macro
103-
fn find_shuttle_packages(metadata: &Metadata) -> Result<Vec<(Package, Target)>> {
102+
fn find_shuttle_packages(metadata: &Metadata) -> Result<Vec<(Package, Target, Option<String>)>> {
104103
let mut packages = Vec::new();
105104
trace!("Finding Shuttle-related packages");
106105
for member in metadata.workspace_packages() {
107-
let has_runtime_dep = member
106+
let runtime_dep = member
108107
.dependencies
109108
.iter()
110-
.any(|dependency| dependency.name == RUNTIME_NAME);
111-
if !has_runtime_dep {
109+
.find(|dependency| dependency.name == "shuttle-runtime");
110+
let Some(runtime_dep) = runtime_dep else {
112111
trace!("Skipping {}, no shuttle-runtime dependency", member.name);
113112
continue;
114-
}
113+
};
114+
let runtime_version = runtime_dep
115+
.req
116+
.comparators
117+
.first()
118+
// is "^0.X.0" when `shuttle-runtime = "0.X.0"` is in Cargo.toml, so strip the caret
119+
.and_then(|c| c.to_string().strip_prefix('^').map(ToOwned::to_owned));
115120

116121
let mut target = None;
117122
for t in member.targets.iter() {
@@ -134,13 +139,16 @@ fn find_shuttle_packages(metadata: &Metadata) -> Result<Vec<(Package, Target)>>
134139
};
135140

136141
trace!("Found {}", member.name);
137-
packages.push((member.to_owned(), target.to_owned()));
142+
packages.push((member.to_owned(), target.to_owned(), runtime_version));
138143
}
139144

140145
Ok(packages)
141146
}
142147

143-
pub fn find_first_shuttle_package(metadata: &Metadata) -> Result<(Package, Target)> {
148+
/// Find first crate in workspace with a runtime dependency and main macro
149+
pub fn find_first_shuttle_package(
150+
metadata: &Metadata,
151+
) -> Result<(Package, Target, Option<String>)> {
144152
find_shuttle_packages(metadata)?.into_iter().next().context(
145153
"Expected at least one target that Shuttle can build. \
146154
Make sure your crate has a binary target that uses a fully qualified `#[shuttle_runtime::main]`.",

cargo-shuttle/src/lib.rs

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ use reqwest::header::HeaderMap;
3030
use shuttle_api_client::ShuttleApiClient;
3131
use shuttle_common::{
3232
constants::{
33-
headers::X_CARGO_SHUTTLE_VERSION, other_env_api_url, EXAMPLES_REPO, RUNTIME_NAME,
34-
SHUTTLE_API_URL, SHUTTLE_CONSOLE_URL, STORAGE_DIRNAME, TEMPLATES_SCHEMA_VERSION,
33+
headers::X_CARGO_SHUTTLE_VERSION, other_env_api_url, EXAMPLES_REPO, SHUTTLE_API_URL,
34+
SHUTTLE_CONSOLE_URL, TEMPLATES_SCHEMA_VERSION,
3535
},
3636
models::{
3737
auth::{KeyMessage, TokenMessage},
@@ -1632,9 +1632,10 @@ impl Shuttle {
16321632

16331633
let metadata = async_cargo_metadata(manifest_path.as_path()).await?;
16341634
// TODO: support overriding this
1635-
let (package, target) = find_first_shuttle_package(&metadata)?;
1635+
let (package, target, runtime_version) = find_first_shuttle_package(&metadata)?;
16361636
rust_build_args.package_name = Some(package.name.clone());
16371637
rust_build_args.binary_name = Some(target.name.clone());
1638+
rust_build_args.shuttle_runtime_version = runtime_version;
16381639

16391640
// activate shuttle feature if present
16401641
let (no_default_features, features) = if package.features.contains_key("shuttle") {
@@ -1653,17 +1654,6 @@ impl Shuttle {
16531654
default_manifest.into_os_string().into_string().ok();
16541655
}
16551656

1656-
rust_build_args.shuttle_runtime_version = package
1657-
.dependencies
1658-
.iter()
1659-
.find(|dependency| dependency.name == RUNTIME_NAME)
1660-
.expect("shuttle package to have runtime dependency")
1661-
.req
1662-
.comparators
1663-
.first()
1664-
// is "^0.X.0" when `shuttle-runtime = "0.X.0"` is in Cargo.toml
1665-
.and_then(|c| c.to_string().strip_prefix('^').map(ToOwned::to_owned));
1666-
16671657
// TODO: determine which (one) binary to build
16681658

16691659
deployment_req.build_args = Some(BuildArgs::Rust(rust_build_args));
@@ -1979,8 +1969,6 @@ impl Shuttle {
19791969
.context("adding override `!.git/`")?
19801970
.add("!target/")
19811971
.context("adding override `!target/`")?
1982-
.add(&format!("!{STORAGE_DIRNAME}/"))
1983-
.context(format!("adding override `!{STORAGE_DIRNAME}/`"))?
19841972
.build()
19851973
.context("building archive override rules")?;
19861974
for r in WalkBuilder::new(project_directory)

common/src/constants.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
//! Shared constants used across Shuttle crates
22
3-
/// Used by plugins for local file storage.
4-
pub const STORAGE_DIRNAME: &str = ".shuttle-storage";
5-
63
// URLs
74
pub const SHUTTLE_API_URL: &str = "https://api.shuttle.dev";
85
pub const SHUTTLE_CONSOLE_URL: &str = "https://console.shuttle.dev";
@@ -21,9 +18,6 @@ pub const EXAMPLES_README: &str =
2118
pub const EXAMPLES_TEMPLATES_TOML: &str =
2219
"https://raw.githubusercontent.com/shuttle-hq/shuttle-examples/main/templates.toml";
2320

24-
/// Crate name for checking cargo metadata
25-
pub const RUNTIME_NAME: &str = "shuttle-runtime";
26-
2721
/// Current version field in `examples/templates.toml`
2822
pub const TEMPLATES_SCHEMA_VERSION: u32 = 1;
2923

common/src/models/deployment.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ pub struct DeploymentRequestImage {
245245
pub struct DeploymentMetadata {
246246
pub env: Environment,
247247
pub project_name: String,
248-
/// Path to a folder that persists between deployments
248+
/// Path to a recommended folder for disk storage during local runs
249249
pub storage_path: PathBuf,
250250
}
251251

runtime/src/rt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ pub async fn start(loader: impl Loader + Send + 'static, runner: impl Runner + S
104104
};
105105
let io = TokioIo::new(stream);
106106

107-
tokio::task::spawn(async move {
107+
tokio::spawn(async move {
108108
if let Err(err) = http1::Builder::new()
109109
.serve_connection(
110110
io,

service/src/lib.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::path::PathBuf;
44

55
use async_trait::async_trait;
66
use serde::{de::DeserializeOwned, Serialize};
7-
use shuttle_common::constants::STORAGE_DIRNAME;
87
pub use shuttle_common::{
98
models::{
109
deployment::{DeploymentMetadata, Environment},
@@ -80,7 +79,7 @@ impl ResourceFactory {
8079
DeploymentMetadata {
8180
env: self.env,
8281
project_name: self.project_name.to_string(),
83-
storage_path: PathBuf::from(STORAGE_DIRNAME),
82+
storage_path: PathBuf::from(".shuttle-storage"),
8483
}
8584
}
8685
}

0 commit comments

Comments
 (0)