/* Ċ MIT ĠLicense Ċ Ċ Copyright Ġ( c ) Ġ 2 0 1 8 - 2 0 2 2 Ġc 6 4 lib : ĠThe ĠU lt imate ĠCom mod ore Ġ 6 4 ĠLibrary Ċ Ċ Permission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ of Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ in Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ to Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ copies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ furnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ċ The Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ copies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ċ THE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ IMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ FITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ AUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ LIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ OUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ SOFTWARE . Ċ */ Ċ package Ġcom . github . c 6 4 lib . gradle . preprocess . go attr acker Ċ Ċ import Ġjava . io . File Ċ import Ġorg . gradle . api . Project Ċ Ċ class ĠG t 2 Re loc ( private Ġval Ġproject : ĠProject ) Ġ{ ĊĊĠ Ġfun Ġrun ( input Ext : ĠGo attr acker Pipeline Extension , Ġmusic Ext : ĠGo attr acker Music Extension ) Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= Ġproject . exec Ġ{ Ġit . command Line Ġ= Ġbuild CommandLine ( input Ext , Ġmusic Ext ) Ġ} ĊĠĠĠ Ġresult . assert Normal Exit Value () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġbuild CommandLine ( ĊĠĠĠĠĠ Ġinput Ext : ĠGo attr acker Pipeline Extension , ĊĠĠĠĠĠ Ġmusic Ext : ĠGo attr acker Music Extension ĊĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠ Ġval Ġcli Ġ= Ġmutable ListOf ( music Ext . executable ) ĊĠĠĠ Ġcli Ġ+= Ġinput Ext . getInput (). get (). absolute Path ĊĠĠĠ Ġcli Ġ+= ĊĠĠĠĠĠĠĠ Ġnormalize ( music Ext . getOutput (). get (), Ġinput Ext . get Use Build Dir (). getOrElse ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. absolute Path ĊĠĠĠ Ġmusic Ext . buffered Sid Writes ?. let Ġ{ Ġcli Ġ+= Ġto Boolean Flag (" B ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . zero Page Location ?. let Ġ{ Ġcli Ġ+= Ġto Hex Flag (" Z ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . zer op age Ghost Registers ?. let Ġ{ Ġcli Ġ+= Ġto Boolean Flag (" C ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . s fx Support ?. let Ġ{ Ġcli Ġ+= Ġto Boolean Flag (" D ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . volume Change Support ?. let Ġ{ Ġcli Ġ+= Ġto Boolean Flag (" E ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . store Author Info ?. let Ġ{ Ġcli Ġ+= Ġto Boolean Flag (" H ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . disable Optimization ?. let Ġ{ Ġcli Ġ+= Ġto Boolean Flag (" I ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . player Memory Location ?. let Ġ{ Ġcli Ġ+= Ġto Hex Flag (" W ", Ġit ) Ġ} ĊĠĠĠ Ġmusic Ext . sid Memory Location ?. let Ġ{ Ġcli Ġ+= Ġto Hex Flag (" L ", Ġit ) Ġ} ĊĠĠĠ Ġreturn Ġcli . toList () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġto Boolean Value ( flag Value : ĠBoolean ) Ġ= ĊĠĠĠĠĠ Ġwhen Ġ( flag Value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ" 1 " ĊĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ" 0 " ĊĠĠĠĠĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġto Hex Value ( value : ĠInt ) Ġ= Ġvalue . toString ( 1 6 ) ĊĊĠ Ġprivate Ġfun Ġto Boolean Flag ( flag Name : ĠString , Ġflag Value : ĠBoolean ): ĠString Ġ= ĊĠĠĠĠĠ Ġ"- $ flag Name " Ġ+ Ġto Boolean Value ( flag Value ) ĊĊĠ Ġprivate Ġfun Ġto Hex Flag ( flag Name : ĠString , Ġvalue : ĠInt ): ĠString Ġ= Ġ"- $ flag Name " Ġ+ Ġto Hex Value ( value ) ĊĊĠ Ġprivate Ġfun Ġnormalize ( output : ĠFile , Ġoutput To Build Dir : ĠBoolean ): ĠFile Ġ= ĊĠĠĠĠĠ Ġif Ġ( output To Build Dir ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput RelativePath Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject . layout . project Directory . as File . to Path (). rel ativ ize ( output . to Path ()) ĊĠĠĠĠĠĠĠ Ġval Ġresult Path Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. layout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Directory ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dir (" go attr acker ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. as File ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. resolve ( output RelativePath ) ĊĠĠĠĠĠĠĠ Ġresult Path . parent ?. to File ()?. mkdir s () ĊĠĠĠĠĠĠĠ Ġresult Path . to File () ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġoutput ĊĠĠĠĠĠ Ġ} Ċ } Ċ