package Ġcom . an ata wa 1 2 . mod Patch ing . source . internal Ċ Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . logging . Logger Ċ import Ġjava . io . File Ċ import Ġjava . nio . charset . Charset Ċ Ċ object ĠGit Checker Ġ{ ĊĠĠĠ Ġfun Ġcheck For Repo ( project : ĠProject , Ġprefix : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgit Repo Dir Ġ= Ġdetect Git Repo ( project . project Dir ) ĊĠĠĠĠĠĠĠ Ġif Ġ( git Repo Dir Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Ignore And E ol ( project , Ġprefix ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdetect Git Repo ( root : ĠFile ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdir Ġ= Ġroot ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dir . resolve (". git "). exists ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdir ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir Ġ= Ġdir . parent File Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Ignore And E ol ( ĊĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠ Ġprefix : ĠString , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= Ġproject . logger ĊĠĠĠĠĠĠĠ Ġval Ġgit Command Ġ= Ġproject . providers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. gradle Property (" com . an ata wa 1 2 . mod - patch ing . git ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. for Use At Configuration Time () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getOrElse (" git ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġinstalled ĊĠĠĠĠĠĠĠ Ġval Ġinstalled Ġ= ĠProcess Builder ( git Command ). command ("-- version "). start (). exit Value () Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġif Ġ(! installed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" found Ġgit Ġrepository Ġbut Ġgit Ġbinary Ġnot Ġfound !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" Please Ġset Ġ` com . an ata wa 1 2 . mod - patch ing . git = path / to / git / binary ` ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcheck Git Ignore ( logger , Ġgit Command , Ġproject . project Dir , Ġprefix ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Git Ignore ( logger : ĠLogger , Ġgit Command : ĠString , Ġdir : ĠFile , Ġprefix : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinary Names Ġ= Ġif Ġ( prefix . isEmpty ()) Ġset Of (" add - modify ", Ġ" apply - patches ", Ġ" create - diff ") ĊĠĠĠĠĠĠĠ Ġelse Ġset Of ("$ prefix . add - modify ", Ġ"$ prefix . apply - patches ", Ġ"$ prefix . create - diff ") ĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġ. exe Ġpostfix ĊĠĠĠĠĠĠĠ Ġval Ġexec Names Ġ= Ġbinary Names Ġ+ Ġbinary Names . map Ġ{ Ġ"$ it . exe " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprocess Ġ= ĠProcess Builder ( git Command ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. command (" check - ignore ", Ġ"- z ", Ġ"-- stdin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory ( dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġprocess . output Stream . use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . write ( exec Names . join ToString ("\ u 0 0 0 0 "). toByteArray ( Charset . default Charset ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( process . exit Value () Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error ("$ git Command Ġcheck - ignore Ġ- z Ġ-- stdin Ġexit Ġwith Ġnon - zero Ġvalue .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error (" git Ġconfiguration Ġvalidation Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġignored Files Ġ= Ġprocess . inputStream . buffered Reader ( Charset . default Charset ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ Ġit . read Text () Ġ}. split ('\ u 0 0 0 0 '). toSet () ĊĠĠĠĠĠĠĠ Ġval Ġnot Ignored Files Ġ= Ġexec Names Ġ- Ġignored Files ĊĊĠĠĠĠĠĠĠ Ġif Ġ( not Ignored Files . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" th ose Ġof Ġlocally Ġinstalled Ġsource Ġpatch ing Ġutility Ġis Ġnot Ġignored :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn ( not Ignored Files . join ToString (", Ġ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" it 's Ġenvironment Ġdependent Ġbinary Ġfile Ġso Ġit Ġshould Ġbe Ġgit Ġignored .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( prefix . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" you Ġshould Ġadd Ġ${ binary Names . join ToString (",") Ġ{ Ġ"$ it *" Ġ}} Ġto Ġ. gitignore ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" you Ġshould Ġadd Ġ$ prefix .* Ġto Ġ. gitignore ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ