/* Ċ MIT ĠLicense Ċ Ċ Copyright Ġ( c ) Ġ 2 0 1 9 ĠSte phen ĠM err ony Ċ Ċ Permission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ of Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ in Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ to Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ copies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ furnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ċ The Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ copies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ċ THE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ IMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ FITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ AUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ LIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ OUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ SOFTWARE . Ċ */ Ċ Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . nio . file . Standard Open Option Ċ import Ġkotlin . system . exit Process Ċ Ċ const Ġval ĠS EM _ VER Ġ= Ġ" v 1 . 4 . 1 " Ġ// Ġmatches ĠGo ĠS EM _ VER Ġfrom Ġv 1 . 4 . 0 Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ Ġ// Ġprogram Ġoptions ... ĊĠĠĠ Ġvar Ġextract Ġ= Ġfalse ĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġnot Ġextract Ġunless Ġrequested ĊĠĠĠ Ġvar Ġignore Errors Ġ= Ġfalse ĠĠĠ Ġ// Ġif Ġtrue , Ġthen Ġsome Ġerrors Ġare Ġignored Ġwhen Ġrest oring Ġfiles / dirs / links ĊĠĠĠ Ġvar Ġlist Ġ= Ġfalse ĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġreally Ġused Ġat Ġpresent ĊĠĠĠ Ġvar Ġsummary Ġ= Ġfalse ĠĠĠĠĠĠĠĠ Ġ// Ġsummar ise Ġthe Ġcontents Ġof Ġthe ĠD UMP ĊĠĠĠ Ġvar Ġverbose Ġ= Ġfalse ĠĠĠĠĠĠĠĠ Ġ// Ġvery Ġword y Ġoutput ĊĠĠĠ Ġvar Ġversion Ġ= Ġfalse ĊĊĠĠĠ Ġval Ġbase Dir : ĠString Ġ= ĠSystem . getProperty (" user . dir ") Ġ Ġ// Ġas ĠD UMP Ġfiles Ġcan Ġleg ally Ġcontain Ġtoo Ġmany ĠPOP s Ġwe Ġstore Ġcwd Ġand Ġavoid Ġtra ver sing Ġabove Ġit ĊĠĠĠ Ġvar Ġdump Ġ= Ġ"" ĊĠĠĠ Ġvar Ġarg : ĠString ĊĊĠĠĠ Ġif Ġ( args . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" ERROR : ĠNo Ġarguments Ġsupplied .") ĊĠĠĠĠĠĠĠ Ġprint Help () ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġfor Ġ( str Ġin Ġargs ) Ġ{ ĊĠĠĠĠĠĠĠ Ġarg Ġ= Ġstr . replace ( Regex ("^ -* "), " ") Ġ Ġ// Ġremove Ġleading Ġhy ph ens ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" dump file ") Ġ-> Ġdump Ġ= Ġarg . remove Prefix (" dump file =") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" extract ") Ġ-> Ġextract Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" help ") Ġ-> Ġprint Help () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" ignore errors ") Ġ-> Ġignore Errors Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" list ") Ġ-> Ġlist Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" summary ") Ġ-> Ġsummary Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" verbose ") Ġ-> Ġverbose Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . startsWith (" version " Ġ) Ġ-> Ġversion Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" ERROR : ĠUnknown Ġoption ... Ġ$ arg ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Help () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( verbose Ġor Ġversion ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" Load K Ġversion Ġ$ SEM _ VER ") ĊĠĠĠĠĠĠĠ Ġif Ġ(! verbose ) Ġexit Process ( 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( dump . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" ERROR : ĠMust Ġspecify Ġdump Ġfile Ġname Ġwith Ġ-- dump file =< dump file > Ġoption ") ĊĠĠĠĠĠĠĠ Ġexit Process ( 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= ĠPaths . get ( dump ) ĊĠĠĠĠĠĠĠ Ġval Ġdump Stream Ġ= ĠFiles . new InputStream ( path , ĠStandard Open Option . READ ) ĊĠĠĠĠĠĠĠ Ġval Ġaos vs Dump Ġ= ĠA os vs Dump File ( dump Stream . buffered ( 5 1 2 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( verbose Ġor Ġsummary ) Ġprintln (" Summary Ġof ĠD UMP Ġfile Ġ: Ġ$ dump ") ĊĠĠĠĠĠĠĠ Ġaos vs Dump . parse ( extract , Ġignore Errors , Ġlist , Ġsummary , Ġverbose , Ġbase Dir ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" ERROR : ĠCould Ġnot Ġopen ĠD UMP Ġfile Ġ- Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġexit Process ( 1 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġprint Help () Ġ{ ĊĠĠĠ Ġprintln ( Ġ" Usage : ĠLoad K Ġ[-- help ] |-- dump file = <filename> Ġ[-- version ] Ġ[-- extract ] Ġ[-- ignore errors ] Ġ[-- list ] Ġ[-- summary ]") ĊĠĠĠ Ġexit Process ( 0 ) Ċ } Ċ