Skip to content

Commit

Permalink
Add processing for files
Browse files Browse the repository at this point in the history
  • Loading branch information
szeweq committed May 30, 2024
1 parent deb81db commit eff3405
Showing 1 changed file with 23 additions and 5 deletions.
28 changes: 23 additions & 5 deletions src/bin/mc-repack/main.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use std::{any::Any, fs, path::Path, sync::Arc, thread::{self, JoinHandle}};
use clap::Parser;
use cli_args::{Cmd, JarsArgs, RepackOpts};
use cli_args::{Cmd, FilesArgs, JarsArgs, RepackOpts};
use crossbeam_channel::Sender;
use indicatif::{ProgressBar, ProgressStyle, MultiProgress};

Expand All @@ -26,8 +26,13 @@ fn main() -> Result_<()> {
process_jars(fit, ja, &repack_opts, &mut ec)?;
print_entry_errors(ec.results());
}
Cmd::Files(_fa) => {
println!("The files command is reserved for future use!");
Cmd::Files(fa) => {
let path = &fa.path;
let repack_opts = RepackOpts::from_args(&fa.common);
let fit = FilesIter::from_path(path.clone().into_boxed_path())?;
let mut ec = ErrorCollector::new(repack_opts.silent);
process_files(fit, fa, &repack_opts, &mut ec)?;
print_entry_errors(ec.results());
}
Cmd::Check(ca) => {
if config::check(ca.config.clone())? {
Expand All @@ -54,9 +59,8 @@ fn task_err(_: Box<dyn Any + Send>) -> Error_ {
}

fn process_jars(fit: FilesIter, jargs: &JarsArgs, opts: &RepackOpts, ec: &mut ErrorCollector) -> Result_<()> {
let RepackOpts { blacklist, .. } = opts;
let RepackOpts { blacklist, cfgmap, .. } = opts;
let clvl = 9 + jargs.zopfli.map_or(0, |x| x.get() as i64);
let cfgmap = &opts.cfgmap;
let mp = MultiProgress::new();

let base = Box::from(fit.base());
Expand Down Expand Up @@ -112,6 +116,20 @@ fn process_jars(fit: FilesIter, jargs: &JarsArgs, opts: &RepackOpts, ec: &mut Er
Ok(())
}

fn process_files(fit: FilesIter, fargs: &FilesArgs, opts: &RepackOpts, ec: &mut ErrorCollector) -> Result_<()> {
let RepackOpts { blacklist, cfgmap, .. } = opts;
let pb2 = file_progress_bar();
let (pj, ps) = thread_progress_bar(pb2);
optimize_with(
entry::FSEntryReader::custom(fit.base().into(), fit),
entry::FSEntrySaver::new(fargs.out.clone().into_boxed_path()),
cfgmap, &ps, ec, blacklist.clone()
)?;
drop(ps);
pj.join().map_err(task_err)?;
Ok(())
}

fn thread_progress_bar(pb: ProgressBar) -> (JoinHandle<()>, Sender<ProgressState>) {
let (ps, pr) = crossbeam_channel::unbounded();
let pj = thread::spawn(move || {
Expand Down

0 comments on commit eff3405

Please sign in to comment.