use anyhow::Result;
use clap::Parser;
use electron_tasje::app::App;
use electron_tasje::config::CopyDef;
use electron_tasje::pack::PackingProcessBuilder;
use std::env::current_dir;
#[derive(Parser, Debug)]
#[clap(author, version, about, long_about = None)]
enum Args {
Pack {
#[clap(short, long, value_parser)]
output: Option<String>,
#[clap(short, long, value_parser)]
config: Option<String>,
#[clap(long, value_parser)]
additional_files: Vec<String>,
#[clap(long, value_parser)]
additional_asar_unpack: Vec<String>,
#[clap(long, value_parser)]
additional_extra_resources: Vec<String>,
},
}
use Args::*;
fn main() -> Result<()> {
let args = Args::parse();
match args {
Pack {
output,
config,
additional_files,
additional_asar_unpack,
additional_extra_resources,
} => {
let root = current_dir()?;
let package_path = root.join("package.json");
let app = if let Some(config_path) = &config {
App::new_from_files(&package_path, root.join(config_path))?
} else {
App::new_from_package_file(&package_path)?
};
let mut builder = PackingProcessBuilder::new(app);
if let Some(out) = output {
builder = builder.base_output_dir(out);
}
builder
.additional_files(
additional_files
.into_iter()
.map(CopyDef::Simple)
.collect(),
)
.additional_asar_unpack(additional_asar_unpack)
.additional_extra_resources(
additional_extra_resources
.into_iter()
.map(CopyDef::Simple)
.collect(),
)
.build()
.proceed()?;
}
}
Ok(())
}