pyapp 0.29.0

Runtime installer for Python applications
mod app;
mod commands;
mod compression;
mod distribution;
mod fs_utils;
mod network;
mod process;
mod terminal;

use std::env;

use anyhow::Result;
use clap::Parser;

use crate::commands::cli::Cli;

fn main() -> Result<()> {
    app::initialize()?;

    if let Some(env!("PYAPP_SELF_COMMAND")) = env::args().nth(1).as_deref() {
        match Cli::try_parse() {
            Ok(cli) => return cli.exec(),
            Err(err) => {
                if !err.use_stderr() {
                    err.exit();
                }
            }
        };
    };

    distribution::ensure_ready()?;
    distribution::run_project()?;

    Ok(())
}