/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠG i org io ĠAnt oni oli Ċ Ġ* Ċ Ġ* Ġ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 . fon de sa . recyclerview divider . build tools Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġjava . io . ByteArray OutputStream Ċ Ċ /** Ċ Ġ* ĠSets Ġthe Ġversion Ġof Ġthe Ġproject . Ċ Ġ* ĠThe Ġversion Ġby Ġdefault Ġis Ġthe Ġname Ġof Ġthe Ġlast Ġtag Ġon ĠGit . Ċ Ġ* ĠThe Ġversion Ġcan Ġbe Ġdefined Ġmanually Ġusing Ġthe Ġproperty Ġ" version . name ". Ċ Ġ* ĠE . g . Ċ Ġ* Ġ./ gradle w Ġmy Task Ġ- P version . name = 1 . 0 . 0 Ċ Ġ*/ Ċ class ĠVersion Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ= Ġwith ( project ) Ġ{ ĊĠĠĠĠĠĠĠ Ġversion Ġ= ĠgetProperty OrElse (" version . name ") Ġ{ Ġget Version Name From Tag () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠProject . getVersion Name From Tag (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstd Out Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġ// ĠGets Ġthe Ġlatest Ġtag Ġin Ġthe ĠGit Ġrepo . ĊĠĠĠĠĠĠĠ Ġexec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . command Line Ġ= ĠlistOf (" git ", Ġ" describe ", Ġ"-- tags ", Ġ"-- abbrev = 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . standard Output Ġ= Ġstd Out ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstd Out . toString (). trim () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinline Ġfun ĠProject . getProperty OrElse ( propertyName : ĠString , Ġdefault : Ġ() Ġ-> ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( project . has Property ( propertyName )) Ġproject . property ( propertyName ) Ġas ĠString Ġelse Ġdefault () Ċ } Ċ