/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠV lad im ir ĠS it nik ov Ġ< sit nik ov . vl ad im ir @ gmail . com > Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . github . bur run an . s 3 cache . internal Ċ Ċ import Ġcom . github . bur run an . s 3 cache . internal . tar . Tar InputStream Ċ import Ġorg . gradle . caching . Build Cache Entry Writer Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . StandardCharsets Ċ import Ġjava . util .* Ċ import Ġjava . util . zip . GZIP InputStream Ċ Ċ class ĠCache Entry Metadata ( ĊĠĠĠ Ġval Ġbuild Invocation Id : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġidentity : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġexecution Time : ĠLong ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġoperating System : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġgradle Version : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Map (): ĠMap < String , ĠString > Ġ= Ġmutable Map Of < String , ĠString >(). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild Invocation Id ?. let Ġ{ Ġput (" build Invocation Id ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġidentity ?. let Ġ{ Ġput (" identity ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġexecution Time ?. let Ġ{ Ġput (" execution Time ", Ġit . toString ()) Ġ} ĊĠĠĠĠĠĠĠ Ġoperating System ?. let Ġ{ Ġput (" operating System ", Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġgradle Version ?. let Ġ{ Ġput (" gradle Version ", Ġit ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠCache Entry Metadata ( map : ĠMap < String , ĠString >) Ġ= ĠCache Entry Metadata ( ĊĠĠĠ Ġbuild Invocation Id Ġ= Ġmap [" build Invocation Id "], ĊĠĠĠ Ġidentity Ġ= Ġmap [" identity "], ĊĠĠĠ Ġexecution Time Ġ= Ġmap [" execution Time "] ?. to Long (), ĊĠĠĠ Ġoperating System Ġ= Ġmap [" operating System "], ĊĠĠĠ Ġgradle Version Ġ= Ġmap [" gradle Version "] Ċ ) Ċ Ċ fun ĠBuild Cache Entry Writer . read Build Metadata (): ĠCache Entry Metadata ? Ġ= Ġtry Ġ{ ĊĠĠĠ Ġfile ()?. read Build Metadata () Ċ } Ġcatch Ġ( ignore : ĠThrowable ) Ġ{ ĊĠĠĠ Ġnull Ċ } Ċ Ċ fun ĠFile . read Build Metadata (): ĠCache Entry Metadata ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠinputStream (). use Ġ{ Ġfile Stream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG ZIP InputStream ( file Stream ). use Ġ{ Ġun gzip Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTar InputStream ( ung zip , ĠStandard Charsets . UTF _ 8 . name ()). use Ġ{ Ġtar Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġtar . next Entry Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! entry . isFile Ġ|| Ġentry . name Ġ!= Ġ" METADATA " Ġ|| Ġentry . size Ġ> Ġ 1 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( entry . size . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tar . read ( buffer ) Ġ!= Ġbuffer . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparsed Ġ= ĠProperties (). apply Ġ{ Ġload ( buffer . inputStream ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCache Entry Metadata ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Invocation Id Ġ= Ġparsed . getProperty (" build Invocation Id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentity Ġ= Ġparsed . getProperty (" identity "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecution Time Ġ= Ġparsed . getProperty (" execution Time ") ?. to Long (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperating System Ġ= Ġparsed . getProperty (" operating System "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgradle Version Ġ= Ġparsed . getProperty (" gradle Version ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( ignore : ĠThrowable ) Ġ{ ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull Ċ } Ċ