Files
asciinema/src/cmd/cat.rs

40 lines
933 B
Rust
Raw Normal View History

2024-01-02 12:23:01 +01:00
use crate::format::asciicast;
use anyhow::Result;
use clap::Args;
use std::io;
#[derive(Debug, Args)]
pub struct Cli {
#[arg(required = true)]
filename: Vec<String>,
}
impl Cli {
pub fn run(self) -> Result<()> {
let mut writer = asciicast::Writer::new(io::stdout(), false, 0);
2024-01-02 12:23:01 +01:00
let mut time_offset: u64 = 0;
let mut first = true;
for path in self.filename.iter() {
let recording = asciicast::open_from_path(path)?;
2024-01-02 12:23:01 +01:00
let mut time = time_offset;
if first {
writer.write_header(&recording.header)?;
2024-01-02 12:23:01 +01:00
first = false;
}
for event in recording.events {
2024-01-02 12:23:01 +01:00
let mut event = event?;
time = time_offset + event.time;
event.time = time;
writer.write_event(event)?;
}
time_offset = time;
}
Ok(())
}
}