/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠHyper De vs Ċ Ġ* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠB Q Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . hyper devs . po editor . gradle Ċ Ċ import Ġcom . android . build . api . extension . Application Android Components Extension Ċ import Ġcom . android . build . api . extension . Library Android Components Extension Ċ import Ġcom . android . build . gradle . App Plugin Ċ import Ġcom . android . build . gradle . Library Extension Ċ import Ġcom . android . build . gradle . Library Plugin Ċ import Ġcom . android . build . gradle . internal . dsl . Base App Module Extension Ċ import Ġcom . hyper devs . po editor . gradle . k tx . register New Task Ċ import Ġcom . hyper devs . po editor . gradle . tasks . Import Po Editor Strings Task Ċ import Ġcom . hyper devs . po editor . gradle . utils .* Ċ import Ġorg . gradle . api . Named Domain Object Container Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . plugins . Extension Aware Ċ import Ġorg . gradle . api . tasks . Task Provider Ċ import Ġorg . gradle . kotlin . dsl .* Ċ Ċ const Ġval ĠTAG Ġ= Ġ"[ Po Editor Plugin ]" Ċ type alias ĠConfig Name Ġ= ĠString Ċ Ċ /** Ċ Ġ* ĠMain Ġplugin Ġclass Ġthat Ġregisters Ġthe Ġtasks Ġused Ġby Ġthe Ġplugin . Ċ Ġ*/ Ċ class ĠPo Editor Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Config Name Ġ= Ġ" main " ĊĠĠĠĠĠĠĠ Ġval Ġmain Resource Directory Ġ= ĠgetResource Directory ( project , Ġmain Config Name ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġ' po Editor Plugin ' Ġextension Ġobject Ġin Ġthe Ġproject , ĊĠĠĠĠĠĠĠ Ġ// Ġused Ġto Ġpass Ġparameters Ġto Ġthe Ġmain ĠPo Editor Ġtask ĊĠĠĠĠĠĠĠ Ġval Ġmain Po Editor Extension : ĠPo Editor Plugin Extension Ġ= Ġproject . extensions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create < Po Editor Plugin Extension >( DEFAULT _ PLUGIN _ NAME , Ġproject . objects , Ġmain Config Name ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenabled . convention ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Lang . convention (" en ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Res Path . convention ( main Resource Directory . as File . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtags . convention ( emptyList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlanguage Values Override Path Map . convention ( empty Map ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġminimum Translation Percentage . convention (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġflavor Ġand Ġbuild - type Ġconfigurations Ġif Ġthe Ġproject Ġhas Ġthe Ġ" com . android . application " Ġplugin ĊĠĠĠĠĠĠĠ Ġproject . plugins . with Type < App Plugin > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Internal App ( project , Ġmain Po Editor Extension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġflavor Ġand Ġbuild - type Ġconfigurations Ġif Ġthe Ġproject Ġhas Ġthe Ġ" com . android . library " Ġplugin ĊĠĠĠĠĠĠĠ Ġproject . plugins . with Type < Library Plugin > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply Internal Lib ( project , Ġmain Po Editor Extension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Has Application Plugin Ġ= Ġproject . plugins . find Plugin ( App Plugin :: class . java ) Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Has Library Plugin Ġ= Ġproject . plugins . find Plugin ( Library Plugin :: class . java ) Ġ!= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproject Has Any Android Plugin Ġ= Ġproject Has Application Plugin Ġ|| Ġproject Has Library Plugin ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! project Has Any Android Plugin ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" The ĠAndroid ĠApplication ĠGradle Ġplug - in Ġor Ġthe ĠAndroid ĠLibrary ĠGradle Ġplug - in Ġwere Ġnot Ġapplied . Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Po Editor Ġplug - in Ġcannot Ġbe Ġconfigured .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Internal App ( project : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Extension : ĠPo Editor Plugin Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġandroid . po Editor Config Ġextension Ġcontainer Ġso Ġwe Ġcan Ġset - up Ġfl avors Ġand Ġbuild Ġtypes ĊĠĠĠĠĠĠĠ Ġ// Ġconfigurations Ġwith ĠAndroid Ġapp Ġmodules . ĊĠĠĠĠĠĠĠ Ġval Ġconfigs Extension Container Ġ= Ġproject . container < Po Editor Plugin Extension >() ĊĠĠĠĠĠĠĠ Ġval Ġandroid Extension Ġ= Ġproject . the < Base App Module Extension >() ĊĠĠĠĠĠĠĠ Ġval Ġandroid Components Extension Ġ= Ġproject . the < Application Android Components Extension >() ĊĠĠĠĠĠĠĠ Ġ( android Extension Ġas ĠExtension Aware ). extensions . add ( PO EDITOR _ CONFIG _ NAME , Ġconfigs Extension Container ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Po Editor Task Providers Map : ĠMutable Map < Config Name , ĠTask Provider <* >> Ġ= Ġmutable Map Of () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġtasks Ġfor Ġevery Ġflavor Ġor Ġbuild Ġtype ĊĠĠĠĠĠĠĠ Ġandroid Components Extension . before Variants Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Main Po Editor Task ( project , Ġmain Extension ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfigs Ġ= Ġget Configs ( it . product Fl avors . map Ġ{ Ġit . second Ġ}, Ġit . build Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Po Editor Tasks ( configs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs Extension Container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Extension , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Possible Config Names : ĠSet < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Extension . application Variants . flatMap To ( mutable Set Of ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( it . build Type . name ) Ġ+ Ġit . product Fl avors . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify And Link Tasks ( configs Extension Container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Possible Config Names , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply Internal Lib ( project : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Extension : ĠPo Editor Plugin Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġandroid . po Editor Config Ġextension Ġcontainer Ġso Ġwe Ġcan Ġset - up Ġfl avors Ġand Ġbuild Ġtypes ĊĠĠĠĠĠĠĠ Ġ// Ġconfigurations Ġwith ĠAndroid Ġlibrary Ġmodules . ĊĠĠĠĠĠĠĠ Ġval Ġconfigs Extension Container Ġ= Ġproject . container < Po Editor Plugin Extension >() ĊĠĠĠĠĠĠĠ Ġval Ġandroid Extension Ġ= Ġproject . the < Library Extension >() ĊĠĠĠĠĠĠĠ Ġval Ġandroid Components Extension Ġ= Ġproject . the < Library Android Components Extension >() ĊĠĠĠĠĠĠĠ Ġ( android Extension Ġas ĠExtension Aware ). extensions . add ( PO EDITOR _ CONFIG _ NAME , Ġconfigs Extension Container ) ĊĊĠĠĠĠĠĠĠ Ġval Ġconfig Po Editor Task Providers Map : ĠMutable Map < Config Name , ĠTask Provider <* >> Ġ= Ġmutable Map Of () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġtasks Ġfor Ġevery Ġflavor Ġor Ġbuild Ġtype ĊĠĠĠĠĠĠĠ Ġandroid Components Extension . before Variants Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġmain Ġextension Ġsince Ġwe Ġhave Ġthe Ġmain Ġextension Ġevaluated Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Main Po Editor Task ( project , Ġmain Extension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfigs Ġ= Ġget Configs ( it . product Fl avors . map Ġ{ Ġit . second Ġ}, Ġit . build Type ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Po Editor Tasks ( configs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs Extension Container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Extension , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġall Possible Config Names : ĠSet < String > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Extension . library Variants . flatMap To ( mutable Set Of ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( it . build Type . name ) Ġ+ Ġit . product Fl avors . map Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify And Link Tasks ( configs Extension Container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Possible Config Names , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Main Po Editor Task ( project : ĠProject , Ġmain Po Editor Extension : ĠPo Editor Plugin Extension ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Po Editor Task Name Ġ= Ġget Po Editor Task Name () ĊĠĠĠĠĠĠĠ Ġval Ġmain Po Editor Task Description Ġ= Ġget Main Po Editor Description () ĊĊĠĠĠĠĠĠĠ Ġproject . tasks . find ByName ( main Po Editor Task Name ) Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġmain ĠPo Editor Ġtask Ġand Ġadd Ġit Ġto Ġthe Ġproject Ġif Ġenabled . ĠElse , Ġjust Ġcreate Ġan Ġempty Ġtask . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! main Po Editor Extension . enabled . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠPo Editor Ġextension Ġis Ġdisabled Ġfor Ġconfiguration Ġ' main '") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . register New Task ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Po Editor Task Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Po Editor Task Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP LU GIN _ GROUP ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠPo Editor Ġextension Ġis Ġenabled Ġfor Ġconfiguration Ġ' main '") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject . register New Task < Import Po Editor Strings Task >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Po Editor Task Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Po Editor Task Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP LU GIN _ GROUP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( main Po Editor Extension )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Configs ( product Fl avors : ĠList < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Type : ĠString ?): ĠSet < String > Ġ= Ġ( product Fl avors Ġ+ Ġbuild Type ). filter NotNull (). toSet () ĊĊĠĠĠ Ġ@ Suppress (" Nested Block Depth ") ĊĠĠĠ Ġprivate Ġfun Ġgenerate Po Editor Tasks ( configs : ĠSet < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠProject , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfigs Extension Container : ĠNamed Domain Object Container < Po Editor Plugin Extension >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Extension : ĠPo Editor Plugin Extension , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map : ĠMutable Map < Config Name , ĠTask Provider <* >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigs . forEach Ġ{ Ġconfig Name Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Task Name Ġ= Ġget Po Editor Task Name ( config Name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġcreate Ġthe Ġtask Ġif Ġno Ġother Ġtask Ġis Ġregistered Ġwith Ġthe Ġsame Ġname Ġ( would Ġmean Ġit 's Ġalready ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreated . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . find ByName ( config Task Name ) Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Config Extension Ġ= Ġconfigs Extension Container . find ByName ( config Name )?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDon 't Ġforget Ġto Ġadd Ġthe Ġdefault Ġresources Ġpath Ġfor Ġthe Ġconfiguration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Res Dir Ġ= ĠgetResource Directory ( project , Ġconfig Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . default Res Path . convention ( config Res Dir . as File . absolute Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( raw Config Extension Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠExtension Ġfound Ġin ĠGradle Ġscript Ġfor Ġname Ġ'$ config Name ', Ġbuilding Ġtask ...") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmerged Config Extension Ġ= Ġbuild Extension For Config ( project , Ġraw Config Extension , Ġmain Extension ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! merged Config Extension . enabled . get ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠPo Editor Ġextension Ġis Ġdisabled Ġfor Ġconfiguration Ġ'$ config Name '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠPo Editor Ġextension Ġis Ġenabled Ġfor Ġconfiguration Ġ'$ config Name '") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Config Po Editor Task Ġ= Ġproject . register New Task < Import Po Editor Strings Task >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Task Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Po Editor Description For Config ( config Name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP LU GIN _ GROUP , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( merged Config Extension )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map . put ( config Name , Ġnew Config Po Editor Task ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠNo Ġextension Ġfound Ġin ĠGradle Ġscript Ġfor Ġname Ġ'$ config Name '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġverify And Link Tasks ( configs Extension Container : ĠNamed Domain Object Container < Po Editor Plugin Extension >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Possible Config Names : ĠSet < String >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map : ĠMutable Map < Config Name , ĠTask Provider <* >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproject : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( config Name Ġin Ġconfigs Extension Container . names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config Name Ġ! in Ġall Possible Config Names ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn ("$ TAG : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"' $ PO EDITOR _ CONFIG _ NAME ' Ġobject Ġ'$ config Name ' Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" does Ġnot Ġmatch Ġa Ġflavor Ġor Ġbuild Ġtype .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . debug ("$ TAG : ĠConfigur ations Ġto Ġadd : Ġ$ config Po Editor Task Providers Map ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠLink Ġall Ġother Ġtasks Ġto Ġmain Ġtask Ġso Ġthey Ġalso Ġget Ġexecuted Ġwhen Ġexecuting Ġthe Ġmain Ġone ĊĠĠĠĠĠĠĠ Ġconfig Po Editor Task Providers Map . values . forEach Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . tasks . named ( get Po Editor Task Name ()) Ġ{ Ġdepends On ( task ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Po Editor Task Name ( config Name : ĠConfig Name Ġ= Ġ"") Ġ= Ġ" import ${ config Name . capitalize ()} Po Editor Strings " ĊĊĠĠĠ Ġprivate Ġfun ĠgetResource Directory ( project : ĠProject , Ġconfig Name : ĠConfig Name ) Ġ= ĊĠĠĠĠĠĠĠ Ġproject . layout . project Directory . dir (" src /$ config Name / res ") ĊĊĠĠĠ Ġprivate Ġfun Ġget Main Po Editor Description (): ĠString Ġ= Ġ""" ĊĠĠĠĠĠĠĠ ĠImports Ġall ĠPo Editor Ġstrings Ġfor Ġall Ġfl avors Ġand Ġbuild Ġtypes Ġconfigurations . ĊĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠ Ġprivate Ġfun Ġget Po Editor Description For Config ( config Name : ĠConfig Name ): ĠString Ġ= Ġ""" ĊĠĠĠĠĠĠĠ ĠImports Ġall ĠPo Editor Ġstrings Ġfor Ġconfiguration Ġ$ config Name . ĊĠĠĠ Ġ""" . trim Indent () Ċ }