package Ġcom . d ail ym otion . k int a . infra Ċ Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġjava . io . File Ċ import Ġjava . util . zip . Zip InputStream Ċ Ċ object ĠInstall er Ġ{ ĊĠĠĠ Ġfun Ġinstall Latest Version () Ġ{ ĊĠĠĠĠĠĠĠ ĠConstants . staging Dir . delete Re cursively () ĊĠĠĠĠĠĠĠ ĠConstants . staging Dir . mkdir s () ĊĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġ" https :// d ail ym otion . github . io / k int a / zip / latest . zip ". let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRequest . Builder (). url ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOk HttpClient (). new Call ( it ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠZip InputStream ( response . body () !!. byte Stream ()). use Ġ{ Ġzip Stream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġentry Ġ= Ġzip Stream . next Entry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( entry Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Ġ= ĠFile ( Constants . staging Dir , Ġentry . name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( entry . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf . output Stream (). use Ġ{ ĠoutputStream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġzip Stream . copy To ( output Stream ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Ġ= Ġzip Stream . next Entry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġzip Stream . close Entry () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcheck ( Constants . staging Dir . list Files () !!. size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" The Ġdistribution Ġzip Ġcontained Ġtoo Ġmany Ġroot Ġfiles : Ġ${ Constants . staging Dir . list Files (). map Ġ{ Ġit . name Ġ}. join ToString ("\ n ") }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠConstants . staging Dir . list Files () !!. first () ĊĠĠĠĠĠĠĠ Ġcheck ( dir . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ dir . absolute Path } Ġshould Ġbe Ġa Ġdirectory " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠConstants . current Dir . delete Re cursively () ĊĠĠĠĠĠĠĠ Ġdir . rename To ( Constants . current Dir ) ĊĠĠĠĠĠĠĠ ĠConstants . staging Dir . delete () ĊĠĠĠ Ġ} Ċ }