// ĠCopyright Ġ 2 0 1 7 ĠS our cer er ĠInc . ĠAll ĠRights ĠReserved . Ċ // ĠAuthor : ĠAn at oly ĠK is lov Ġ( an at oly @ s our cer er . io ) Ċ Ċ package Ġapp . ui Ċ Ċ import Ġapp . Logger Ċ import Ġapp . api . Api Ċ import Ġapp . config . Configurator Ċ import Ġapp . model . Local Repo Ċ import Ġapp . utils . File Helper . to Path Ċ import Ġapp . utils . Repo Helper Ċ import Ġapp . utils . Ui Helper Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ Ċ /** Ċ Ġ* ĠAdd Ġrepository Ġdialog Ġconsole ĠUI Ġstate . Ċ Ġ*/ Ċ class ĠAdd Repo State Ġconstructor ( private Ġval Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġapi : ĠApi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġconfigur ator : ĠConfigurator ) ĊĠĠĠ Ġ: ĠConsole State Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdo Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( configur ator . getLocal Repos (). isNotEmpty ()) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print ("") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" Type Ġone Ġor Ġmore Ġpaths Ġto Ġrepository . ĠYou Ġcan Ġspecify Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" multiple Ġrepository Ġpaths Ġseparated Ġby Ġspace Ġon Ġthe Ġsame Ġline .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" If Ġyou Ġfinished Ġspecifying Ġrepositories , Ġjust Ġhit Ġ' Enter ' Ġto Ġcontinue .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpaths String Ġ= Ġread Line () Ġ?: Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( paths String . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( configur ator . getLocal Repos (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" Add Ġat Ġleast Ġone Ġvalid Ġrepository .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" Finished Ġprocessing Ġgit Ġrepositories ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak Ġ Ġ// ĠUser Ġfinished Ġto Ġadd Ġrepos . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpaths : ĠList < String > Ġ= Ġpaths String . split (' Ġ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpaths . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġit . to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Repo Helper . isValid Repo ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Path ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . walk ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġp Ġ-> ĠRepo Helper . isValid Git Repo ( p ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġp Ġ-> Ġprocess Path ( p ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠLogger . info ( Logger . Events . CONFIG _ SETUP ) Ġ{ Ġ" Config Ġsetup " Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess Path ( path : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Repo Helper . isValid Repo ( path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" Added Ġgit Ġrepository Ġat Ġ$ path .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlocal Repo Ġ= ĠLocal Repo ( path . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlocal Repo . hash All Contribut ors Ġ= ĠUi Helper . confirm (" Do Ġyou Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" want Ġto Ġhash Ġcommits Ġof Ġall Ġcontributors ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Is Yes Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigur ator . add Local Repo Persistent ( local Repo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigur ator . save ToFile () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" Successfully Ġprocessed Ġ$ path ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . warn Ġ{ Ġ" No Ġvalid Ġgit Ġrepository Ġfound Ġat Ġspecified Ġpath Ġ$ path " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . print (" Make Ġsure Ġthat Ġmaster Ġbranch Ġwith Ġat Ġleast Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" one Ġcommit Ġexists .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnext () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . change State ( Email State ( context , Ġapi , Ġconfigur ator )) ĊĠĠĠ Ġ} Ċ } Ċ