/* Ċ Ġ* ĠSPDX - File Copyright Text : Ġ 2 0 2 2 ĠA rs en iy ĠGra ur Ġ< me @ arg ra ur . dev > Ċ Ġ* ĠSPDX - License - Identifier : ĠMIT Ċ Ġ*/ Ċ Ċ package Ġdev . arg ra ur . ao sp . builder . android . config Ċ Ċ import Ġdev . arg ra ur . ao sp . builder . android . enums . Build Type Ċ import Ġdev . arg ra ur . ao sp . builder . utils . Logger Ċ import Ġkotlinx . cli . Arg Parser Ċ import Ġkotlinx . cli . Arg Type Ċ import Ġkotlinx . cli . default Ċ Ċ class ĠDevice Build Config ( args : ĠString ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠDevice Build Config :: class . simple Name !! ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĠLogger . getInstance () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠDevice Build Config ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance (): ĠDevice Build Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( INSTANCE Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . E ( TAG , Ġ" getInstance () Ġcalled Ġbefore Ġinstance Ġwas Ġcreated !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" getInstance () Ġcalled Ġbefore Ġinstance Ġwas Ġcreated !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġset Instance ( config : ĠDevice Build Config ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . D ( TAG , Ġ" Setting Ġcurrent Ġbuild Ġconfig .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ= Ġconfig ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġfrom JSON ( json : ĠString ): ĠDevice Build Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġparser Ġ= ĠArg Parser ("/ config ") ĊĠĠĠ Ġval Ġsource Root Ġby Ġparser . option ( Arg Type . String ). default ("") ĊĠĠĠ Ġval Ġkernel Name Ġby Ġparser . option ( Arg Type . String ). default ("") ĊĠĠĠ Ġval Ġbuild Type Ġby Ġparser . option ( Arg Type . Choice < Build Type >(), Ġshort Name Ġ= Ġ" b "). default ( Build Type . EN G ) ĊĠĠĠ Ġval Ġthreads Ġby Ġparser . option ( Arg Type . Int , Ġshort Name Ġ= Ġ" j "). default ( 1 ) ĊĠĠĠ Ġval Ġupload Ġby Ġparser . option ( Arg Type . Boolean , Ġshort Name Ġ= Ġ" u "). default ( false ) ĊĠĠĠ Ġval Ġupload Path Ġby Ġparser . option ( Arg Type . String ). default ("") ĊĠĠĠ Ġval Ġproduct Ġby Ġparser . option ( Arg Type . String , Ġshort Name Ġ= Ġ" p "). default (" ao sp _ arm 6 4 ") ĊĠĠĠ Ġval Ġc cache Ġby Ġparser . option ( Arg Type . Boolean ). default ( false ) ĊĠĠĠ Ġval Ġc cache Exec Ġby Ġparser . option ( Arg Type . String ). default ("/ usr / bin / cc ache ") ĊĠĠĠ Ġval Ġc cache Path Ġby Ġparser . option ( Arg Type . String ). default (" ~/. cc ache ") ĊĠĠĠ Ġval Ġbuild Target Ġby Ġparser . option ( Arg Type . String , Ġshort Name =" t "). default ("") ĊĠĠĠ Ġval Ġkernel Config Ġby Ġparser . option ( Arg Type . String ). default ("") ĊĠĠĠ Ġval Ġkernel Dist Dir Ġby Ġparser . option ( Arg Type . String ). default ("") ĊĊĠĠĠ Ġfun ĠtoJSON (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . D ( TAG , Ġ" Parsing Ġdevice Ġbuild Ġconfig ...") ĊĠĠĠĠĠĠĠ Ġparser . parse ( args . split (" Ġ"). to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġlogger . D ( TAG , Ġ" Parsed Ġdevice Ġbuild Ġconfig :") ĊĠĠĠĠĠĠĠ Ġlogger . D ( TAG , ĠtoString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġsb . append (" = Ġ ĠCurrent Ġbuild Ġconfig Ġ Ġ= \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Source Ġroot Ġ-> Ġ$ source Root \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Kernel Ġname Ġ-> Ġ$ kernel Name \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Kernel Ġdef config Ġ-> Ġ$ kernel Config \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Kernel Ġdist Ġdir Ġ-> Ġ$ kernel Dist Dir \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Product Ġ-> Ġ$ product \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Target Ġ-> Ġ$ build Target \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Build Ġtype Ġ-> Ġ$ build Type \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Threads Ġ-> Ġ$ threads \ n ") ĊĠĠĠĠĠĠĠ Ġsb . append (" Should Ġupload Ġ-> Ġ$ upload \ n ") ĊĠĠĠĠĠĠĠ Ġif Ġ( upload ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" Filename Ġregex Ġfor Ġupload Ġ-> Ġ$ upload Path \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsb . append (" Should Ġuse Ġc cache Ġ-> Ġ$ cc ache \ n ") ĊĠĠĠĠĠĠĠ Ġif Ġ( cc ache ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" cc ache Ġexec Ġpath Ġ-> Ġ$ cc ache Exec \ n ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" cc ache Ġpath Ġ-> Ġ$ cc ache Path \ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . remove Suffix ("\ n "). toString () ĊĠĠĠ Ġ} Ċ }