package Ġde . m alt se v . gradle . semantic release . vcs . github Ċ Ċ import Ġarrow . core . Option Ċ import Ġarrow . core . to Option Ċ import Ġde . m alt se v . gradle . semantic release . vcs . VC SS ource Ċ import Ġde . m alt se v . gradle . semantic release . vcs . V cs Commit Ċ import Ġde . m alt se v . gradle . semantic release . vcs . V cs Commit Id Ċ import Ġde . m alt se v . gradle . semantic release . vcs . V cs Release Ċ Ċ class ĠGithub ( private Ġval Ġclient : ĠGithub Client , Ġprivate Ġval Ġcurrent Branch : ĠString ) Ġ: ĠV CSS ource Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġlatest Release (): ĠOption < V cs Release > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Tag Response Ġ= Ġclient . last Tag () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlast Tag Response ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Option () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . data . to Option () Ġ}. flatMap Ġ{ Ġit . repository . to Option () Ġ}. map Ġ{ Ġit . refs Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . edges Ġ}. flatMap Ġ{ Ġit . first OrNull (). to Option () Ġ}. map Ġ{ Ġit . node Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV cs Release ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommit Id Ġ= ĠV cs Commit Id ( node . target . oid , Ġnode . target . abbre vi ated Oid ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġnode . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlast Commit (): ĠV cs Commit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Commit Response Ġ= Ġclient . last Commit () ĊĠĠĠĠĠĠĠ Ġcheck ( last Commit Response . commits . isNotEmpty ()) Ġ{ Ġ" No Ġcommits Ġfound Ġon Ġ$ current Branch , Ġcannot Ġget Ġlast Ġcommit " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlast Commit Response . commits . first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcommits Before ( commit Id : ĠV cs Commit Id ): ĠList < V cs Commit > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Commits Page Ġ= Ġclient . commits () ĊĊĠĠĠĠĠĠĠ Ġval Ġcommits Ġ= Ġfirst Commits Page . commits . to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( commits . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġprev Response Page : ĠCommit Response Ġ= Ġfirst Commits Page ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( commits . indexOf First Ġ{ Ġit . id Ġ== Ġcommit Id Ġ} Ġ== Ġ- 1 Ġ&& Ġprev Response Page . hasMore Commits ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprev Response Page Ġ= Ġclient . commits ( prev Response Page . end Cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommits . addAll ( prev Response Page . commits ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠindexOf Release Ġ= Ġcommits . indexOf First Ġ{ Ġit . id Ġ== Ġcommit Id Ġ} ĊĠĠĠĠĠĠĠ Ġcheck ( indexOf Release Ġ!= Ġ- 1 ) Ġ{ Ġ" From Ġall Ġ${ commits . count ()} Ġcommits Ġcommit Ġwith Ġoid Ġ$ commit Id Ġcould Ġnot Ġbe Ġfound ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcommits . take ( indexOf Release ) ĊĠĠĠ Ġ} Ċ } Ċ