Skip to content

Commit

Permalink
feat(codegen): enable usage of re-exported tokio
Browse files Browse the repository at this point in the history
  • Loading branch information
jonaro00 committed Oct 24, 2023
1 parent af9bfea commit 35b7ac8
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 27 deletions.
52 changes: 28 additions & 24 deletions codegen/src/shuttle_main/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,13 @@ pub(crate) fn r#impl(_attr: TokenStream, item: TokenStream) -> TokenStream {
let loader = Loader::from_item_fn(&mut fn_decl);

quote! {
#[shuttle_runtime::tokio::main]
async fn main() {
shuttle_runtime::__internals::start(loader).await;
fn main() {
use ::shuttle_runtime::tokio;
#[tokio::main]
async fn main() {
::shuttle_runtime::__internals::start(loader).await;
}
main()
}

#loader
Expand Down Expand Up @@ -200,7 +204,7 @@ impl ToTokens for Loader {
lit: Lit::Str(str), ..
}) => {
needs_vars = true;
quote!(&shuttle_runtime::__internals::strfmt(#str, &vars)?)
quote!(&::shuttle_runtime::__internals::strfmt(#str, &vars)?)
}
other => quote!(#other),
};
Expand Down Expand Up @@ -228,7 +232,7 @@ impl ToTokens for Loader {
None
} else {
Some(parse_quote!(
use shuttle_runtime::__internals::{Factory, ResourceBuilder};
use ::shuttle_runtime::__internals::{Factory, ResourceBuilder};
))
};

Expand All @@ -254,13 +258,13 @@ impl ToTokens for Loader {

let loader = quote! {
async fn loader(
mut #factory_ident: shuttle_runtime::__internals::ProvisionerFactory,
mut #resource_tracker_ident: shuttle_runtime::__internals::ResourceTracker,
mut #factory_ident: ::shuttle_runtime::__internals::ProvisionerFactory,
mut #resource_tracker_ident: ::shuttle_runtime::__internals::ResourceTracker,
) -> #return_type {
use shuttle_runtime::__internals::Context;
use ::shuttle_runtime::__internals::Context;
#extra_imports
#vars
#(let #fn_inputs = shuttle_runtime::__internals::get_resource(
#(let #fn_inputs = ::shuttle_runtime::__internals::get_resource(
#fn_inputs_builder::new()#fn_inputs_builder_options,
&mut #factory_ident,
&mut #resource_tracker_ident,
Expand Down Expand Up @@ -323,10 +327,10 @@ mod tests {
let actual = quote!(#input);
let expected = quote! {
async fn loader(
mut _factory: shuttle_runtime::__internals::ProvisionerFactory,
mut _resource_tracker: shuttle_runtime::__internals::ResourceTracker,
mut _factory: ::shuttle_runtime::__internals::ProvisionerFactory,
mut _resource_tracker: ::shuttle_runtime::__internals::ResourceTracker,
) -> ShuttleSimple {
use shuttle_runtime::__internals::Context;
use ::shuttle_runtime::__internals::Context;
simple().await
}
};
Expand Down Expand Up @@ -391,17 +395,17 @@ mod tests {
let actual = quote!(#input);
let expected = quote! {
async fn loader(
mut factory: shuttle_runtime::__internals::ProvisionerFactory,
mut resource_tracker: shuttle_runtime::__internals::ResourceTracker,
mut factory: ::shuttle_runtime::__internals::ProvisionerFactory,
mut resource_tracker: ::shuttle_runtime::__internals::ResourceTracker,
) -> ShuttleComplex {
use shuttle_runtime::__internals::Context;
use shuttle_runtime::__internals::{Factory, ResourceBuilder};
let pool = shuttle_runtime::__internals::get_resource(
use ::shuttle_runtime::__internals::Context;
use ::shuttle_runtime::__internals::{Factory, ResourceBuilder};
let pool = ::shuttle_runtime::__internals::get_resource(
shuttle_shared_db::Postgres::new(),
&mut factory,
&mut resource_tracker,
).await.context(format!("failed to provision {}", stringify!(shuttle_shared_db::Postgres)))?;
let redis = shuttle_runtime::__internals::get_resource(
let redis = ::shuttle_runtime::__internals::get_resource(
shuttle_shared_db::Redis::new(),
&mut factory,
&mut resource_tracker,
Expand Down Expand Up @@ -502,14 +506,14 @@ mod tests {
let actual = quote!(#input);
let expected = quote! {
async fn loader(
mut factory: shuttle_runtime::__internals::ProvisionerFactory,
mut resource_tracker: shuttle_runtime::__internals::ResourceTracker,
mut factory: ::shuttle_runtime::__internals::ProvisionerFactory,
mut resource_tracker: ::shuttle_runtime::__internals::ResourceTracker,
) -> ShuttleComplex {
use shuttle_runtime::__internals::Context;
use shuttle_runtime::__internals::{Factory, ResourceBuilder};
use ::shuttle_runtime::__internals::Context;
use ::shuttle_runtime::__internals::{Factory, ResourceBuilder};
let vars = std::collections::HashMap::from_iter(factory.get_secrets().await?.into_iter().map(|(key, value)| (format!("secrets.{}", key), value)));
let pool = shuttle_runtime::__internals::get_resource (
shuttle_shared_db::Postgres::new().size(&shuttle_runtime::__internals::strfmt("10Gb", &vars)?).public(false),
let pool = ::shuttle_runtime::__internals::get_resource (
shuttle_shared_db::Postgres::new().size(&::shuttle_runtime::__internals::strfmt("10Gb", &vars)?).public(false),
&mut factory,
&mut resource_tracker,
).await.context(format!("failed to provision {}", stringify!(shuttle_shared_db::Postgres)))?;
Expand Down
6 changes: 3 additions & 3 deletions runtime/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@
//! be a binary crate with a few dependencies including `shuttle-runtime` and `shuttle-axum`.
//!
//! ```toml
//! shuttle-runtime = "0.30.0"
//! axum = "0.6.10"
//! axum = "0.6.20"
//! shuttle-axum = "0.30.0"
//! tokio = "1.26"
//! shuttle-runtime = "0.30.0"
//! tokio = "1.28.2"
//! ```
//!
//! A boilerplate code for your axum project can also be found in `src/main.rs`:
Expand Down

0 comments on commit 35b7ac8

Please sign in to comment.