package Ġorg . oss review toolkit . tools . cur ations Ċ Ċ import Ġcom . fasterxml . jackson . data format . yaml . YAML Factory Ċ import Ġcom . fasterxml . jackson . data format . yaml . YAML Generator Ċ import Ġcom . fasterxml . jackson . data format . yaml . YAML Mapper Ċ import Ġcom . fasterxml . jackson . module . kotlin . readValue Ċ import Ġokhttp 3 . Credentials Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . kotlin . dsl . provide Delegate Ċ import Ġorg . oss review toolkit . model . Identifier Ċ import Ġorg . oss review toolkit . model . Package C uration Ċ import Ġorg . oss review toolkit . model . Package C uration Data Ċ import Ġorg . oss review toolkit . model . V cs Info C uration Data Ċ import Ġorg . oss review toolkit . model . json Mapper Ċ import Ġorg . oss review toolkit . model . mapper Config Ċ import Ġorg . oss review toolkit . utils . common . safe Mk dirs Ċ import Ġjava . io . IOException Ċ Ċ abstract Ġclass ĠAbstract Generate Cur ations Task Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġgithub Username : ĠString Ġby Ġproject ĊĠĠĠ Ġprivate Ġval Ġgithub Token : ĠString Ġby Ġproject ĊĊĠĠĠ Ġprivate Ġval Ġmapper Ġ= ĊĠĠĠĠĠĠĠ ĠYAML Mapper ( YAML Factory (). disable ( YAML Generator . Feature . WRITE _ DOC _ START _ MARKER )). apply ( mapper Config ) ĊĊĠĠĠ Ġprivate Ġval ĠhttpClient Ġ= ĠOk HttpClient () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Ġ= Ġ" generate Ġcur ations " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgit Hub RequestBuilder () Ġ= ĊĠĠĠĠĠĠĠ ĠRequest . Builder (). header (" Authorization ", ĠCredentials . basic ( github Username , Ġgithub Token )) ĊĊĠĠĠ Ġfun Ġget Files From Repository ( ĊĠĠĠĠĠĠĠ Ġowner : ĠString , ĊĠĠĠĠĠĠĠ Ġrepository : ĠString , ĊĠĠĠĠĠĠĠ Ġref : ĠString Ġ= Ġ" main " ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġgit Hub RequestBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url (" https :// api . github . com / repos /$ owner /$ repository / git / trees /$ ref ? recursive = 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠhttpClient . new Call ( request ). execute (). use Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . is Successful ) Ġthrow ĠIOException ("${ response . code } Ġ- Ġ${ response . message }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġjson Mapper . read Tree ( response . body !!. string ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson [" tree "]. map Ġ{ Ġit [" path "]. text Value () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Tags From Repository ( ĊĠĠĠĠĠĠĠ Ġowner : ĠString , ĊĠĠĠĠĠĠĠ Ġrepository : ĠString ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġgit Hub RequestBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url (" https :// api . github . com / repos /$ owner /$ repository / git / refs / tags ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠhttpClient . new Call ( request ). execute (). use Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . is Successful ) Ġthrow ĠIOException ("${ response . code } Ġ- Ġ${ response . message }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġjson Mapper . read Tree ( response . body !!. string ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . map Ġ{ Ġit [" ref "]. text Value (). remove Prefix (" refs / tags /") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Path C uration ( id : ĠIdentifier , Ġpath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . quiet (" Creating Ġpath Ġc uration Ġfor Ġid =${ id . to Coordinates ()} Ġpath =$ path .") ĊĊĠĠĠĠĠĠĠ Ġval Ġc uration Ġ= ĠPackage C uration ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= ĠPackage C uration Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġ" Set Ġthe ĠV CS Ġpath Ġof Ġthe Ġmodule Ġinside Ġthe Ġmulti - module Ġrepository .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv cs Ġ= ĠV cs Info C uration Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġsave C uration ( c uration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave C uration ( c uration : ĠPackage C uration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġcur ations Dir . resolve ( c uration . id . to C uration Path ()) ĊĠĠĠĠĠĠĠ Ġfile . parent File . safe Mk dirs () ĊĊĠĠĠĠĠĠĠ Ġval Ġexisting Cur ations Ġ= Ġif Ġ( file . isFile ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmapper . readValue < List < Package C uration >>( file ). to Mutable List () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable ListOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRemove Ġexisting Ġcur ations Ġfor Ġthe Ġsame Ġversion Ġwith Ġthe Ġsame Ġcomment , Ġbut Ġkeep Ġthe Ġothers . ĊĠĠĠĠĠĠĠ Ġexisting Cur ations . removeAll Ġ{ Ġit . id Ġ== Ġc uration . id Ġ&& Ġit . data . comment Ġ== Ġc uration . data . comment Ġ} ĊĠĠĠĠĠĠĠ Ġexisting Cur ations Ġ+= Ġc uration ĊĊĠĠĠĠĠĠĠ Ġmapper . writeValue ( file , Ġexisting Cur ations . sorted By Ġ{ Ġit . id Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ