package Ġcom . release sh ub . gradle . plugin . common Ċ Ċ import Ġorg . apache . tools . ant . types . Command line Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . logging . LogLevel Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ Ċ class ĠCommand Executor Impl ( private Ġval Ġproject : ĠProject , Ġprivate Ġval Ġlog Level : ĠLogLevel ) Ġ: ĠCommand Executor Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġexecute ( command : ĠString , Ġworking Directory : ĠFile ?, Ġlog Standard Output : ĠBoolean , Ġlog Error Output : ĠBoolean , Ġignore Exit Value : ĠBoolean ): ĠExtended Exec Result Ġ{ ĊĠĠĠĠĠĠĠ Ġlog (" Executing Ġcommand : Ġ$ command ") ĊĊĠĠĠĠĠĠĠ Ġval Ġstandard OutputStream Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġval Ġerror OutputStream Ġ= ĠByteArrayOutputStream () ĊĊĠĠĠĠĠĠĠ Ġval Ġexec Result Ġ= Ġproject . exec Ġ{ Ġexec Spec Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( working Directory Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Spec . working Dir Ġ= Ġworking Directory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexec Spec . set CommandLine (* Command line . translate Command line ( command ) Ġas ĠArray < Any >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexec Spec . is Ignore Exit Value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Standard Output ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Spec . standard Output Ġ= Ġstandard OutputStream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( log Error Output ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexec Spec . error Output Ġ= Ġerror OutputStream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( standard OutputStream . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog ( standard OutputStream . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( error OutputStream . size () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . logger . error ( error OutputStream . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! ignore Exit Value Ġ&& Ġexec Result . exit Value Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Failed Ġexecution Ġof Ġcommand : Ġ$ command ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠExtended Exec Result ( exec Result , Ġstandard OutputStream , Ġerror OutputStream ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlog ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . logger . log ( logLevel , Ġmessage ) ĊĠĠĠ Ġ} Ċ } Ċ