package Ġcom . star _ zero . gradle . g ith ook Ċ Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . Named Domain Object Container Ċ import Ġorg . gradle . api . Project Ċ import Ġjava . io . File Ċ Ċ open Ġclass ĠG ith ook Extension ( project : ĠProject ) Ġ{ ĊĊĠĠĠ Ġvar Ġgradle Command : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġhooks Dir : ĠFile ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġfail On Missing Hooks Dir : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġval Ġhooks Ġ= Ġproject . container ( G ith ook :: class . java ) Ġ{ Ġname Ġ-> ĊĠĠĠĠĠĠĠ ĠG ith ook ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhooks ( action : ĠAction < Named Domain Object Container < G ith ook >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġaction . execute ( hooks ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠG ith ook ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġvar Ġtask : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġvar Ġshell : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCHECK _ EXIT _ STATUS Ġ= Ġ"[ Ġ\$ ? Ġ- gt Ġ 0 Ġ] Ġ&& Ġexit Ġ 1 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtask Script ( gradle Command : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( task . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ gradle Command Ġ$ task \ n $ CHECK _ EXIT _ STATUS " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshell Script (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( shell . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ shell \ n $ CHECK _ EXIT _ STATUS " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ