Support domain when exporting room logs
This commit is contained in:
parent
2bbfca7002
commit
1f1795f111
1 changed files with 13 additions and 4 deletions
|
|
@ -6,7 +6,7 @@ mod text;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::io::{self, BufWriter, Write};
|
use std::io::{self, BufWriter, Write};
|
||||||
|
|
||||||
use crate::vault::{EuphRoomVault, EuphVault};
|
use crate::vault::{EuphRoomVault, EuphVault, RoomIdentifier};
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, clap::ValueEnum)]
|
#[derive(Debug, Clone, Copy, clap::ValueEnum)]
|
||||||
pub enum Format {
|
pub enum Format {
|
||||||
|
|
@ -43,6 +43,10 @@ pub struct Args {
|
||||||
#[arg(long, short)]
|
#[arg(long, short)]
|
||||||
all: bool,
|
all: bool,
|
||||||
|
|
||||||
|
/// Domain to resolve the room names with.
|
||||||
|
#[arg(long, short, default_value = "euphoria.leet.nu")]
|
||||||
|
domain: String,
|
||||||
|
|
||||||
/// Format of the output file.
|
/// Format of the output file.
|
||||||
#[arg(long, short, value_enum, default_value_t = Format::Text)]
|
#[arg(long, short, value_enum, default_value_t = Format::Text)]
|
||||||
format: Format,
|
format: Format,
|
||||||
|
|
@ -85,7 +89,12 @@ pub async fn export(vault: &EuphVault, mut args: Args) -> anyhow::Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
let rooms = if args.all {
|
let rooms = if args.all {
|
||||||
let mut rooms = vault.rooms().await?;
|
let mut rooms = vault
|
||||||
|
.rooms()
|
||||||
|
.await?
|
||||||
|
.into_iter()
|
||||||
|
.map(|id| id.name)
|
||||||
|
.collect::<Vec<_>>();
|
||||||
rooms.sort_unstable();
|
rooms.sort_unstable();
|
||||||
rooms
|
rooms
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -101,14 +110,14 @@ pub async fn export(vault: &EuphVault, mut args: Args) -> anyhow::Result<()> {
|
||||||
for room in rooms {
|
for room in rooms {
|
||||||
if args.out == "-" {
|
if args.out == "-" {
|
||||||
eprintln!("Exporting &{room} as {} to stdout", args.format.name());
|
eprintln!("Exporting &{room} as {} to stdout", args.format.name());
|
||||||
let vault = vault.room(room);
|
let vault = vault.room(RoomIdentifier::new(args.domain.clone(), room));
|
||||||
let mut stdout = BufWriter::new(io::stdout());
|
let mut stdout = BufWriter::new(io::stdout());
|
||||||
export_room(&vault, &mut stdout, args.format).await?;
|
export_room(&vault, &mut stdout, args.format).await?;
|
||||||
stdout.flush()?;
|
stdout.flush()?;
|
||||||
} else {
|
} else {
|
||||||
let out = format_out(&args.out, &room, args.format);
|
let out = format_out(&args.out, &room, args.format);
|
||||||
eprintln!("Exporting &{room} as {} to {out}", args.format.name());
|
eprintln!("Exporting &{room} as {} to {out}", args.format.name());
|
||||||
let vault = vault.room(room);
|
let vault = vault.room(RoomIdentifier::new(args.domain.clone(), room));
|
||||||
let mut file = BufWriter::new(File::create(out)?);
|
let mut file = BufWriter::new(File::create(out)?);
|
||||||
export_room(&vault, &mut file, args.format).await?;
|
export_room(&vault, &mut file, args.format).await?;
|
||||||
file.flush()?;
|
file.flush()?;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue