package Ġio . datal br y . plugin . semver Ċ Ċ import Ġio . datal br y . plugin . semver . task . Print Version Task Ċ import Ġio . datal br y . plugin . semver . templates . Release Template Ċ import Ġio . datal br y . plugin . semver . task . Version Tag Task Ċ import Ġio . datal br y . plugin . semver . task . Version Update Task Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠThe Ġ[ Sem Ver Plugin ] Ġprovides Ġa Ġconvenient Ġway Ġto Ġderive ĠSemantic ĠVersions Ġby Ċ Ġ* Ġthe Ġgit Ġhistory . Ċ Ġ* Ċ Ġ* Ġ@ see Ġio . datal br y . plugin . semver . task . Version Update Task Ġfor Ġinformation Ġabout Ġthe Ġactual Ġversion Ġupdate Ġprocess Ċ Ġ* Ċ Ġ* Ġ@ author Ġt imo Ġgr uen Ġ- Ġ 2 0 2 1 - 1 0 - 1 2 Ċ Ġ*/ Ċ @ Suppress (" unused ") Ċ open Ġclass ĠSem Ver Plugin : ĠPlugin < Project > Ġ{ ĊĠĠĠĠĊĠĠĠ Ġoverride Ġfun Ġapply ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Extension ( project ) ĊĠĠĠĠĠĠĠ Ġsetup Tasks ( project ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġget Extension Class (): ĠK Class < out ĠSem Ver Extension > Ġ= ĠSem Ver Extension :: class ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Extension ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . extensions . create ( EXTENSION _ NAME , Ġget Extension Class (). java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Tasks ( project : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( TAG _ TASK _ NAME , ĠVersion Tag Task :: class . java ) ĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( PRINT _ VERSION _ TASK _ NAME , ĠPrint Version Task :: class . java ) ĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( update Task Name ( FINAL _ RELEASE ), ĠVersion Update Task :: class . java , Ġfalse , Ġ"") ĊĠĠĠĠĠĠĠ Ġproject . after Evaluate Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . extensions . getBy Type ( getExtension Class (). java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pre Release Templates ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġit . register Pre Release Task ( project ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRelease Template . register Pre Release Task ( project : ĠProject , Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Name Ġ= Ġupdate Task Name ( name ) ĊĠĠĠĠĠĠĠ Ġproject . tasks . register ( task Name , ĠVersion Update Task :: class . java , Ġtrue , Ġtemplate ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Task Name ( release Name : ĠString ) Ġ= Ġ" update ${ release Name . capitalize ()} Version " ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFIN AL _ RELEASE Ġ= Ġ" release " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG _ TASK _ NAME Ġ= Ġ" tag " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPRINT _ VERSION _ TASK _ NAME Ġ= Ġ" print Version " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTASK _ GROUP _ NAME Ġ= Ġ" semver " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEXT ENSION _ NAME Ġ= Ġ" semver " ĊĠĠĠ Ġ} Ċ } Ċ