feat: add basic cli
This commit is contained in:
@@ -12,3 +12,6 @@ clap.workspace = true
|
||||
dotenvy.workspace = true
|
||||
serde.workspace = true
|
||||
uuid.workspace = true
|
||||
|
||||
rusty-s3 = "0.7.0"
|
||||
url = "2.5.4"
|
||||
|
@@ -1,6 +1,7 @@
|
||||
use std::net::SocketAddr;
|
||||
|
||||
use clap::{Parser, Subcommand};
|
||||
use rusty_s3::{Bucket, Credentials, S3Action};
|
||||
|
||||
use crate::state::SharedState;
|
||||
|
||||
@@ -16,14 +17,48 @@ enum Commands {
|
||||
Serve {
|
||||
#[arg(env = "FOREST_HOST", long, default_value = "127.0.0.1:3000")]
|
||||
host: SocketAddr,
|
||||
|
||||
#[arg(env = "FOREST_S3_ENDPOINT", long = "s3-endpoint")]
|
||||
s3_endpoint: String,
|
||||
|
||||
#[arg(env = "FOREST_S3_REGION", long = "s3-region")]
|
||||
s3_region: String,
|
||||
|
||||
#[arg(env = "FOREST_S3_BUCKET", long = "s3-bucket")]
|
||||
s3_bucket: String,
|
||||
|
||||
#[arg(env = "FOREST_S3_USER", long = "s3-user")]
|
||||
s3_user: String,
|
||||
|
||||
#[arg(env = "FOREST_S3_PASSWORD", long = "s3-password")]
|
||||
s3_password: String,
|
||||
},
|
||||
}
|
||||
|
||||
pub async fn execute() -> anyhow::Result<()> {
|
||||
let cli = Command::parse();
|
||||
|
||||
if let Some(Commands::Serve { .. }) = cli.command {
|
||||
tracing::info!("Starting forest server");
|
||||
if let Some(Commands::Serve {
|
||||
host,
|
||||
s3_endpoint,
|
||||
s3_bucket,
|
||||
s3_region,
|
||||
s3_user,
|
||||
s3_password,
|
||||
}) = cli.command
|
||||
{
|
||||
tracing::info!("Starting server");
|
||||
|
||||
let creds = Credentials::new(s3_user, s3_password);
|
||||
let bucket = Bucket::new(
|
||||
url::Url::parse(&s3_endpoint)?,
|
||||
rusty_s3::UrlStyle::Path,
|
||||
s3_bucket,
|
||||
s3_region,
|
||||
)?;
|
||||
|
||||
let put_object = bucket.put_object(Some(&creds), "some-object");
|
||||
put_object.sign(expires_in)
|
||||
|
||||
let state = SharedState::new().await?;
|
||||
}
|
||||
|
Reference in New Issue
Block a user