package Ġbuild Ċ Ċ import Ġbuild . util . BUILD _ LIBRARIES Ċ import Ġbuild . util . getProperty By Command Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . json . Json Element Ċ import Ġkotlinx . serialization . json . Json Primitive Ċ import Ġkotlinx . serialization . json . encode ToJson Element Ċ import Ġkotlinx . serialization . json . int Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . process . Exec Result Ċ import Ġorg . gradle . process . Exec Spec Ċ import Ġorg . gradle . tool ing . Build Exception Ċ import Ġorg . http 4 k . core . Method Ċ import Ġorg . http 4 k . core . Request Ċ import Ġorg . http 4 k . core . Response Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . Response Wrapper Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . httpRequest Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . jsonObject Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . text Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . with Basic Auth Ċ import Ġorg . jetbrains . kotlin x . jupyter . common . with Json Ċ import Ġjava . io . OutputStream Ċ Ċ class ĠLibrary Update Tasks Configurator ( ĊĠĠĠ Ġprivate Ġval Ġproject : ĠProject , ĊĠĠĠ Ġprivate Ġval Ġsettings : ĠRoot Settings Extension , Ċ ) Ġ{ ĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠNew Pr Data ( ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġval Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġval Ġhead : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġval Ġbase : ĠString , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Serializable ĊĠĠĠ Ġclass ĠSet Labels Data ( ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġval Ġlabels : ĠList < String >, ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġregister Tasks () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġupdate Lib Branch Name : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( UPDATE _ LIBRARY _ PARAM _ TASK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlib Name Ġ= Ġsettings . lib Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Name Ġ= Ġsettings . lib ParamName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Value Ġ= Ġsettings . lib Param Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Lib Branch Name Ġ= Ġ" update -$ lib Name -$ param Name -$ param Value " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Library Param ( lib Name , Ġparam Name , Ġparam Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( PUSH _ CHANG ES _ TASK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( UPDATE _ LIBRARY _ PARAM _ TASK ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġexec Git ( var arg Ġargs : ĠString , Ġconfigure : ĠExec Spec . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠExec Result Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġproject . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . executable Ġ= Ġ" git " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . args Ġ= Ġargs . asList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . working Dir Ġ= Ġsettings . libraries Dir ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigure () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Git (" config ", Ġ" user . email ", Ġ" robot @ jetbrains . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Git (" config ", Ġ" user . name ", Ġ" robot ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Git (" add ", Ġ". ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Git (" commit ", Ġ"- m ", Ġ"[ AUTO ] ĠUpdate Ġlibrary Ġversion ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Branch Ġ= Ġproject . getProperty By Command ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" build . libraries . branch ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" git ", Ġ" rev - parse ", Ġ"-- abbrev - ref ", Ġ" HEAD "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . libraries Dir , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Git (" push ", Ġ"-- force ", Ġ"- u ", Ġsettings . libraries Repo Url , Ġ"$ current Branch : refs / heads /" Ġ+ Ġupdate Lib Branch Name !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . standard Output Ġ= Ġobject Ġ: ĠOutputStream () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwrite ( b : ĠInt ) Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Git (" reset ", Ġ"-- hard ", Ġ" HEAD ~ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( MAKE _ CHANG ES _ PR _ TASK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On ( PUSH _ CHANG ES _ TASK ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Last Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġsettings . pr Github User ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġsettings . pr Github Token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepo User And Name Ġ= Ġsettings . libraries Repo User And Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġgithub Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod : ĠMethod , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson : ĠJson Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure : Ġ( Response ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠResponse Wrapper Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠhttpRequest ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest ( method , Ġ" https :// api . github . com /$ request ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Json ( json ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Basic Auth ( user , Ġpassword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( response . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! response . status . successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Failure ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpr Response Ġ= Ġgithub Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . POST , Ġ" repos /$ repo User And Name / pulls ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson . encode ToJson Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNew Pr Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ" Update Ġ`${ settings . lib Name }` Ġlibrary Ġto Ġ`${ settings . lib Param Value }` ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ= Ġupdate Lib Branch Name !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbase Ġ= Ġ" master " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBuild Exception (" Creating ĠPR Ġfailed Ġwith Ġcode Ġ${ response . status . code }", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpr Number Ġ= Ġ( pr Response . jsonObject [" number "] Ġas ĠJson Primitive ). int ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgithub Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethod . POST , Ġ" repos /$ repo User And Name / issues /$ pr Number / labels ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJson . encode ToJson Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSet Labels Data ( listOf (" no - changelog ", Ġ" library - descriptors ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠBuild Exception (" Cannot Ġsetup Ġlabels Ġfor Ġcreated ĠPR : Ġ${ response . text }", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Library Param ( lib Name : ĠString , Ġparam Name : ĠString , Ġparam Value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlib File Ġ= Ġproject . file ( settings . libraries Dir ). resolve ( BUILD _ LIBRARIES . descriptor FileName ( lib Name )) ĊĠĠĠĠĠĠĠ Ġval Ġlib Text Ġ= Ġlib File . read Text () ĊĠĠĠĠĠĠĠ Ġval Ġparam Regex Ġ= ĠRegex (""" ^ ([ Ġ\ t ]* "$ param Name "[ Ġ\ t ]* :[ Ġ\ t ]* ") (.* ) ("[ Ġ\ t ]* , ? )$ """, ĠRegex Option . MULT IL INE ) ĊĠĠĠĠĠĠĠ Ġval Ġnew Text Ġ= Ġlib Text . replace ( param Regex , Ġ"$ 1 $ param Value $ 3 ") ĊĠĠĠĠĠĠĠ Ġlib File . write Text ( new Text ) ĊĠĠĠ Ġ} Ċ } Ċ