package Ġcom . in no be ad . gradle . task Ċ Ċ import Ġcom . in no be ad . gradle . Gradle Support Ċ import Ġcom . in no be ad . gradle . plugin . Python Plugin Ċ import Ġcom . in no be ad . gradle . plugin . python Plugin Extension Ċ import Ġorg . gradle . api . Gradle Exception Ċ import Ġorg . gradle . api . tasks . Input Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġorg . gradle . internal . io . Null OutputStream ĊĊ Ċ @ Gradle Support Ċ class ĠPython Runtime Task Ġ: ĠAbstract Task () Ġ{ ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġval Ġpip Options Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġproject . extensions . python Plugin Extension . pip Options ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġval Ġdownload Urls Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ Ġ" https :// raw . githubusercontent . com / py pa / get - pip / master / get - pip . py ", ĊĠĠĠĠĠĠĠ Ġ" https :// bootstrap . py pa . io / get - pip . py " ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠPython Plugin . name ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Create ĠPython Ġsandbox Ġ( virtualenv )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcommands Ġ= Ġmutable ListOf < String >() ĊĊĠĠĠĠĠĠĠ Ġvar Ġpip Installed Ġ= Ġis Pip Installed () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! pip Installed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( url Ġin Ġdownload Urls ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . lifecycle (" Installing Ġpip ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommands . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" curl Ġ- OL Ġ$ url ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ python Executable Ġget - pip . py Ġ- I Ġ-- prefix Ġ$ python Dir ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" rm Ġget - pip . py " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . debug ( commands . join ToString ("\ n ")) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġproject . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . working Dir ( project . extensions . python Plugin Extension . tmp Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . executable (" bash ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . environment ( System . getenv ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommands . join ToString ("; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Ignore Exit Value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . exit Value Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpip Installed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! pip Installed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception (" Unable Ġto Ġinstall Ġpip Ġfrom Ġ$ download Urls ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprepare Python Env ( commands ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcommand To Create Virtual Env Ġ= Ġproject . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Ignore Exit Value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . executable (" bash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . args ("- c ", Ġ" which Ġvirtualenv Ġ> Ġ/ dev / null Ġ 2 >& 1 ") ĊĠĠĠĠĠĠĠ Ġ}. exit Value . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" virtualenv Ġ$ virtualenv Dir " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommands . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ python Executable Ġ- m Ġpip Ġinstall Ġvirtualenv Ġ- I Ġ-- prefix Ġ$ python Dir Ġ$ pip Options ". trim () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ python Dir / bin / virtualenv Ġ$ virtualenv Dir " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogger . lifecycle (" Installing Ġvirtualenv ") ĊĠĠĠĠĠĠĠ Ġlogger . debug ( commands . join ToString ("\ n ")) ĊĊĠĠĠĠĠĠĠ Ġproject . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . working Dir ( project . extensions . python Plugin Extension . tmp Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . executable (" bash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . environment ( System . getenv ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommands . join ToString ("; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. re throw Failure () ĊĊĠĠĠĠĠĠĠ Ġlogger . lifecycle (" Creating Ġa Ġvirtual Ġenvironment ") ĊĠĠĠĠĠĠĠ Ġprepare Python Env ( commands ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( commands . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠGradle Exception (" No ĠPython Ġinstalled Ġin Ġ$ python Dir ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcommands . add ( command To Create Virtual Env ) ĊĊĠĠĠĠĠĠĠ Ġproject . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . working Dir ( project . extensions . python Plugin Extension . tmp Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . executable (" bash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . environment ( System . getenv ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommands . join ToString ("; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}. re throw Failure () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Pip Installed (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġproject . exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . working Dir ( project . extensions . python Plugin Extension . tmp Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . executable (" bash ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . environment ( System . getenv ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . standard Output Ġ= ĠNull OutputStream . INSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . error Output Ġ= ĠNull OutputStream . INSTANCE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . args ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- c ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ python Executable Ġ- m Ġpip " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Ignore Exit Value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġresult . exit Value Ġ== Ġ 0 ĊĠĠĠ Ġ} Ċ Ċ } Ċ