brewery
notashelf /
c68d3445e72da17183b1401e92b924c463babf9f

beer

public

A terminal worth pouring time into

Star0tarball
clone
ssh://git@git.notashelf.dev:33/notashelf/beer.git
src/main.rsRust51 lines1.1 KB
1
//! beer, a fast, software-rendered, Wayland-native terminal emulator.
2
3
mod wayland;
4
5
use std::process::ExitCode;
6
7
use pound::Parse;
8
9
/// A fast, software-rendered, Wayland-native terminal emulator.
10
#[derive(Parse)]
11
#[pound(name = "beer", version = "0.0.0")]
12
struct Cli {
13
    /// Run as a daemon hosting multiple windows.
14
    #[pound(long)]
15
    server: bool,
16
}
17
18
fn main() -> ExitCode {
19
    init_logging();
20
    match run(Cli::parse()) {
21
        Ok(()) => ExitCode::SUCCESS,
22
        Err(err) => {
23
            tracing::error!("{err:#}");
24
            eprintln!("beer: {err:#}");
25
            ExitCode::FAILURE
26
        }
27
    }
28
}
29
30
fn init_logging() {
31
    use tracing_subscriber::{EnvFilter, fmt};
32
33
    let filter = EnvFilter::try_from_env("BEER_LOG")
34
        .or_else(|_| EnvFilter::try_from_default_env())
35
        .unwrap_or_else(|_| EnvFilter::new("warn"));
36
37
    fmt()
38
        .with_env_filter(filter)
39
        .with_writer(std::io::stderr)
40
        .init();
41
}
42
43
fn run(cli: Cli) -> anyhow::Result<()> {
44
    if cli.server {
45
        tracing::info!("starting beer server");
46
        todo!("server mode")
47
    }
48
49
    tracing::info!("starting beer");
50
    wayland::run()
51
}