/* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof ĠT ooth pick , Ġlicensed Ġunder Ġthe ĠMIT ĠLicense . Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 - 2 0 2 1 ĠJ ason ĠPen illa Ġ& ĠContributors Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ package Ġxyz . j pen illa . tooth pick . task Ċ Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġxyz . j pen illa . tooth pick . ensure Success Ċ import Ġxyz . j pen illa . tooth pick . git Cmd Ċ import Ġxyz . j pen illa . tooth pick . re Enable Git Signing Ċ import Ġxyz . j pen illa . tooth pick . root Project Dir Ċ import Ġxyz . j pen illa . tooth pick . temp or arily Disable Git Signing Ċ import Ġjava . nio . file . Files Ċ Ċ public Ġopen Ġclass ĠApply Pat ches Ġ: ĠT ooth pick Task () Ġ{ ĊĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġdefault Ġgit Ġarguments Ġto Ġapply Ġpatches . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ` listOf (" am ", Ġ"-- 3 way ", Ġ"-- ignore - whitespace ") ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġval ĠDEFAULT _ AP PLY _ COMMAND : ĠList < String > Ġ= ĠlistOf (" am ", Ġ"-- 3 way ", Ġ"-- ignore - whitespace ") ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġapply Command Ġ= ĠArrayList ( DEFAULT _ AP PLY _ COMMAND ) ĊĊĠ Ġpublic Ġfun Ġapply Command ( var arg Ġgit Arguments : ĠString ): ĠUnit Ġ= ĊĠĠĠ Ġapply Command ( git Arguments . toList ()) ĊĊĠ Ġpublic Ġfun Ġapply Command ( git Arguments : ĠList < String >) Ġ{ ĊĠĠĠ Ġapply Command . clear () ĊĠĠĠ Ġapply Command . addAll ( git Arguments ) ĊĠ Ġ} ĊĊĠ Ġ@ Task Action ĊĠ Ġprivate Ġfun Ġapply Pat ches () Ġ{ ĊĠĠĠ Ġfor Ġ( sub project Ġin Ġtoo th pick . sub projects ) Ġ{ ĊĠĠĠĠĠ Ġval Ġ( base Dir , Ġproject Dir , Ġpatches Dir ) Ġ= Ġsub project ĊĠĠĠĠĠ Ġval Ġname Ġ= Ġproject Dir . name ĊĊĠĠĠĠĠ Ġ// ĠReset Ġor Ġinitialize Ġsub project ĊĠĠĠĠĠ Ġlogger . lifecycle ("> >> ĠRe setting Ġsub project Ġ$ name ") ĊĠĠĠĠĠ Ġif Ġ( project Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġensure Success ( git Cmd (" fetch ", Ġ" origin ", Ġdir Ġ= Ġproject Dir )) ĊĠĠĠĠĠĠĠ Ġensure Success ( git Cmd (" reset ", Ġ"-- hard ", Ġ" origin / master ", Ġdir Ġ= Ġproject Dir )) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġensure Success ( git Cmd (" clone ", Ġbase Dir . absolute Path , Ġproject Dir . absolute Path , Ġdir Ġ= Ġproject . root Project Dir )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġlogger . lifecycle ("> >> ĠDone Ġreset ting Ġsub project Ġ$ name ") ĊĊĠĠĠĠĠ Ġif Ġ(! patches Dir . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . lifecycle ("> >> ĠPat ches Ġdirectory Ġfor Ġ$ name Ġdoes Ġnot Ġexist , Ġskipping ") ĊĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// ĠApply Ġpatches ĊĠĠĠĠĠ Ġval Ġpatch Paths Ġ= ĠFiles . new Directory Stream ( patches Dir . to Path ()) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to File () Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . name . endsWith (". patch ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. sorted () ĊĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . isNotEmpty () Ġ} Ġ?: Ġcontinue ĊĠĠĠĠĠ Ġval Ġpatches Ġ= Ġpatch Paths . map Ġ{ Ġit . absolute Path Ġ}. to Typed Array () ĊĊĠĠĠĠĠ Ġval Ġwas Git Signing Enabled Ġ= Ġtemporarily Disable Git Signing ( project Dir ) ĊĊĠĠĠĠĠ Ġlogger . lifecycle ("> >> ĠApply ing Ġpatches Ġto Ġ$ name ") ĊĊĠĠĠĠĠ Ġval Ġgit Command Ġ= ĠArrayList < String >() ĊĠĠĠĠĠ Ġgit Command . addAll ( apply Command ) ĊĠĠĠĠĠ Ġgit Command . addAll ( patches ) ĊĠĠĠĠĠ Ġensure Success ( git Cmd (* git Command . to Typed Array (), Ġdir Ġ= Ġproject Dir , Ġprint Out Ġ= Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( was Git Signing Enabled ) Ġre Enable Git Signing ( project Dir ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( was Git Signing Enabled ) Ġre Enable Git Signing ( project Dir ) ĊĠĠĠĠĠ Ġlogger . lifecycle ("> >> ĠDone Ġapplying Ġpatches Ġto Ġ$ name ") ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ