ferri/ferri-cli/src/main.rs

69 lines
1.7 KiB
Rust
Raw Normal View History

2025-04-10 19:40:50 +01:00
use server::launch;
extern crate rocket;
use sqlx::sqlite::SqlitePool;
use std::env;
use clap::Parser;
use main::config;
use std::fs;
use std::path::{Path, PathBuf};
2025-04-10 19:40:50 +01:00
#[derive(Parser)]
#[command(version, about, long_about = None)]
struct Cli {
2025-04-11 12:29:29 +01:00
#[arg(short, long)]
init: bool,
#[arg(short, long)]
config: PathBuf,
}
pub fn read_config(path: impl AsRef<Path>) -> config::Config {
let content = fs::read_to_string(path).unwrap();
toml::from_str(&content).unwrap()
2025-04-10 19:40:50 +01:00
}
#[rocket::main]
async fn main() {
2025-04-11 12:29:29 +01:00
let cli = Cli::parse();
let config = read_config(cli.config);
2025-04-11 12:29:29 +01:00
if cli.init {
// Seed DB
let pool = SqlitePool::connect(&env::var("DATABASE_URL").unwrap())
.await
.unwrap();
let mut conn = pool.acquire().await.unwrap();
sqlx::query!(
r#"
2025-04-10 19:40:50 +01:00
INSERT INTO actor (id, inbox, outbox)
VALUES (?1, ?2, ?3)
2025-04-11 12:29:29 +01:00
"#,
"https://ferri.amy.mov/users/9b9d497b-2731-435f-a929-e609ca69dac9",
"https://ferri.amy.mov/users/9b9d497b-2731-435f-a929-e609ca69dac9/inbox",
"https://ferri.amy.mov/users/9b9d497b-2731-435f-a929-e609ca69dac9/outbox"
2025-04-11 12:29:29 +01:00
)
.execute(&mut *conn)
.await
.unwrap();
2025-04-10 19:40:50 +01:00
2025-04-11 12:29:29 +01:00
sqlx::query!(
r#"
INSERT INTO user (id, username, actor_id, display_name)
VALUES (?1, ?2, ?3, ?4)
"#,
"9b9d497b-2731-435f-a929-e609ca69dac9",
"amy",
"https://ferri.amy.mov/users/9b9d497b-2731-435f-a929-e609ca69dac9",
2025-04-11 12:29:29 +01:00
"amy"
)
.execute(&mut *conn)
.await
.unwrap();
} else {
let _ = launch(config).launch().await;
2025-04-11 12:29:29 +01:00
}
2025-04-10 19:40:50 +01:00
}