Skip to content

Commit

Permalink
chore: move secrets & metadata to runtime (#153)
Browse files Browse the repository at this point in the history
* chore: move secrets & metadata to runtime

* fix serenity

* fix: revert config::Source
  • Loading branch information
jonaro00 committed Mar 15, 2024
1 parent 0e5b96e commit 7cf3996
Show file tree
Hide file tree
Showing 19 changed files with 30 additions and 49 deletions.
1 change: 0 additions & 1 deletion actix-web/clerk/backend/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,3 @@ serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
shuttle-actix-web = "0.41.0"
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
4 changes: 2 additions & 2 deletions actix-web/clerk/backend/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ use clerk_rs::{
};
use serde::{Deserialize, Serialize};
use shuttle_actix_web::ShuttleActixWeb;
use shuttle_secrets::SecretStore;
use shuttle_runtime::SecretStore;

struct AppState {
client: Clerk,
Expand Down Expand Up @@ -70,7 +70,7 @@ async fn get_user(state: web::Data<AppState>, req: HttpRequest) -> impl Responde

#[shuttle_runtime::main]
async fn main(
#[shuttle_secrets::Secrets] secrets: SecretStore,
#[shuttle_runtime::Secrets] secrets: SecretStore,
) -> ShuttleActixWeb<impl FnOnce(&mut ServiceConfig) + Send + Clone + 'static> {
let app_config = move |cfg: &mut ServiceConfig| {
let clerk_secret_key = secrets
Expand Down
1 change: 0 additions & 1 deletion axum/metadata/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,4 @@ edition = "2021"
axum = "0.7.3"
shuttle-axum = "0.41.0"
shuttle-runtime = "0.41.0"
shuttle-metadata = "0.41.0"
tokio = "1.28.2"
4 changes: 2 additions & 2 deletions axum/metadata/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use axum::{routing::get, Router};
use shuttle_metadata::Metadata;
use shuttle_runtime::DeploymentMetadata;

#[shuttle_runtime::main]
async fn axum(
#[shuttle_metadata::ShuttleMetadata] metadata: Metadata,
#[shuttle_runtime::Metadata] metadata: DeploymentMetadata,
) -> shuttle_axum::ShuttleAxum {
let router = Router::new().route("/", get(format!("{:?}", metadata)));

Expand Down
1 change: 0 additions & 1 deletion fullstack-templates/saas/backend/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ reqwest = "0.11.16"
serde = { version = "1.0.160", features = ["derive"] }
shuttle-axum = "0.41.0"
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
shuttle-shared-db = { version = "0.41.0", features = ["postgres", "sqlx"] }
sqlx = { version = "0.7.1", features = ["time"] }
time = { version = "0.3.20", features = ["serde"] }
Expand Down
4 changes: 2 additions & 2 deletions fullstack-templates/saas/backend/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ impl FromRef<AppState> for Key {
#[shuttle_runtime::main]
async fn axum(
#[shuttle_shared_db::Postgres] postgres: PgPool,
#[shuttle_secrets::Secrets] secrets: shuttle_secrets::SecretStore,
#[shuttle_runtime::Secrets] secrets: shuttle_runtime::SecretStore,
) -> shuttle_axum::ShuttleAxum {
sqlx::migrate!()
.run(&postgres)
Expand Down Expand Up @@ -64,7 +64,7 @@ async fn axum(
Ok(router.into())
}

fn grab_secrets(secrets: shuttle_secrets::SecretStore) -> (String, String, String, String, String) {
fn grab_secrets(secrets: shuttle_runtime::SecretStore) -> (String, String, String, String, String) {
let stripe_key = secrets
.get("STRIPE_KEY")
.unwrap_or_else(|| "None".to_string());
Expand Down
15 changes: 6 additions & 9 deletions loco/hello-world/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,19 +8,16 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
shuttle-axum = "0.38.0"
shuttle-metadata = "0.38.0"
shuttle-runtime = { version = "0.38.0", default-features = false }


async-trait = "0.1.74"
axum = "0.7.1"
eyre = "*"
loco-rs = { version = "0.3.1", default-features = false, features = ["cli"] }
shuttle-axum = "0.41.0"
shuttle-runtime = { version = "0.41.0", default-features = false }
serde = "*"
serde_json = "*"
eyre = "*"
tokio = { version = "1.33.0", default-features = false }
async-trait = "0.1.74"

axum = "0.7.1"
tokio = "1.33.0"
tracing = "0.1.40"
tracing-subscriber = { version = "0.3.17", features = ["env-filter", "json"] }

Expand Down
6 changes: 3 additions & 3 deletions loco/hello-world/src/bin/shuttle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ use loco_rs::environment::Environment;

#[shuttle_runtime::main]
async fn main(
#[shuttle_metadata::ShuttleMetadata] meta: shuttle_metadata::Metadata,
#[shuttle_runtime::Metadata] meta: shuttle_runtime::DeploymentMetadata,
) -> shuttle_axum::ShuttleAxum {
let environment = match meta.env {
shuttle_metadata::Environment::Local => Environment::Development,
shuttle_metadata::Environment::Deployment => Environment::Production,
shuttle_runtime::Environment::Local => Environment::Development,
shuttle_runtime::Environment::Deployment => Environment::Production,
};
let boot_result = create_app::<App>(StartMode::ServerOnly, &environment)
.await
Expand Down
1 change: 0 additions & 1 deletion other/standalone-binary/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,4 @@ axum = "0.7.3"
dotenvy = "0.15.7"
shuttle-axum = "0.41.0"
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
tokio = "1.28.2"
4 changes: 2 additions & 2 deletions other/standalone-binary/src/bin/shuttle.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
use shuttle_axum::ShuttleAxum;
use shuttle_secrets::SecretStore;
use shuttle_runtime::SecretStore;

use multi_binary::build_router;

#[shuttle_runtime::main]
async fn axum(#[shuttle_secrets::Secrets] secret_store: SecretStore) -> ShuttleAxum {
async fn axum(#[shuttle_runtime::Secrets] secret_store: SecretStore) -> ShuttleAxum {
// Get all resources 'the Shuttle way'
let my_secret = secret_store.get("SOME_API_KEY").unwrap();

Expand Down
1 change: 0 additions & 1 deletion poise/hello-world/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ publish = false
anyhow = "1.0.68"
poise = "0.6.1"
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
# Since poise is a serenity command framework, it can run on Shuttle with shuttle-serenity
shuttle-serenity = "0.41.0"
tracing = "0.1.37"
Expand Down
4 changes: 2 additions & 2 deletions poise/hello-world/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use anyhow::Context as _;
use poise::serenity_prelude::{ClientBuilder, GatewayIntents};
use shuttle_secrets::SecretStore;
use shuttle_runtime::SecretStore;
use shuttle_serenity::ShuttleSerenity;

struct Data {} // User data, which is stored and accessible in all command invocations
Expand All @@ -15,7 +15,7 @@ async fn hello(ctx: Context<'_>) -> Result<(), Error> {
}

#[shuttle_runtime::main]
async fn main(#[shuttle_secrets::Secrets] secret_store: SecretStore) -> ShuttleSerenity {
async fn main(#[shuttle_runtime::Secrets] secret_store: SecretStore) -> ShuttleSerenity {
// Get the discord token set in `Secrets.toml`
let discord_token = secret_store
.get("DISCORD_TOKEN")
Expand Down
1 change: 0 additions & 1 deletion rocket/secrets/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,4 @@ anyhow = "1.0.66"
rocket = "0.5.0"
shuttle-rocket = "0.41.0"
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
tokio = "1.26.0"
2 changes: 1 addition & 1 deletion rocket/secrets/Secrets.toml.example
Original file line number Diff line number Diff line change
@@ -1 +1 @@
MY_API_KEY = 'the contents of my API key'
MY_API_KEY = 'the contents of my API key'
12 changes: 4 additions & 8 deletions rocket/secrets/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
#[macro_use]
extern crate rocket;

use anyhow::anyhow;
use anyhow::Context;
use rocket::response::status::BadRequest;
use rocket::State;
use shuttle_secrets::SecretStore;
use shuttle_runtime::SecretStore;

#[get("/secret")]
async fn secret(state: &State<MyState>) -> Result<String, BadRequest<String>> {
Expand All @@ -17,14 +17,10 @@ struct MyState {

#[shuttle_runtime::main]
async fn rocket(
#[shuttle_secrets::Secrets] secret_store: SecretStore,
#[shuttle_runtime::Secrets] secrets: SecretStore,
) -> shuttle_rocket::ShuttleRocket {
// get secret defined in `Secrets.toml` file.
let secret = if let Some(secret) = secret_store.get("MY_API_KEY") {
secret
} else {
return Err(anyhow!("secret was not found").into());
};
let secret = secrets.get("MY_API_KEY").context("secret was not found")?;

let state = MyState { secret };
let rocket = rocket::build().mount("/", routes![secret]).manage(state);
Expand Down
1 change: 0 additions & 1 deletion serenity/hello-world/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ edition = "2021"
anyhow = "1.0.66"
serenity = { version = "0.12.0", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
shuttle-serenity = "0.41.0"
tokio = "1.26.0"
tracing = "0.1.37"
12 changes: 4 additions & 8 deletions serenity/hello-world/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use anyhow::anyhow;
use anyhow::Context as _;
use serenity::async_trait;
use serenity::model::channel::Message;
use serenity::model::gateway::Ready;
use serenity::prelude::*;
use shuttle_secrets::SecretStore;
use shuttle_runtime::SecretStore;
use tracing::{error, info};

struct Bot;
Expand All @@ -25,14 +25,10 @@ impl EventHandler for Bot {

#[shuttle_runtime::main]
async fn serenity(
#[shuttle_secrets::Secrets] secret_store: SecretStore,
#[shuttle_runtime::Secrets] secrets: SecretStore,
) -> shuttle_serenity::ShuttleSerenity {
// Get the discord token set in `Secrets.toml`
let token = if let Some(token) = secret_store.get("DISCORD_TOKEN") {
token
} else {
return Err(anyhow!("'DISCORD_TOKEN' was not found").into());
};
let token = secrets.get("DISCORD_TOKEN").context("'DISCORD_TOKEN' was not found")?;

// Set gateway intents, which decides what events the bot will be notified about
let intents = GatewayIntents::GUILD_MESSAGES | GatewayIntents::MESSAGE_CONTENT;
Expand Down
1 change: 0 additions & 1 deletion serenity/postgres/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ anyhow = "1.0.66"
serde = "1.0.148"
serenity = { version = "0.12.0", default-features = false, features = ["client", "gateway", "rustls_backend", "model"] }
shuttle-runtime = "0.41.0"
shuttle-secrets = "0.41.0"
shuttle-serenity = "0.41.0"
shuttle-shared-db = { version = "0.41.0", features = ["postgres", "sqlx"] }
sqlx = "0.7.1"
Expand Down
4 changes: 2 additions & 2 deletions serenity/postgres/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ use serenity::model::application::{CommandDataOptionValue, CommandOptionType, In
use serenity::model::gateway::Ready;
use serenity::model::id::GuildId;
use serenity::prelude::*;
use shuttle_secrets::SecretStore;
use shuttle_runtime::SecretStore;
use sqlx::{Executor, PgPool};
use tracing::{error, info};

Expand Down Expand Up @@ -127,7 +127,7 @@ impl EventHandler for Bot {
#[shuttle_runtime::main]
async fn serenity(
#[shuttle_shared_db::Postgres] pool: PgPool,
#[shuttle_secrets::Secrets] secret_store: SecretStore,
#[shuttle_runtime::Secrets] secret_store: SecretStore,
) -> shuttle_serenity::ShuttleSerenity {
// Get the discord token set in `Secrets.toml`
let token = secret_store
Expand Down

0 comments on commit 7cf3996

Please sign in to comment.