Unzipper

Desarrollo del unzipper


Descripcion del unzipper

En Uranium4Linux el unzipper es la parte encargada de descomprimir el archivo que contiene los archivos necesarios para descargar y configurar el pack de mods para el usuario.


Codigo

La idea principal del unzipper es la siguiente:

Se recibe un argumento que será la ruta al .zip que contenga la información del modpack. Con esa ruta se extraerán todos los archivos que contenga el .zip en una carpeta temporal para después copiar los archivos de configuración, los "raw mods" y finalmente leer el json y descargar los mods.



Raw mods son los mods que debido a que no han sido encontrados en la RinthAPI se han metido "hardcoded" al .zip y por lo tanto solo hace falta copiarlos a la ruta destino.



Problemas surgidos

Mientras desarrollaba el unzipper me he dado cuenta de que necesito de algún módulo en mi programa que sea capaz de darme buenos mensajes de errores debido a que aunque Rust sea un lenguaje compilado sus runtime errors aveces pueden ser un poco desesperantes.

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', uranium4Linux/src/zipper/pack_zipper.rs:63:49 stack backtrace: 0: rust_begin_unwind at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/panicking.rs:584:5 1: core::panicking::panic_fmt at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/panicking.rs:143:14 2: core::result::unwrap_failed at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/result.rs:1785:5 3: core::result::Result::unwrap at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/result.rs:1078:23 4: uranium4Linux::zipper::pack_zipper::get_new_files at ./uranium4Linux/src/zipper/pack_zipper.rs:63:25 5: uranium4Linux::zipper::pack_zipper::search_files at ./uranium4Linux/src/zipper/pack_zipper.rs:45:9 6: uranium4Linux::zipper::pack_zipper::compress_pack at ./uranium4Linux/src/zipper/pack_zipper.rs:22:5 7: uranium4Linux::modpack_maker::maker::make_modpack::{{closure}} at ./uranium4Linux/src/modpack_maker/maker.rs:40:5 8: as core::future::future::Future>::poll at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/mod.rs:91:19 9: uranium4Linux::main::{{closure}} at ./uranium4Linux/src/main.rs:31:47 10: as core::future::future::Future>::poll at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/future/mod.rs:91:19 11: tokio::park::thread::CachedParkThread::block_on::{{closure}} at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/park/thread.rs:263:54 12: tokio::coop::with_budget::{{closure}} at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/coop.rs:102:9 13: std::thread::local::LocalKey::try_with at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/thread/local.rs:442:16 14: std::thread::local::LocalKey::with at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/std/src/thread/local.rs:418:9 15: tokio::coop::with_budget at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/coop.rs:95:5 16: tokio::coop::budget at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/coop.rs:72:5 17: tokio::park::thread::CachedParkThread::block_on at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/park/thread.rs:263:31 18: tokio::runtime::enter::Enter::block_on at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/runtime/enter.rs:151:13 19: tokio::runtime::thread_pool::ThreadPool::block_on at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/runtime/thread_pool/mod.rs:73:9 20: tokio::runtime::Runtime::block_on at /home/sergio/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-1.16.1/src/runtime/mod.rs:477:43 21: uranium4Linux::main at ./uranium4Linux/src/main.rs:36:5 22: core::ops::function::FnOnce::call_once at /rustc/fe5b13d681f25ee6474be29d748c65adcd91f69e/library/core/src/ops/function.rs:227:5 note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.



MORE DEVELOPMENT IS REQUIRED

Comentarios

Entradas populares de este blog

Curse, Murmur y 2

Crab Crab Crab, I'm gonna step on the Crab

Entrada Principal